修改部分类型转换

This commit is contained in:
tangpanqing
2022-12-07 11:20:08 +08:00
parent 1e9fdaeba8
commit 2174699888
4 changed files with 25 additions and 26 deletions

BIN
README.md

Binary file not shown.

2
go.mod
View File

@@ -2,6 +2,4 @@ module github.com/tangpanqing/aorm
go 1.18 go 1.18
require gopkg.in/guregu/null.v4 v4.0.0
require github.com/go-sql-driver/mysql v1.7.0 require github.com/go-sql-driver/mysql v1.7.0

View File

@@ -163,7 +163,12 @@ func (db *Executor) getColumnsFromDb(dbName string, tableName string) []Column {
dataColumn, _ := db.Query(sqlColumn) dataColumn, _ := db.Query(sqlColumn)
for j := 0; j < len(dataColumn); j++ { for j := 0; j < len(dataColumn); j++ {
dataType := dataColumn[j]["DATA_TYPE"].(string)
maxLength, _ := strconv.Atoi(fmt.Sprintf("%v", dataColumn[j]["CHARACTER_MAXIMUM_LENGTH"])) maxLength, _ := strconv.Atoi(fmt.Sprintf("%v", dataColumn[j]["CHARACTER_MAXIMUM_LENGTH"]))
if dataType == "text" && maxLength == 65535 {
maxLength = 0
}
defaultVal := "" defaultVal := ""
if dataColumn[j]["COLUMN_DEFAULT"] != nil { if dataColumn[j]["COLUMN_DEFAULT"] != nil {
defaultVal = dataColumn[j]["COLUMN_DEFAULT"].(string) defaultVal = dataColumn[j]["COLUMN_DEFAULT"].(string)
@@ -171,7 +176,7 @@ func (db *Executor) getColumnsFromDb(dbName string, tableName string) []Column {
columnsFromDb = append(columnsFromDb, Column{ columnsFromDb = append(columnsFromDb, Column{
ColumnName: dataColumn[j]["COLUMN_NAME"].(string), ColumnName: dataColumn[j]["COLUMN_NAME"].(string),
DataType: dataColumn[j]["DATA_TYPE"].(string), DataType: dataType,
IsNullable: dataColumn[j]["IS_NULLABLE"].(string), IsNullable: dataColumn[j]["IS_NULLABLE"].(string),
MaxLength: maxLength, MaxLength: maxLength,
ColumnType: dataColumn[j]["COLUMN_TYPE"].(string), ColumnType: dataColumn[j]["COLUMN_TYPE"].(string),
@@ -203,13 +208,6 @@ func (db *Executor) getIndexsFromDb(tableName string) []Index {
// 修改表 // 修改表
func (db *Executor) modifyTable(tableFromCode Table, columnsFromCode []Column, indexsFromCode []Index, tableFromDb Table, columnsFromDb []Column, indexsFromDb []Index) { func (db *Executor) modifyTable(tableFromCode Table, columnsFromCode []Column, indexsFromCode []Index, tableFromDb Table, columnsFromDb []Column, indexsFromDb []Index) {
//fmt.Println("正在修改表" + tableFromCode.TableName)
//fmt.Println(columnsFromCode)
//fmt.Println(columnsFromDb)
//fmt.Println(indexsFromCode)
//fmt.Println(indexsFromDb)
if tableFromCode.Engine != tableFromDb.Engine { if tableFromCode.Engine != tableFromDb.Engine {
sql := "ALTER TABLE " + tableFromCode.TableName + " Engine " + tableFromCode.Engine sql := "ALTER TABLE " + tableFromCode.TableName + " Engine " + tableFromCode.Engine
_, err := db.Exec(sql) _, err := db.Exec(sql)
@@ -239,7 +237,7 @@ func (db *Executor) modifyTable(tableFromCode Table, columnsFromCode []Column, i
if columnCode.ColumnName == columnDb.ColumnName { if columnCode.ColumnName == columnDb.ColumnName {
isFind = 1 isFind = 1
if columnCode.ColumnType != columnDb.ColumnType || columnCode.ColumnComment != columnDb.ColumnComment || columnCode.Extra != columnDb.Extra || columnCode.DefaultVal != columnDb.DefaultVal { if columnCode.DataType != columnDb.DataType || columnCode.MaxLength != columnDb.MaxLength || columnCode.ColumnComment != columnDb.ColumnComment || columnCode.Extra != columnDb.Extra || columnCode.DefaultVal != columnDb.DefaultVal {
sql := "ALTER TABLE " + tableFromCode.TableName + " MODIFY " + getColumnStr(columnCode) sql := "ALTER TABLE " + tableFromCode.TableName + " MODIFY " + getColumnStr(columnCode)
_, err := db.Exec(sql) _, err := db.Exec(sql)
if err != nil { if err != nil {
@@ -494,11 +492,16 @@ func getMaxLength(DataType string, fieldMap map[string]string) int {
func getNullAble(fieldMap map[string]string) string { func getNullAble(fieldMap map[string]string) string {
var IsNullable string var IsNullable string
_, ok := fieldMap["not null"] _, primaryOk := fieldMap["primary"]
if ok { if primaryOk {
IsNullable = "NO" IsNullable = "NO"
} else { } else {
IsNullable = "YES" _, ok := fieldMap["not null"]
if ok {
IsNullable = "NO"
} else {
IsNullable = "YES"
}
} }
return IsNullable return IsNullable

View File

@@ -25,7 +25,7 @@ type ArticleVO struct {
} }
type Person struct { type Person struct {
Id aorm.Int `aorm:"primary;auto_increment;type:bigint" json:"id"` Id aorm.Int `aorm:"primary;auto_increment" json:"id"`
Name aorm.String `aorm:"size:100;not null;comment:名字" json:"name"` Name aorm.String `aorm:"size:100;not null;comment:名字" json:"name"`
Sex aorm.Bool `aorm:"index;comment:性别" json:"sex"` Sex aorm.Bool `aorm:"index;comment:性别" json:"sex"`
Age aorm.Int `aorm:"index;comment:年龄" json:"age"` Age aorm.Int `aorm:"index;comment:年龄" json:"age"`
@@ -41,17 +41,15 @@ type PersonAge struct {
} }
func TestAll(t *testing.T) { func TestAll(t *testing.T) {
db := testConnect() db := testConnect()
defer db.Close() defer db.Close()
testMigrate(db) testMigrate(db)
testShowCreateTable(db) testShowCreateTable(db)
id := testInsert(db) id := testInsert(db)
fmt.Println(id)
return
testGetOne(db, id) testGetOne(db, id)
testGetMany(db) testGetMany(db)
testUpdate(db, id) testUpdate(db, id)
@@ -119,8 +117,8 @@ func testMigrate(db *sql.DB) {
func testShowCreateTable(db *sql.DB) { func testShowCreateTable(db *sql.DB) {
fmt.Println("--- testShowCreateTable ---") fmt.Println("--- testShowCreateTable ---")
//showCreate := aorm.Use(db).ShowCreateTable("person") showCreate := aorm.Use(db).ShowCreateTable("person")
//fmt.Println(showCreate) fmt.Println(showCreate)
} }
func testInsert(db *sql.DB) int64 { func testInsert(db *sql.DB) int64 {
@@ -213,7 +211,7 @@ func testWhere(db *sql.DB) {
where1 = append(where1, aorm.WhereItem{Field: "money", Opt: aorm.Eq, Val: 100.15}) where1 = append(where1, aorm.WhereItem{Field: "money", Opt: aorm.Eq, Val: 100.15})
where1 = append(where1, aorm.WhereItem{Field: "name", Opt: aorm.Like, Val: []string{"%", "li", "%"}}) where1 = append(where1, aorm.WhereItem{Field: "name", Opt: aorm.Like, Val: []string{"%", "li", "%"}})
aorm.Use(db).Debug(true).Table("person").Where(where1).GetMany(&listByWhere) aorm.Use(db).Debug(true).Table("person").WhereArr(where1).GetMany(&listByWhere)
for i := 0; i < len(listByWhere); i++ { for i := 0; i < len(listByWhere); i++ {
fmt.Println(listByWhere[i]) fmt.Println(listByWhere[i])
} }
@@ -387,11 +385,11 @@ func testValueFloat32(db *sql.DB, id int64) {
func testValueFloat64(db *sql.DB, id int64) { func testValueFloat64(db *sql.DB, id int64) {
fmt.Println("--- testValueFloat64 ---") fmt.Println("--- testValueFloat64 ---")
money, err := aorm.Use(db).Debug(true).Where(&Person{Id: aorm.IntFrom(id)}).ValueFloat64("test") test, err := aorm.Use(db).Debug(true).Where(&Person{Id: aorm.IntFrom(id)}).ValueFloat64("test")
if err != nil { if err != nil {
panic(err) panic(err)
} }
fmt.Println(money) fmt.Println(test)
} }
func testCount(db *sql.DB) { func testCount(db *sql.DB) {
@@ -470,7 +468,7 @@ func testTransaction(db *sql.DB) {
tx, _ := db.Begin() tx, _ := db.Begin()
id, errInsert := aorm.Use(tx).Insert(&Person{ id, errInsert := aorm.Use(tx).Debug(true).Insert(&Person{
Name: aorm.StringFrom("Alice"), Name: aorm.StringFrom("Alice"),
}) })
@@ -480,7 +478,7 @@ func testTransaction(db *sql.DB) {
return return
} }
countUpdate, errUpdate := aorm.Use(tx).Where(&Person{ countUpdate, errUpdate := aorm.Use(tx).Debug(true).Where(&Person{
Id: aorm.IntFrom(id), Id: aorm.IntFrom(id),
}).Update(&Person{ }).Update(&Person{
Name: aorm.StringFrom("Bob"), Name: aorm.StringFrom("Bob"),
@@ -499,7 +497,7 @@ func testTransaction(db *sql.DB) {
func testTruncate(db *sql.DB) { func testTruncate(db *sql.DB) {
fmt.Println("--- testTruncate ---") fmt.Println("--- testTruncate ---")
count, err := aorm.Use(db).Table("person").Truncate() count, err := aorm.Use(db).Debug(true).Table("person").Truncate()
if err != nil { if err != nil {
panic(err) panic(err)
} }