| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- package sqlload
- import (
- "fmt"
- "go-create-template/configs"
- "go-create-template/util"
- )
- var CTables []CTable
- var CGans []Gen
- // Load 加载数据库参数
- func Load() {
- metas, err := configs.Engine.DBMetas()
- if err != nil {
- panic(err)
- }
- CTables = make([]CTable, len(metas))
- for i := range metas {
- table := CTable{
- Name: metas[i].Name,
- Comment: metas[i].Comment,
- Key: CTableColumn{},
- CTableColumns: make([]CTableColumn, len(metas[i].Columns())),
- }
- for j := range metas[i].Columns() {
- column := CTableColumn{}
- column.Name = metas[i].Columns()[j].Name
- column.IsPrimaryKey = metas[i].Columns()[j].IsPrimaryKey
- column.IsAutoIncrement = metas[i].Columns()[j].IsAutoIncrement
- column.Comment = metas[i].Columns()[j].Comment
- column.SQLType = CSQLType{
- Name: metas[i].Columns()[j].SQLType.Name,
- DefaultLength: metas[i].Columns()[j].SQLType.DefaultLength,
- DefaultLength2: metas[i].Columns()[j].SQLType.DefaultLength2,
- }
- column.Nullable = metas[i].Columns()[j].Nullable
- if column.IsPrimaryKey {
- table.Key = column
- }
- table.CTableColumns[j] = column
- }
- CTables[i] = table
- }
- LoadGenTableAndGenTableColumn()
- LoadGenTableData()
- }
- // LoadGenTableAndGenTableColumn 加载数据库中的表格和列字段生成
- func LoadGenTableAndGenTableColumn() {
- var tables = make([]GenTable, 0)
- err := configs.Engine.Table("gen_table").Find(&tables)
- if err != nil {
- panic(err)
- }
- var genTableColumns []GenTableColumn
- err = configs.Engine.Table("gen_table_column").Find(&genTableColumns)
- if err != nil {
- panic(err)
- }
- gens := make([]Gen, len(tables))
- m := make(map[int64]int)
- for i := range tables {
- gen := Gen{Table: tables[i], TableColumns: make([]GenTableColumn, 0)}
- gens[i] = gen
- m[tables[i].Id] = i
- }
- for i := range genTableColumns {
- gen, ok := m[genTableColumns[i].TableId]
- if ok {
- gens[gen].TableColumns = append(gens[gen].TableColumns, genTableColumns[i])
- }
- }
- CGans = gens
- }
- // LoadGenTableData 去重补漏
- func LoadGenTableData() {
- //查询表格是否重复
- ct := make(map[string]CTable)
- cg := make(map[string]Gen)
- for i := range CTables {
- ct[CTables[i].Name] = CTables[i]
- }
- for i := range CGans {
- cg[CGans[i].Table.TableName] = CGans[i]
- }
- notAddedCG := make(map[string]Gen)
- addedCG := make(map[string]CTable)
- for s := range cg {
- _, ok := ct[s]
- if ok {
- addedCG[s] = ct[s]
- } else {
- fmt.Println(cg[s])
- notAddedCG[s] = cg[s]
- }
- }
- for s := range notAddedCG {
- configs.Engine.Insert(GenTable{
- TableName: notAddedCG[s].Table.TableName,
- TableComment: notAddedCG[s].Table.TableComment,
- Name: util.BigHump(notAddedCG[s].Table.TableName),
- RouterName: util.SmallHump(notAddedCG[s].Table.TableName),
- Remark: notAddedCG[s].Table.TableComment})
- }
- //删除多余表格
- for s := range ct {
- _, ok := cg[s]
- if !ok {
- configs.Engine.Table("gen_table").Where("id = ?", cg[s].Table.Id).Delete(ct[s])
- }
- }
- LoadGenTableAndGenTableColumn()
- for i := range CTables {
- ct[CTables[i].Name] = CTables[i]
- }
- for i := range CGans {
- cg[CGans[i].Table.TableName] = CGans[i]
- }
- for s := range cg {
- for i := 0; i < len(cg[s].TableColumns); i++ {
- //字段添加
- //addColumn := GenTableColumn{
- // TableId: cg[s].Table.Id,
- // ColumnName: cg[s].TableColumns[i].ColumnName,
- // ColumnComment: cg[s].TableColumns[i].,
- // ColumnType: cg[s].TableColumns[i].SQLType.Name,
- // GoField: util.BigHump(cg[s].TableColumns[i].ColumnName),
- // GoType: util.ToGoType(cg[s].TableColumns[i].SQLType.Name),
- //}
- //字段对比
- for j := 0; j < len(ct[s].CTableColumns); j++ {
- if cg[s].TableColumns[i].ColumnName == ct[s].CTableColumns[j].Name {
- continue
- } else {
- }
- }
- }
- }
- }
|