Add placeholder field tags feature
This commit is contained in:
parent
82cb4ebfe2
commit
69ebf1f4b9
@ -341,6 +341,15 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
|
||||
}
|
||||
}
|
||||
|
||||
// placeholder; readonly without migration
|
||||
|
||||
if _, ok := field.TagSettings["<->"]; ok {
|
||||
field.Readable = true
|
||||
field.Creatable = false
|
||||
field.Updatable = false
|
||||
field.IgnoreMigration = true
|
||||
}
|
||||
|
||||
if _, ok := field.TagSettings["EMBEDDED"]; ok || (fieldStruct.Anonymous && !isValuer && (field.Creatable || field.Updatable || field.Readable)) {
|
||||
if reflect.Indirect(fieldValue).Kind() == reflect.Struct {
|
||||
var err error
|
||||
|
@ -235,6 +235,7 @@ type UserWithPermissionControl struct {
|
||||
Name5 string `gorm:"<-:update"`
|
||||
Name6 string `gorm:"<-:create,update"`
|
||||
Name7 string `gorm:"->:false;<-:create,update"`
|
||||
Ref string `gorm:"<->"`
|
||||
}
|
||||
|
||||
func TestParseFieldWithPermission(t *testing.T) {
|
||||
@ -252,6 +253,7 @@ func TestParseFieldWithPermission(t *testing.T) {
|
||||
{Name: "Name5", DBName: "name5", BindNames: []string{"Name5"}, DataType: schema.String, Tag: `gorm:"<-:update"`, Creatable: false, Updatable: true, Readable: true},
|
||||
{Name: "Name6", DBName: "name6", BindNames: []string{"Name6"}, DataType: schema.String, Tag: `gorm:"<-:create,update"`, Creatable: true, Updatable: true, Readable: true},
|
||||
{Name: "Name7", DBName: "name7", BindNames: []string{"Name7"}, DataType: schema.String, Tag: `gorm:"->:false;<-:create,update"`, Creatable: true, Updatable: true, Readable: false},
|
||||
{Name: "Ref", DBName: "ref", BindNames: []string{"Ref"}, DataType: schema.String, Tag: `gorm:"<->"`, Creatable: false, Updatable: false, Readable: true, IgnoreMigration: true},
|
||||
}
|
||||
|
||||
for _, f := range fields {
|
||||
|
Loading…
x
Reference in New Issue
Block a user