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  }