59 lines
2.0 KiB
Go
59 lines
2.0 KiB
Go
|
package system
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"miniapp/global"
|
||
|
"miniapp/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
|
||
|
}
|