зеркало из https://github.com/Azure/ARO-RP.git
remove validateCase trigger, cosmosdb doesn't multiple trigger invocations per API action
This commit is contained in:
Родитель
4b3f8f9c34
Коммит
3b63cbc156
|
@ -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})
|
||||
}
|
||||
|
||||
|
|
|
@ -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})
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче