60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
// Package sql2go...
|
|
//
|
|
// Description : sql2go...
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 2021-11-17 10:14 上午
|
|
package sql2go
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"git.zhangdeman.cn/zhangdeman/gopkg/util"
|
|
)
|
|
|
|
// GenerateDao 根据sql自动生成dao
|
|
//
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
//
|
|
// Date : 10:15 上午 2021/11/17
|
|
func GenerateDao(sql string, packageName string) (string, error) {
|
|
if len(packageName) == 0 {
|
|
packageName = "dao"
|
|
}
|
|
dataStruct, basic, err := ParseCreateTableSql(sql)
|
|
if nil != err {
|
|
return "", err
|
|
}
|
|
// 读入模板
|
|
tplByte, _ := util.ReadFileContent("dao_tpl.tpl")
|
|
tpl := string(tplByte)
|
|
replaceTable := map[string]string{
|
|
"{PACKAGE}": packageName,
|
|
"{DATA_STRUCT_DAO}": basic.ModelStruct + "Dao",
|
|
"{DATA_STRUCT_NAME}": basic.ModelStruct,
|
|
"{DATA_STRUCT}": dataStruct,
|
|
"{DAO_RECEIVER}": getDaoReceiver(basic.TableName),
|
|
"{DB_TABLE_NAME}": basic.TableName,
|
|
"{PRIMARY_KEY}": "ID",
|
|
"{PRIMARY_KEY_TYPE}": basic.PrimaryFieldType,
|
|
}
|
|
|
|
for oldVal, newVal := range replaceTable {
|
|
tpl = strings.ReplaceAll(tpl, oldVal, newVal)
|
|
}
|
|
return tpl, nil
|
|
}
|
|
|
|
func getDaoReceiver(tableName string) string {
|
|
nameArr := strings.Split(tableName, "_")
|
|
result := ""
|
|
for _, item := range nameArr {
|
|
if len(item) > 0 {
|
|
result += string([]byte(item)[0])
|
|
}
|
|
}
|
|
result += "d"
|
|
return result
|
|
}
|