Files
gormt/data/view/model/gencnf/gencnf.go
谢小军 36b6de2a7b support sqlite
支持sqlite
2020-09-22 19:23:36 +08:00

104 lines
2.1 KiB
Go

package gencnf
import (
"fmt"
"os"
"path"
"strings"
"gopkg.in/yaml.v3"
"github.com/xxjwxc/gormt/data/config"
"github.com/xxjwxc/gormt/data/view/model"
"github.com/xxjwxc/public/mylog"
"github.com/xxjwxc/public/tools"
)
// GetCnfModel get model interface. 获取model接口
func GetCnfModel() model.IModel {
//now just support mysql
return &CnfModel
}
// GenOutPut 输出
func GenOutPut(info *model.DBInfo) {
path := path.Join(config.GetOutDir(), info.DbName+".yml")
out, _ := yaml.Marshal(info)
flag := os.O_CREATE | os.O_WRONLY | os.O_TRUNC
f, err := os.OpenFile(path, flag, 0666)
if err != nil {
mylog.Error(err)
return
}
defer f.Close()
f.Write(out)
}
// CnfModel yaml model from IModel
var CnfModel cnfModel
type cnfModel struct {
}
// GenModel get model.DBInfo info.获取数据库相关属性
func (m *cnfModel) GenModel() model.DBInfo {
var dbInfo model.DBInfo
// getPackageInfo(orm, &dbInfo)
// 添加逻辑
dbInfo.PackageName = m.GetPkgName()
dbInfo.DbName = m.GetDbName()
return dbInfo
}
// GetDbName get database name.获取数据库名字
func (m *cnfModel) GetDbName() string {
dir := config.GetDbInfo().Host
dir = strings.Replace(dir, "\\", "/", -1)
if len(dir) > 0 {
if dir[len(dir)-1] == '/' {
dir = dir[:(len(dir) - 1)]
}
}
var dbName string
list := strings.Split(dir, "/")
if len(list) > 0 {
dbName = list[len(list)-1]
}
list = strings.Split(dbName, ".")
if len(list) > 0 {
dbName = list[0]
}
if len(dbName) == 0 || dbName == "." {
panic(fmt.Sprintf("%v : db host config err.must file dir", dbName))
}
return dbName
}
// GetPkgName package names through config outdir configuration.通过config outdir 配置获取包名
func (m *cnfModel) GetPkgName() string {
dir := config.GetOutDir()
dir = strings.Replace(dir, "\\", "/", -1)
if len(dir) > 0 {
if dir[len(dir)-1] == '/' {
dir = dir[:(len(dir) - 1)]
}
}
var pkgName string
list := strings.Split(dir, "/")
if len(list) > 0 {
pkgName = list[len(list)-1]
}
if len(pkgName) == 0 || pkgName == "." {
list = strings.Split(tools.GetModelPath(), "/")
if len(list) > 0 {
pkgName = list[len(list)-1]
}
}
return pkgName
}