|
|
@ -48,15 +48,28 @@ func arrayToBytes(xs []uint64) []byte { |
|
|
|
return out[:first] |
|
|
|
} |
|
|
|
|
|
|
|
// gets the bucket name out of filepath
|
|
|
|
// gets the collection the bucket points to from filepath
|
|
|
|
func (store *ArangodbStore) extractBucketCollection(ctx context.Context, fullpath util.FullPath) (c driver.Collection, err error) { |
|
|
|
bucket, _ := extractBucket(fullpath) |
|
|
|
if bucket == "" { |
|
|
|
bucket = DEFAULT_COLLECTION |
|
|
|
} |
|
|
|
c, err = store.ensureBucket(ctx, bucket) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
return c, err |
|
|
|
} |
|
|
|
|
|
|
|
// called by extractBucketCollection
|
|
|
|
func extractBucket(fullpath util.FullPath) (string, string) { |
|
|
|
if !strings.HasPrefix(string(fullpath), BUCKET_PREFIX+"/") { |
|
|
|
return "", string(fullpath) |
|
|
|
} |
|
|
|
if strings.Count(string(fullpath), "/") < 2 { |
|
|
|
if strings.Count(string(fullpath), "/") < 3 { |
|
|
|
return "", string(fullpath) |
|
|
|
} |
|
|
|
bucketAndObjectKey := string(fullpath)[len("/buckets/"):] |
|
|
|
bucketAndObjectKey := string(fullpath)[len(BUCKET_PREFIX+"/"):] |
|
|
|
t := strings.Index(bucketAndObjectKey, "/") |
|
|
|
bucket := bucketAndObjectKey |
|
|
|
shortPath := "/" |
|
|
@ -67,19 +80,6 @@ func extractBucket(fullpath util.FullPath) (string, string) { |
|
|
|
return bucket, shortPath |
|
|
|
} |
|
|
|
|
|
|
|
// gets the collection the bucket points to from filepath
|
|
|
|
func (store *ArangodbStore) extractBucketCollection(ctx context.Context, fullpath util.FullPath) (c driver.Collection, err error) { |
|
|
|
bucket, _ := extractBucket(fullpath) |
|
|
|
if bucket == "" { |
|
|
|
bucket = DEFAULT_COLLECTION |
|
|
|
} |
|
|
|
c, err = store.ensureBucket(ctx, bucket) |
|
|
|
if err != nil { |
|
|
|
return nil, err |
|
|
|
} |
|
|
|
return c, err |
|
|
|
} |
|
|
|
|
|
|
|
// get bucket collection from cache. if not exist, creates the buckets collection and grab it
|
|
|
|
func (store *ArangodbStore) ensureBucket(ctx context.Context, bucket string) (bc driver.Collection, err error) { |
|
|
|
var ok bool |
|
|
|