[#3790] added MaxSize json field option
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"github.com/pocketbase/dbx"
|
||||
"github.com/pocketbase/pocketbase/daos"
|
||||
"github.com/pocketbase/pocketbase/models"
|
||||
"github.com/pocketbase/pocketbase/models/schema"
|
||||
)
|
||||
|
||||
// Update all collections with json fields to have a default MaxSize json field option.
|
||||
func init() {
|
||||
AppMigrations.Register(func(db dbx.Builder) error {
|
||||
dao := daos.New(db)
|
||||
|
||||
// note: update even the view collections to prevent
|
||||
// unnecessary change detections during the automigrate
|
||||
collections := []*models.Collection{}
|
||||
if err := dao.CollectionQuery().All(&collections); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, collection := range collections {
|
||||
var needSave bool
|
||||
|
||||
for _, f := range collection.Schema.Fields() {
|
||||
if f.Type != schema.FieldTypeJson {
|
||||
continue
|
||||
}
|
||||
|
||||
options, _ := f.Options.(*schema.JsonOptions)
|
||||
if options != nil {
|
||||
options = &schema.JsonOptions{}
|
||||
}
|
||||
options.MaxSize = 5242880 // 5mb
|
||||
f.Options = options
|
||||
needSave = true
|
||||
}
|
||||
|
||||
if !needSave {
|
||||
continue
|
||||
}
|
||||
|
||||
// save only the collection model without updating its records table
|
||||
if err := dao.Save(collection); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}, nil)
|
||||
}
|
||||
Reference in New Issue
Block a user