refactor migration tag
This commit is contained in:
parent
4a1096bcff
commit
8771f3c27c
@ -189,10 +189,6 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
|
||||
field.Comment = val
|
||||
}
|
||||
|
||||
if _, ok := field.TagSettings["IGNOREMIGRATION"]; ok {
|
||||
field.IgnoreMigration = true
|
||||
}
|
||||
|
||||
// default value is function or null or blank (primary keys)
|
||||
field.DefaultValue = strings.TrimSpace(field.DefaultValue)
|
||||
skipParseDefaultValue := strings.Contains(field.DefaultValue, "(") &&
|
||||
@ -301,11 +297,23 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
|
||||
}
|
||||
|
||||
// setup permission
|
||||
if _, ok := field.TagSettings["-"]; ok {
|
||||
field.Creatable = false
|
||||
field.Updatable = false
|
||||
field.Readable = false
|
||||
field.DataType = ""
|
||||
if val, ok := field.TagSettings["-"]; ok {
|
||||
val = strings.ToLower(strings.TrimSpace(val))
|
||||
switch val {
|
||||
case "-":
|
||||
field.Creatable = false
|
||||
field.Updatable = false
|
||||
field.Readable = false
|
||||
field.DataType = ""
|
||||
case "all":
|
||||
field.Creatable = false
|
||||
field.Updatable = false
|
||||
field.Readable = false
|
||||
field.DataType = ""
|
||||
field.IgnoreMigration = true
|
||||
case "migration":
|
||||
field.IgnoreMigration = true
|
||||
}
|
||||
}
|
||||
|
||||
if v, ok := field.TagSettings["->"]; ok {
|
||||
|
@ -62,10 +62,11 @@ func TestSmartMigrateColumn(t *testing.T) {
|
||||
DB.AutoMigrate(&UserMigrateColumn{})
|
||||
|
||||
type UserMigrateColumn2 struct {
|
||||
ID uint
|
||||
Name string `gorm:"size:128"`
|
||||
Salary float64 `gorm:"precision:2"`
|
||||
Birthday time.Time `gorm:"precision:2"`
|
||||
ID uint
|
||||
Name string `gorm:"size:128"`
|
||||
Salary float64 `gorm:"precision:2"`
|
||||
Birthday time.Time `gorm:"precision:2"`
|
||||
NameIgnoreMigration string `gorm:"size:100"`
|
||||
}
|
||||
|
||||
if err := DB.Table("user_migrate_columns").AutoMigrate(&UserMigrateColumn2{}); err != nil {
|
||||
@ -95,10 +96,11 @@ func TestSmartMigrateColumn(t *testing.T) {
|
||||
}
|
||||
|
||||
type UserMigrateColumn3 struct {
|
||||
ID uint
|
||||
Name string `gorm:"size:256"`
|
||||
Salary float64 `gorm:"precision:3"`
|
||||
Birthday time.Time `gorm:"precision:3"`
|
||||
ID uint
|
||||
Name string `gorm:"size:256"`
|
||||
Salary float64 `gorm:"precision:3"`
|
||||
Birthday time.Time `gorm:"precision:3"`
|
||||
NameIgnoreMigration string `gorm:"size:128;-:migration"`
|
||||
}
|
||||
|
||||
if err := DB.Table("user_migrate_columns").AutoMigrate(&UserMigrateColumn3{}); err != nil {
|
||||
@ -124,6 +126,10 @@ func TestSmartMigrateColumn(t *testing.T) {
|
||||
if precision, _, _ := columnType.DecimalSize(); (fullSupported || precision != 0) && precision != 3 {
|
||||
t.Fatalf("birthday's precision should be 2, but got %v", precision)
|
||||
}
|
||||
case "name_ignore_migration":
|
||||
if length, _ := columnType.Length(); (fullSupported || length != 0) && length != 100 {
|
||||
t.Fatalf("name_ignore_migration's length should still be 100 but got %v", length)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user