Merge f83842b48e0e3cc2480e987b76135087d3554d58 into 0fd2fd66d539b47e89b60afcf9f1799252da307b
This commit is contained in:
commit
20e4bc304e
@ -8,7 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type CustomizeColumn struct {
|
type CustomizeColumn struct {
|
||||||
ID int64 `gorm:"column:mapped_id; primary_key:yes"`
|
ID int64 `gorm:"column:mapped_id; primary_key:yes; AUTO_INCREMENT"`
|
||||||
Name string `gorm:"column:mapped_name"`
|
Name string `gorm:"column:mapped_name"`
|
||||||
Date time.Time `gorm:"column:mapped_time"`
|
Date time.Time `gorm:"column:mapped_time"`
|
||||||
}
|
}
|
||||||
@ -67,12 +67,12 @@ func TestCustomColumnAndIgnoredFieldClash(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type CustomizePerson struct {
|
type CustomizePerson struct {
|
||||||
IdPerson string `gorm:"column:idPerson;primary_key:true"`
|
IdPerson string `gorm:"column:idPerson;primary_key:true;AUTO_INCREMENT"`
|
||||||
Accounts []CustomizeAccount `gorm:"many2many:PersonAccount;associationforeignkey:idAccount;foreignkey:idPerson"`
|
Accounts []CustomizeAccount `gorm:"many2many:PersonAccount;associationforeignkey:idAccount;foreignkey:idPerson"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomizeAccount struct {
|
type CustomizeAccount struct {
|
||||||
IdAccount string `gorm:"column:idAccount;primary_key:true"`
|
IdAccount string `gorm:"column:idAccount;primary_key:true;AUTO_INCREMENT"`
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,28 +32,28 @@ func (mysql) DataTypeOf(field *StructField) string {
|
|||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
sqlType = "boolean"
|
sqlType = "boolean"
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "int AUTO_INCREMENT"
|
sqlType = "int AUTO_INCREMENT"
|
||||||
} else {
|
} else {
|
||||||
sqlType = "int"
|
sqlType = "int"
|
||||||
}
|
}
|
||||||
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "int unsigned AUTO_INCREMENT"
|
sqlType = "int unsigned AUTO_INCREMENT"
|
||||||
} else {
|
} else {
|
||||||
sqlType = "int unsigned"
|
sqlType = "int unsigned"
|
||||||
}
|
}
|
||||||
case reflect.Int64:
|
case reflect.Int64:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "bigint AUTO_INCREMENT"
|
sqlType = "bigint AUTO_INCREMENT"
|
||||||
} else {
|
} else {
|
||||||
sqlType = "bigint"
|
sqlType = "bigint"
|
||||||
}
|
}
|
||||||
case reflect.Uint64:
|
case reflect.Uint64:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "bigint unsigned AUTO_INCREMENT"
|
sqlType = "bigint unsigned AUTO_INCREMENT"
|
||||||
} else {
|
} else {
|
||||||
|
@ -31,14 +31,14 @@ func (postgres) DataTypeOf(field *StructField) string {
|
|||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
sqlType = "boolean"
|
sqlType = "boolean"
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "serial"
|
sqlType = "serial"
|
||||||
} else {
|
} else {
|
||||||
sqlType = "integer"
|
sqlType = "integer"
|
||||||
}
|
}
|
||||||
case reflect.Int64, reflect.Uint64:
|
case reflect.Int64, reflect.Uint64:
|
||||||
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok || field.IsPrimaryKey {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
||||||
sqlType = "bigserial"
|
sqlType = "bigserial"
|
||||||
} else {
|
} else {
|
||||||
|
@ -29,18 +29,21 @@ func (sqlite3) DataTypeOf(field *StructField) string {
|
|||||||
case reflect.Bool:
|
case reflect.Bool:
|
||||||
sqlType = "bool"
|
sqlType = "bool"
|
||||||
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr:
|
||||||
|
sqlType = "integer"
|
||||||
if field.IsPrimaryKey {
|
if field.IsPrimaryKey {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
sqlType += " primary key"
|
||||||
sqlType = "integer primary key autoincrement"
|
}
|
||||||
} else {
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
sqlType = "integer"
|
sqlType += " autoincrement"
|
||||||
}
|
}
|
||||||
case reflect.Int64, reflect.Uint64:
|
case reflect.Int64, reflect.Uint64:
|
||||||
|
sqlType = "bigint"
|
||||||
if field.IsPrimaryKey {
|
if field.IsPrimaryKey {
|
||||||
field.TagSettings["AUTO_INCREMENT"] = "AUTO_INCREMENT"
|
if _, ok := field.TagSettings["AUTO_INCREMENT"]; ok {
|
||||||
sqlType = "integer primary key autoincrement"
|
sqlType = "integer primary key autoincrement"
|
||||||
} else {
|
} else {
|
||||||
sqlType = "bigint"
|
sqlType += "integer primary key"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case reflect.Float32, reflect.Float64:
|
case reflect.Float32, reflect.Float64:
|
||||||
sqlType = "real"
|
sqlType = "real"
|
||||||
|
@ -68,7 +68,7 @@ func OpenTestConnection() (db *gorm.DB, err error) {
|
|||||||
|
|
||||||
func TestStringPrimaryKey(t *testing.T) {
|
func TestStringPrimaryKey(t *testing.T) {
|
||||||
type UUIDStruct struct {
|
type UUIDStruct struct {
|
||||||
ID string `gorm:"primary_key"`
|
ID string `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
Name string
|
Name string
|
||||||
}
|
}
|
||||||
DB.AutoMigrate(&UUIDStruct{})
|
DB.AutoMigrate(&UUIDStruct{})
|
||||||
|
@ -130,7 +130,7 @@ func (i *Num) Scan(src interface{}) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Animal struct {
|
type Animal struct {
|
||||||
Counter uint64 `gorm:"primary_key:yes"`
|
Counter uint64 `gorm:"primary_key:yes;AUTO_INCREMENT"`
|
||||||
Name string `sql:"DEFAULT:'galeone'"`
|
Name string `sql:"DEFAULT:'galeone'"`
|
||||||
From string //test reserved sql keyword as field name
|
From string //test reserved sql keyword as field name
|
||||||
Age time.Time `sql:"DEFAULT:current_timestamp"`
|
Age time.Time `sql:"DEFAULT:current_timestamp"`
|
||||||
|
2
model.go
2
model.go
@ -7,7 +7,7 @@ import "time"
|
|||||||
// gorm.Model
|
// gorm.Model
|
||||||
// }
|
// }
|
||||||
type Model struct {
|
type Model struct {
|
||||||
ID uint `gorm:"primary_key"`
|
ID uint `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
UpdatedAt time.Time
|
UpdatedAt time.Time
|
||||||
DeletedAt *time.Time `sql:"index"`
|
DeletedAt *time.Time `sql:"index"`
|
||||||
|
@ -8,7 +8,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Blog struct {
|
type Blog struct {
|
||||||
ID uint `gorm:"primary_key"`
|
ID uint `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
Locale string `gorm:"primary_key"`
|
Locale string `gorm:"primary_key"`
|
||||||
Subject string
|
Subject string
|
||||||
Body string
|
Body string
|
||||||
@ -18,7 +18,7 @@ type Blog struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Tag struct {
|
type Tag struct {
|
||||||
ID uint `gorm:"primary_key"`
|
ID uint `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
Locale string `gorm:"primary_key"`
|
Locale string `gorm:"primary_key"`
|
||||||
Value string
|
Value string
|
||||||
Blogs []*Blog `gorm:"many2many:blogs_tags"`
|
Blogs []*Blog `gorm:"many2many:blogs_tags"`
|
||||||
|
@ -734,12 +734,12 @@ func TestManyToManyPreloadWithMultiPrimaryKeys(t *testing.T) {
|
|||||||
|
|
||||||
type (
|
type (
|
||||||
Level1 struct {
|
Level1 struct {
|
||||||
ID uint `gorm:"primary_key;"`
|
ID uint `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
LanguageCode string `gorm:"primary_key"`
|
LanguageCode string `gorm:"primary_key"`
|
||||||
Value string
|
Value string
|
||||||
}
|
}
|
||||||
Level2 struct {
|
Level2 struct {
|
||||||
ID uint `gorm:"primary_key;"`
|
ID uint `gorm:"primary_key;AUTO_INCREMENT"`
|
||||||
LanguageCode string `gorm:"primary_key"`
|
LanguageCode string `gorm:"primary_key"`
|
||||||
Value string
|
Value string
|
||||||
Level1s []Level1 `gorm:"many2many:levels;"`
|
Level1s []Level1 `gorm:"many2many:levels;"`
|
||||||
|
Loading…
x
Reference in New Issue
Block a user