[#2992] added migration to reset already inserted null values
This commit is contained in:
parent
1330e2e1e7
commit
1563855251
|
@ -0,0 +1,58 @@
|
||||||
|
package migrations
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/pocketbase/dbx"
|
||||||
|
"github.com/pocketbase/pocketbase/daos"
|
||||||
|
"github.com/pocketbase/pocketbase/models"
|
||||||
|
"github.com/pocketbase/pocketbase/models/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Reset all previously inserted NULL values to the fields zero-default.
|
||||||
|
func init() {
|
||||||
|
AppMigrations.Register(func(db dbx.Builder) error {
|
||||||
|
dao := daos.New(db)
|
||||||
|
|
||||||
|
collections := []*models.Collection{}
|
||||||
|
if err := dao.CollectionQuery().All(&collections); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, collection := range collections {
|
||||||
|
if collection.IsView() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, f := range collection.Schema.Fields() {
|
||||||
|
defaultVal := "''"
|
||||||
|
|
||||||
|
switch f.Type {
|
||||||
|
case schema.FieldTypeJson:
|
||||||
|
continue
|
||||||
|
case schema.FieldTypeBool:
|
||||||
|
defaultVal = "FALSE"
|
||||||
|
case schema.FieldTypeNumber:
|
||||||
|
defaultVal = "0"
|
||||||
|
default:
|
||||||
|
if opt, ok := f.Options.(schema.MultiValuer); ok && opt.IsMultiple() {
|
||||||
|
defaultVal = "'[]'"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := db.NewQuery(fmt.Sprintf(
|
||||||
|
"UPDATE {{%s}} SET [[%s]] = %s WHERE [[%s]] IS NULL",
|
||||||
|
collection.Name,
|
||||||
|
f.Name,
|
||||||
|
defaultVal,
|
||||||
|
f.Name,
|
||||||
|
)).Execute()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}, nil)
|
||||||
|
}
|
Loading…
Reference in New Issue