| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- package util
- import (
- "bufio"
- "fmt"
- "os"
- "strings"
- "xorm.io/xorm"
- )
- type MTable struct {
- Name string
- GreatHump string
- LittleHump string
- Comment string
- ExistId bool
- MColumns []MColumn
- }
- type MColumn struct {
- Name string
- GreatHump string
- LittleHump string
- Comment string
- SqlTypeName string
- TypeName string
- VueTypeName string
- Length int64
- Length2 int64
- IsKey bool
- }
- func (receiver MTable) String() string {
- return fmt.Sprintf("Name:%s,Comment:%s,MColumns:%s\n\n\n", receiver.Name, receiver.Comment, receiver.MColumns)
- }
- func (receiver MColumn) String() string {
- return fmt.Sprintf("Name:%s,GreatHump:%s,LittleHump:%s,Comment:%s,SqlTypeName:%s,TypeName:%s,Length:%d,Length2:%d\n",
- receiver.Name, receiver.GreatHump, receiver.LittleHump, receiver.Comment, receiver.SqlTypeName, receiver.TypeName, receiver.Length, receiver.Length2)
- }
- var MTables = make([]MTable, 0)
- // InitMTableArray 初始化加载数据库结构并存储
- func InitMTableArray(engine *xorm.Engine) {
- if len(MTables) > 0 {
- return
- }
- metas, err := engine.DBMetas()
- if err != nil {
- fmt.Println(err)
- }
- for _, meta := range metas {
- var mTable MTable
- mTable.Name = meta.Name
- mTable.GreatHump, mTable.LittleHump = formatName(meta.Name)
- mTable.Comment = meta.Comment
- var cols = meta.Columns()
- for i := range cols {
- var mColumn MColumn
- mColumn.Name = cols[i].Name
- mColumn.GreatHump, mColumn.LittleHump = formatName(cols[i].Name)
- mColumn.IsKey = cols[i].IsPrimaryKey
- if cols[i].IsPrimaryKey && cols[i].IsAutoIncrement {
- mTable.ExistId = true
- }
- mColumn.Comment = cols[i].Comment
- mColumn.SqlTypeName = cols[i].SQLType.Name
- mColumn.TypeName = FormatSqlType(mColumn.SqlTypeName)
- mColumn.VueTypeName = formatSqlToVueType(mColumn.SqlTypeName)
- mColumn.Length = cols[i].Length
- mColumn.Length2 = cols[i].Length2
- mTable.MColumns = append(mTable.MColumns, mColumn)
- }
- MTables = append(MTables, mTable)
- }
- }
- // 将名字修改成大驼峰和小驼峰的格式进行返回
- func formatName(name string) (string, string) {
- split := strings.Split(strings.ToLower(name), "_")
- if len(split) == 1 {
- return strings.ToUpper(split[0][0:1]) + split[0][1:], split[0]
- } else {
- AaBb := ""
- aaBb := ""
- for j := range split {
- AaBb += strings.ToUpper(split[j][0:1]) + split[j][1:]
- if j == 0 {
- aaBb += split[j]
- } else {
- aaBb += strings.ToUpper(split[j][0:1]) + split[j][1:]
- }
- }
- return AaBb, aaBb
- }
- }
- func WriteFile(fileUrl, content string) {
- os.Truncate(fileUrl, 0)
- file, _ := os.OpenFile(fileUrl, os.O_CREATE|os.O_RDWR, 0666)
- defer file.Close()
- writer := bufio.NewWriter(file)
- writer.WriteString(content)
- writer.Flush()
- }
|