Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/unit-benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,5 @@ jobs:
--count=5
--debug
--bench "^BenchmarkCrud|BenchmarkQuery|BenchmarkSearch"
Comment thread
Westwooo marked this conversation as resolved.
--tolerance=1.0
--tolerance=5.0
github_token: ${{ secrets.GITHUB_TOKEN }}
125 changes: 94 additions & 31 deletions cbmgmtx/mgmt.go
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,10 @@ type GetBucketConfigOptions struct {

func (h Management) GetBucketConfig(ctx context.Context, opts *GetBucketConfigOptions) (*cbconfig.FullBucketConfigJson, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when fetching a bucket config")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

resp, err := h.Execute(ctx, "GET",
Expand All @@ -277,7 +280,10 @@ type GetTerseBucketConfigOptions struct {

func (h Management) GetTerseBucketConfig(ctx context.Context, opts *GetTerseBucketConfigOptions) (*cbconfig.TerseConfigJson, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when fetching a terse bucket config")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

resp, err := h.Execute(ctx, "GET",
Expand All @@ -303,7 +309,10 @@ type CheckBucketExistsOptions struct {

func (h Management) CheckBucketExists(ctx context.Context, opts *CheckBucketExistsOptions) (bool, error) {
if opts.BucketName == "" {
return false, errors.New("must specify bucket name when checking a bucket exists")
return false, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

resp, err := h.Execute(ctx, "HEAD",
Expand Down Expand Up @@ -334,7 +343,10 @@ type TerseBucketConfig_Stream interface {

func (h Management) StreamTerseBucketConfig(ctx context.Context, opts *StreamTerseBucketConfigOptions) (TerseBucketConfig_Stream, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when streaming a bucket config")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

resp, err := h.Execute(ctx, "GET",
Expand Down Expand Up @@ -420,7 +432,10 @@ type GetCollectionManifestOptions struct {

func (h Management) GetCollectionManifest(ctx context.Context, opts *GetCollectionManifestOptions) (*cbconfig.CollectionManifestJson, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when fetching a collection manifest")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

resp, err := h.Execute(ctx, "GET",
Expand Down Expand Up @@ -457,10 +472,16 @@ func (h Management) CreateScope(
opts *CreateScopeOptions,
) (*CreateScopeResponse, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when creating a scope")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if opts.ScopeName == "" {
return nil, errors.New("must specify scope name when creating a scope")
return nil, ServerInvalidArgError{
Argument: "ScopeName",
Reason: "scope name cannot be blank",
}
}

posts := url.Values{}
Expand Down Expand Up @@ -505,10 +526,16 @@ func (h Management) DeleteScope(
opts *DeleteScopeOptions,
) (*DeleteScopeResponse, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when deleting a scope")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if opts.ScopeName == "" {
return nil, errors.New("must specify scope name when deleting a scope")
return nil, ServerInvalidArgError{
Argument: "ScopeName",
Reason: "scope name cannot be blank",
}
}

resp, err := h.Execute(
Expand Down Expand Up @@ -553,13 +580,22 @@ func (h Management) CreateCollection(
opts *CreateCollectionOptions,
) (*CreateCollectionResponse, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when creating a collection")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if opts.ScopeName == "" {
return nil, errors.New("must specify scope name when creating a collection")
return nil, ServerInvalidArgError{
Argument: "ScopeName",
Reason: "scope name cannot be blank",
}
}
if opts.CollectionName == "" {
return nil, errors.New("must specify collection name when creating a collection")
return nil, ServerInvalidArgError{
Argument: "CollectionName",
Reason: "collection name cannot be blank",
}
}

posts := url.Values{}
Expand Down Expand Up @@ -613,13 +649,22 @@ func (h Management) DeleteCollection(
opts *DeleteCollectionOptions,
) (*DeleteCollectionResponse, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when deleting a collection")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if opts.ScopeName == "" {
return nil, errors.New("must specify scope name when deleting a collection")
return nil, ServerInvalidArgError{
Argument: "ScopeName",
Reason: "scope name cannot be blank",
}
}
if opts.CollectionName == "" {
return nil, errors.New("must specify collection name when deleting a collection")
return nil, ServerInvalidArgError{
Argument: "CollectionName",
Reason: "collection name cannot be blank",
}
}

resp, err := h.Execute(
Expand Down Expand Up @@ -664,13 +709,22 @@ func (h Management) UpdateCollection(
opts *UpdateCollectionOptions,
) (*UpdateCollectionResponse, error) {
if opts.BucketName == "" {
return nil, errors.New("must specify bucket name when updating a collection")
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if opts.ScopeName == "" {
return nil, errors.New("must specify scope name when updating a collection")
return nil, ServerInvalidArgError{
Argument: "ScopeName",
Reason: "scope name cannot be blank",
}
}
if opts.CollectionName == "" {
return nil, errors.New("must specify collection name when updating a collection")
return nil, ServerInvalidArgError{
Argument: "CollectionName",
Reason: "collection name cannot be blank",
}
}

posts := url.Values{}
Expand Down Expand Up @@ -799,7 +853,10 @@ func (h Management) encodeBucketSettings(posts *url.Values, opts *BucketSettings
}
if opts.ReplicaIndex {
if opts.BucketType == BucketTypeEphemeral {
return errors.New("cannot specify ReplicaIndex for Ephemeral buckets")
return ServerInvalidArgError{
Argument: "ReplicaIndex",
Reason: "cannot specify ReplicaIndex for Ephemeral buckets",
}
}
posts.Add("replicaIndex", "1")
} else if opts.BucketType != BucketTypeEphemeral {
Expand Down Expand Up @@ -902,10 +959,10 @@ func (h Management) GetBucket(
opts *GetBucketOptions,
) (*BucketDef, error) {
if opts.BucketName == "" {
return nil, fmt.Errorf("%w: %w", ErrServerInvalidArg, ServerInvalidArgError{
return nil, ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
})
}
Comment thread
Westwooo marked this conversation as resolved.
}

resp, err := h.Execute(
Expand Down Expand Up @@ -945,10 +1002,10 @@ func (h Management) CreateBucket(
opts *CreateBucketOptions,
) error {
if opts.BucketName == "" {
return fmt.Errorf("%w: %w", ErrServerInvalidArg, ServerInvalidArgError{
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
})
}
}

posts := url.Values{}
Expand Down Expand Up @@ -989,10 +1046,10 @@ func (h Management) UpdateBucket(
opts *UpdateBucketOptions,
) error {
if opts.BucketName == "" {
return fmt.Errorf("%w: %w", ErrServerInvalidArg, ServerInvalidArgError{
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
})
}
}

posts := url.Values{}
Expand Down Expand Up @@ -1029,10 +1086,10 @@ func (h Management) DeleteBucket(
opts *DeleteBucketOptions,
) error {
if opts.BucketName == "" {
return fmt.Errorf("%w: %w", ErrServerInvalidArg, ServerInvalidArgError{
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
})
}
}

resp, err := h.Execute(
Expand Down Expand Up @@ -1070,10 +1127,10 @@ func (h Management) FlushBucket(
opts *FlushBucketOptions,
) error {
if opts.BucketName == "" {
return fmt.Errorf("%w: %w", ErrServerInvalidArg, ServerInvalidArgError{
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
})
}
}

resp, err := h.Execute(
Expand Down Expand Up @@ -1297,7 +1354,10 @@ func (h Management) UpsertUser(
opts *UpsertUserOptions,
) error {
if opts.Username == "" {
return errors.New("must specify username when upserting a user")
return ServerInvalidArgError{
Argument: "Username",
Reason: "username cannot be blank",
}
}

if opts.Domain == "" {
Expand Down Expand Up @@ -1347,7 +1407,10 @@ func (h Management) DeleteUser(
opts *DeleteUserOptions,
) error {
if opts.Username == "" {
return errors.New("must specify username when deleting a user")
return ServerInvalidArgError{
Argument: "Username",
Reason: "username cannot be blank",
}
}

if opts.Domain == "" {
Expand Down
35 changes: 28 additions & 7 deletions cbqueryx/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,10 @@ type CreatePrimaryIndexOptions struct {

func (h Query) CreatePrimaryIndex(ctx context.Context, opts *CreatePrimaryIndexOptions) error {
if opts.BucketName == "" {
return errors.New("must specify bucket name when creating an index")
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

qs := "CREATE PRIMARY INDEX"
Expand Down Expand Up @@ -237,13 +240,22 @@ type CreateIndexOptions struct {

func (h Query) CreateIndex(ctx context.Context, opts *CreateIndexOptions) error {
if opts.IndexName == "" {
return errors.New("must specify index name when creating an index")
return ServerInvalidArgError{
Argument: "IndexName",
Reason: "index name cannot be blank",
}
}
if opts.BucketName == "" {
return errors.New("must specify bucket name when creating an index")
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}
if len(opts.Fields) == 0 {
return errors.New("must specify fields when creating an index")
return ServerInvalidArgError{
Argument: "Fields",
Reason: "fields cannot be empty",
}
Comment thread
Westwooo marked this conversation as resolved.
}

qs := "CREATE INDEX"
Expand Down Expand Up @@ -309,7 +321,10 @@ type DropPrimaryIndexOptions struct {

func (h Query) DropPrimaryIndex(ctx context.Context, opts *DropPrimaryIndexOptions) error {
if opts.BucketName == "" {
return errors.New("must specify bucket name when dropping an index")
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

keyspace := buildKeyspace(opts.BucketName, opts.ScopeName, opts.CollectionName)
Expand Down Expand Up @@ -363,10 +378,16 @@ type DropIndexOptions struct {

func (h Query) DropIndex(ctx context.Context, opts *DropIndexOptions) error {
if opts.IndexName == "" {
return errors.New("must specify index name when dropping an index")
return ServerInvalidArgError{
Argument: "IndexName",
Reason: "index name cannot be blank",
}
}
if opts.BucketName == "" {
return errors.New("must specify bucket name when dropping an index")
return ServerInvalidArgError{
Argument: "BucketName",
Reason: "bucket name cannot be blank",
}
}

encodedName := EncodeIdentifier(opts.IndexName)
Expand Down
Loading
Loading