Skip to content

Commit

Permalink
update automigrate templates to check collection indexes
Browse files Browse the repository at this point in the history
  • Loading branch information
ganigeorgiev committed Mar 19, 2023
1 parent 971916c commit 95bb2eb
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 0 deletions.
32 changes: 32 additions & 0 deletions plugins/migratecmd/migratecmd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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({
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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(` + "`" + `{
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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{
Expand Down
29 changes: 29 additions & 0 deletions plugins/migratecmd/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
Binary file modified tests/data/data.db
Binary file not shown.

0 comments on commit 95bb2eb

Please sign in to comment.