update automigrate templates to check collection indexes

This commit is contained in:
Gani Georgiev 2023-03-19 16:02:29 +02:00
parent 971916c20d
commit 95bb2eb871
3 changed files with 61 additions and 0 deletions

View File

@ -31,6 +31,9 @@ migrate((db) => {
"type": "auth",
"system": true,
"schema": [],
"indexes": [
"create index test on new_name (id)"
],
"listRule": "@request.auth.id != '' && created > 0 || 'backtick` + "`" + `test' = 0",
"viewRule": "id = \"1\"",
"createRule": null,
@ -81,6 +84,9 @@ func init() {
"type": "auth",
"system": true,
"schema": [],
"indexes": [
"create index test on new_name (id)"
],
"listRule": "@request.auth.id != '' && created > 0 || ` + "'backtick` + \"`\" + `test' = 0" + `",
"viewRule": "id = \"1\"",
"createRule": null,
@ -143,6 +149,7 @@ func init() {
collection.Updated = collection.Created
collection.ListRule = types.Pointer("@request.auth.id != '' && created > 0 || 'backtick`test' = 0")
collection.ViewRule = types.Pointer(`id = "1"`)
collection.Indexes = types.JsonArray{"create index test on new_name (id)"}
collection.SetOptions(models.CollectionAuthOptions{
ManageRule: types.Pointer("created > 0"),
MinPasswordLength: 20,
@ -201,6 +208,9 @@ migrate((db) => {
"type": "auth",
"system": false,
"schema": [],
"indexes": [
"create index test on test456 (id)"
],
"listRule": "@request.auth.id != '' && created > 0 || 'backtick` + "`" + `test' = 0",
"viewRule": "id = \"1\"",
"createRule": null,
@ -255,6 +265,9 @@ func init() {
"type": "auth",
"system": false,
"schema": [],
"indexes": [
"create index test on test456 (id)"
],
"listRule": "@request.auth.id != '' && created > 0 || ` + "'backtick` + \"`\" + `test' = 0" + `",
"viewRule": "id = \"1\"",
"createRule": null,
@ -305,6 +318,7 @@ func init() {
collection.Updated = collection.Created
collection.ListRule = types.Pointer("@request.auth.id != '' && created > 0 || 'backtick`test' = 0")
collection.ViewRule = types.Pointer(`id = "1"`)
collection.Indexes = types.JsonArray{"create index test on test456 (id)"}
collection.SetOptions(models.CollectionAuthOptions{
ManageRule: types.Pointer("created > 0"),
MinPasswordLength: 20,
@ -367,6 +381,9 @@ migrate((db) => {
collection.listRule = null
collection.deleteRule = "updated > 0 && @request.auth.id != ''"
collection.options = {}
collection.indexes = [
"create index test1 on test456_update (f1_name)"
]
// remove
collection.schema.removeField("f3_id")
@ -419,6 +436,9 @@ migrate((db) => {
"onlyEmailDomains": null,
"requireEmail": false
}
collection.indexes = [
"create index test1 on test456 (f1_name)"
]
// add
collection.schema.addField(new SchemaField({
@ -488,6 +508,10 @@ func init() {
json.Unmarshal([]byte(` + "`" + `{}` + "`" + `), &options)
collection.SetOptions(options)
json.Unmarshal([]byte(` + "`" + `[
"create index test1 on test456_update (f1_name)"
]` + "`" + `), &collection.Indexes)
// remove
collection.Schema.RemoveField("f3_id")
@ -554,6 +578,10 @@ func init() {
}` + "`" + `), &options)
collection.SetOptions(options)
json.Unmarshal([]byte(` + "`" + `[
"create index test1 on test456 (f1_name)"
]` + "`" + `), &collection.Indexes)
// add
del_f3_name := &schema.SchemaField{}
json.Unmarshal([]byte(` + "`" + `{
@ -614,6 +642,7 @@ func init() {
collection.Updated = collection.Created
collection.ListRule = types.Pointer("@request.auth.id != '' && created > 0")
collection.ViewRule = types.Pointer(`id = "1"`)
collection.Indexes = types.JsonArray{"create index test1 on test456 (f1_name)"}
collection.SetOptions(models.CollectionAuthOptions{
ManageRule: types.Pointer("created > 0"),
MinPasswordLength: 20,
@ -652,6 +681,9 @@ func init() {
collection.Type = models.CollectionTypeBase
collection.DeleteRule = types.Pointer(`updated > 0 && @request.auth.id != ''`)
collection.ListRule = nil
collection.Indexes = types.JsonArray{
"create index test1 on test456_update (f1_name)",
}
collection.NormalizeOptions()
collection.Schema.RemoveField("f3_id")
collection.Schema.AddField(&schema.SchemaField{

View File

@ -196,6 +196,20 @@ func (p *plugin) jsDiffTemplate(new *models.Collection, old *models.Collection)
downParts = append(downParts, fmt.Sprintf("%s.options = %s", varName, rawOldOptions))
}
// Indexes
rawNewIndexes, err := marhshalWithoutEscape(new.Indexes, " ", " ")
if err != nil {
return "", err
}
rawOldIndexes, err := marhshalWithoutEscape(old.Indexes, " ", " ")
if err != nil {
return "", err
}
if !bytes.Equal(rawNewIndexes, rawOldIndexes) {
upParts = append(upParts, fmt.Sprintf("%s.indexes = %s", varName, rawNewIndexes))
downParts = append(downParts, fmt.Sprintf("%s.indexes = %s", varName, rawOldIndexes))
}
// ensure new line between regular and collection fields
if len(upParts) > 0 {
upParts[len(upParts)-1] += "\n"
@ -571,6 +585,21 @@ func (p *plugin) goDiffTemplate(new *models.Collection, old *models.Collection)
downParts = append(downParts, fmt.Sprintf("%s.SetOptions(options)\n", varName))
}
// Indexes
rawNewIndexes, err := marhshalWithoutEscape(new.Indexes, "\t\t", "\t")
if err != nil {
return "", err
}
rawOldIndexes, err := marhshalWithoutEscape(old.Indexes, "\t\t", "\t")
if err != nil {
return "", err
}
if !bytes.Equal(rawNewIndexes, rawOldIndexes) {
upParts = append(upParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)\n", escapeBacktick(string(rawNewIndexes)), varName))
// ---
downParts = append(downParts, fmt.Sprintf("json.Unmarshal([]byte(`%s`), &%s.Indexes)\n", escapeBacktick(string(rawOldIndexes)), varName))
}
// Schema
// ---------------------------------------------------------------
// deleted fields

Binary file not shown.