func AutoMigrate(values ...interface{}) { for _, value := range values { db.DB.AutoMigrate(value) if publish.IsPublishableModel(value) { db.Publish.AutoMigrate(value) } } }
func TruncateTables(tables ...interface{}) { for _, table := range tables { if err := db.DB.DropTableIfExists(table).Error; err != nil { panic(err) } if err := db.Publish.DraftDB().DropTableIfExists(table).Error; err != nil { panic(err) } db.DB.AutoMigrate(table) if publish.IsPublishableModel(table) { db.Publish.AutoMigrate(table) } } }
func createPublishEvent(db *gorm.DB, value interface{}) (err error) { // Create Publish Event in Draft Mode if publish.IsDraftMode(db) && publish.IsPublishableModel(value) { scope := db.NewScope(value) var sortingPublishEvent = changedSortingPublishEvent{ Table: scope.TableName(), } for _, field := range scope.PrimaryFields() { sortingPublishEvent.PrimaryKeys = append(sortingPublishEvent.PrimaryKeys, field.DBName) } var result []byte if result, err = json.Marshal(sortingPublishEvent); err == nil { err = db.New().Where("publish_status = ?", publish.DIRTY).Where(map[string]interface{}{ "name": "changed_sorting", "argument": string(result), }).Attrs(map[string]interface{}{ "publish_status": publish.DIRTY, "description": "Changed sort order for " + scope.GetModelStruct().ModelType.Name(), }).FirstOrCreate(&publish.PublishEvent{}).Error } } return }