enhancement

This commit is contained in:
astaxie
2016-09-01 23:28:34 +08:00
parent 56aa224a6e
commit c697b98006
4 changed files with 28 additions and 35 deletions

View File

@@ -104,7 +104,7 @@ type fieldInfo struct {
mi *modelInfo
fieldIndex []int
fieldType int
dbcol bool
dbcol bool // table column fk and onetoone
inModel bool
name string
fullName string
@@ -116,13 +116,13 @@ type fieldInfo struct {
null bool
index bool
unique bool
colDefault bool
initial StrTo
colDefault bool // whether has default tag
initial StrTo // store the default value
size int
toText bool
autoNow bool
autoNowAdd bool
rel bool
rel bool // if type equal to RelForeignKey, RelOneToOne, RelManyToMany then true
reverse bool
reverseField string
reverseFieldInfo *fieldInfo
@@ -134,7 +134,7 @@ type fieldInfo struct {
relModelInfo *modelInfo
digits int
decimals int
isFielder bool
isFielder bool // implement Fielder interface
onDelete string
}
@@ -265,6 +265,9 @@ checkType:
}
}
// check the rel and reverse type
// rel should Ptr
// reverse should slice []*struct
switch fieldType {
case RelForeignKey, RelOneToOne, RelReverseOne:
if field.Kind() != reflect.Ptr {
@@ -403,14 +406,12 @@ checkType:
if fi.auto || fi.pk {
if fi.auto {
switch addrField.Elem().Kind() {
case reflect.Int, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint32, reflect.Uint64:
default:
err = fmt.Errorf("auto primary key only support int, int32, int64, uint, uint32, uint64 but found `%s`", addrField.Elem().Kind())
goto end
}
fi.pk = true
}
fi.null = false
@@ -422,8 +423,8 @@ checkType:
fi.index = false
}
// can not set default for these type
if fi.auto || fi.pk || fi.unique || fieldType == TypeTimeField || fieldType == TypeDateField || fieldType == TypeDateTimeField {
// can not set default
initial.Clear()
}