diff --git a/pkg/database/openshiftclusters.go b/pkg/database/openshiftclusters.go index 4f75100c0..738701e59 100644 --- a/pkg/database/openshiftclusters.go +++ b/pkg/database/openshiftclusters.go @@ -46,19 +46,6 @@ func NewOpenShiftClusters(ctx context.Context, uuid uuid.UUID, dbc cosmosdb.Data var date = new Date(); body["leaseExpires"] = Math.floor(date.getTime() / 1000) + 60; request.setBody(body); -}`, - }, - { - ID: "validateCase", - TriggerOperation: cosmosdb.TriggerOperationAll, - TriggerType: cosmosdb.TriggerTypePre, - Body: `function trigger() { - var request = getContext().getRequest(); - var body = request.getBody(); - if(body["openShiftCluster"]["key"] != body["openShiftCluster"]["key"].toLowerCase()) - throw "openShiftCluster.key is not lower case"; - if(body["partitionKey"] != body["partitionKey"].toLowerCase()) - throw "partitionKey is not lower case"; }`, }, } @@ -78,13 +65,17 @@ func NewOpenShiftClusters(ctx context.Context, uuid uuid.UUID, dbc cosmosdb.Data } func (c *openShiftClusters) Create(doc *api.OpenShiftClusterDocument) (*api.OpenShiftClusterDocument, error) { + if string(doc.OpenShiftCluster.Key) != strings.ToLower(string(doc.OpenShiftCluster.Key)) { + return nil, fmt.Errorf("key %q is not lower case", doc.OpenShiftCluster.Key) + } + var err error doc.PartitionKey, err = c.partitionKey(doc.OpenShiftCluster.Key) if err != nil { return nil, err } - doc, err = c.c.Create(doc.PartitionKey, doc, &cosmosdb.Options{PreTriggers: []string{"validateCase"}}) + doc, err = c.c.Create(doc.PartitionKey, doc, nil) if err, ok := err.(*cosmosdb.Error); ok && err.StatusCode == http.StatusConflict { err.StatusCode = http.StatusPreconditionFailed @@ -156,16 +147,18 @@ func (c *openShiftClusters) Update(doc *api.OpenShiftClusterDocument) (*api.Open } func (c *openShiftClusters) update(doc *api.OpenShiftClusterDocument, options *cosmosdb.Options) (*api.OpenShiftClusterDocument, error) { - if options == nil { - options = &cosmosdb.Options{} + if string(doc.OpenShiftCluster.Key) != strings.ToLower(string(doc.OpenShiftCluster.Key)) { + return nil, fmt.Errorf("key %q is not lower case", doc.OpenShiftCluster.Key) } - options.PreTriggers = append(options.PreTriggers, "validateCase") - return c.c.Replace(doc.PartitionKey, doc, options) } func (c *openShiftClusters) Delete(doc *api.OpenShiftClusterDocument) error { + if string(doc.OpenShiftCluster.Key) != strings.ToLower(string(doc.OpenShiftCluster.Key)) { + return fmt.Errorf("key %q is not lower case", doc.OpenShiftCluster.Key) + } + return c.c.Delete(doc.PartitionKey, doc, &cosmosdb.Options{NoETag: true}) } diff --git a/pkg/database/subscriptions.go b/pkg/database/subscriptions.go index 7bd9e6f93..63d9591b5 100644 --- a/pkg/database/subscriptions.go +++ b/pkg/database/subscriptions.go @@ -56,17 +56,6 @@ func NewSubscriptions(ctx context.Context, uuid uuid.UUID, dbc cosmosdb.Database var date = new Date(); body["leaseExpires"] = Math.floor(date.getTime() / 1000) + 600; request.setBody(body); -}`, - }, - { - ID: "validateCase", - TriggerOperation: cosmosdb.TriggerOperationAll, - TriggerType: cosmosdb.TriggerTypePre, - Body: `function trigger() { - var request = getContext().getRequest(); - var body = request.getBody(); - if(body["key"] != body["key"].toLowerCase()) - throw "key is not lower case"; }`, }, } @@ -86,7 +75,11 @@ func NewSubscriptions(ctx context.Context, uuid uuid.UUID, dbc cosmosdb.Database } func (c *subscriptions) Create(doc *api.SubscriptionDocument) (*api.SubscriptionDocument, error) { - doc, err := c.c.Create(string(doc.Key), doc, &cosmosdb.Options{PreTriggers: []string{"validateCase"}}) + if string(doc.Key) != strings.ToLower(string(doc.Key)) { + return nil, fmt.Errorf("key %q is not lower case", doc.Key) + } + + doc, err := c.c.Create(string(doc.Key), doc, nil) if err, ok := err.(*cosmosdb.Error); ok && err.StatusCode == http.StatusConflict { err.StatusCode = http.StatusPreconditionFailed @@ -101,7 +94,7 @@ func (c *subscriptions) Get(key api.Key) (*api.SubscriptionDocument, error) { } docs, err := c.c.QueryAll(string(key), &cosmosdb.Query{ - Query: "SELECT * FROM SubscriptionDocuments doc WHERE doc.subscription.key = @key", + Query: "SELECT * FROM SubscriptionDocuments doc WHERE doc.key = @key", Parameters: []cosmosdb.Parameter{ { Name: "@key", @@ -153,16 +146,18 @@ func (c *subscriptions) Update(doc *api.SubscriptionDocument) (*api.Subscription } func (c *subscriptions) update(doc *api.SubscriptionDocument, options *cosmosdb.Options) (*api.SubscriptionDocument, error) { - if options == nil { - options = &cosmosdb.Options{} + if string(doc.Key) != strings.ToLower(string(doc.Key)) { + return nil, fmt.Errorf("key %q is not lower case", doc.Key) } - options.PreTriggers = append(options.PreTriggers, "validateCase") - return c.c.Replace(string(doc.Key), doc, options) } func (c *subscriptions) Delete(doc *api.SubscriptionDocument) error { + if string(doc.Key) != strings.ToLower(string(doc.Key)) { + return fmt.Errorf("key %q is not lower case", doc.Key) + } + return c.c.Delete(string(doc.Key), doc, &cosmosdb.Options{NoETag: true}) }