fix
wangpengfei
2023-08-24 2128d417cbb9136ad5d8448fef7ce62a082922be
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package system
 
import (
    "fmt"
    "github.com/flipped-aurora/gin-vue-admin/server/global"
    "github.com/flipped-aurora/gin-vue-admin/server/model/system/response"
)
 
var AutoCodeMssql = new(autoCodeMssql)
 
type autoCodeMssql struct{}
 
// GetDB 获取数据库的所有数据库名
// Author [piexlmax](https://github.com/piexlmax)
// Author [SliverHorn](https://github.com/SliverHorn)
func (s *autoCodeMssql) GetDB(businessDB string) (data []response.Db, err error) {
    var entities []response.Db
    sql := "select name AS 'database' from sysdatabases;"
    if businessDB == "" {
        err = global.GVA_DB.Raw(sql).Scan(&entities).Error
    } else {
        err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
    }
    return entities, err
}
 
// GetTables 获取数据库的所有表名
// Author [piexlmax](https://github.com/piexlmax)
// Author [SliverHorn](https://github.com/SliverHorn)
func (s *autoCodeMssql) GetTables(businessDB string, dbName string) (data []response.Table, err error) {
    var entities []response.Table
 
    sql := fmt.Sprintf(`select name as 'table_name' from %s.DBO.sysobjects where xtype='U'`, dbName)
    if businessDB == "" {
        err = global.GVA_DB.Raw(sql).Scan(&entities).Error
    } else {
        err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
    }
 
    return entities, err
}
 
// GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等
// Author [piexlmax](https://github.com/piexlmax)
// Author [SliverHorn](https://github.com/SliverHorn)
func (s *autoCodeMssql) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) {
    var entities []response.Column
    sql := fmt.Sprintf(`select sc.name as column_name,st.name as data_type, sc.length as data_type_long
     from %s.DBO.syscolumns sc,systypes st where sc.xtype=st.xtype and st.usertype=0 and sc.id in (select id from %s.DBO.sysobjects where xtype='U' and name='%s');`, dbName, dbName, tableName)
 
    if businessDB == "" {
        err = global.GVA_DB.Raw(sql).Scan(&entities).Error
    } else {
        err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
    }
 
    return entities, err
}