github.com/keysonZZZ/kmg@v0.0.0-20151121023212-05317bfd7d39/kmgSql/TableManager.go (about) 1 package kmgSql 2 3 import ( 4 "database/sql" 5 "fmt" 6 ) 7 8 var registerTableList = []Table{} 9 10 //向系统中注册表,不允许重复注册 11 // 不支持并发调用 12 func MustRegisterTable(table Table) { 13 for i := range registerTableList { 14 if registerTableList[i].Name == table.Name { 15 panic(fmt.Errorf("[MustRegisterTable] table name %s repeat", table.Name)) 16 } 17 } 18 registerTableList = append(registerTableList, table) 19 } 20 21 // 不支持并发调用 22 func ClearReisterTable() { 23 registerTableList = []Table{} 24 } 25 26 //同步注册进去的表(只会增加字段,保证不掉数据,会使用fmt显示有哪些字段存在问题. 27 // 不支持并发调用 28 func MustSyncRegisterTable() { 29 for i := range registerTableList { 30 MustSyncTable(registerTableList[i]) 31 } 32 } 33 34 //强制同步注册进去的表,可能会掉数据,保证字段达到配置的样子 35 // 不支持并发调用 36 func MustForceSyncRegisterTable() { 37 for i := range registerTableList { 38 MustForceSyncTable(registerTableList[i]) 39 } 40 } 41 42 //创建数据库 43 // 不支持并发调用 44 func MustCreateDb() { 45 conf := GetDefaultDbConfig() 46 db, err := sql.Open("mysql", conf.GetDsnWithoutDbName()) 47 if err != nil { 48 panic(err) 49 } 50 defer db.Close() 51 _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", conf.DbName)) 52 db.Close() 53 if err != nil { 54 panic(err) 55 } 56 } 57 58 //同步默认数据库配置 59 func MustSyncDefaultDbConfig() { 60 MustCreateDb() 61 MustSyncRegisterTable() 62 } 63 64 func MustForceSyncDefaultDbConfig() { 65 MustCreateDb() 66 MustForceSyncRegisterTable() 67 }