sys_auto_code_mssql.go 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package system
  2. import (
  3. "fmt"
  4. "server/global"
  5. "server/model/system/response"
  6. )
  7. var AutoCodeMssql = new(autoCodeMssql)
  8. type autoCodeMssql struct{}
  9. // GetDB 获取数据库的所有数据库名
  10. // Author [piexlmax](https://github.com/piexlmax)
  11. // Author [SliverHorn](https://github.com/SliverHorn)
  12. func (s *autoCodeMssql) GetDB(businessDB string) (data []response.Db, err error) {
  13. var entities []response.Db
  14. sql := "select name AS 'database' from sysdatabases;"
  15. if businessDB == "" {
  16. err = global.GVA_DB.Raw(sql).Scan(&entities).Error
  17. } else {
  18. err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
  19. }
  20. return entities, err
  21. }
  22. // GetTables 获取数据库的所有表名
  23. // Author [piexlmax](https://github.com/piexlmax)
  24. // Author [SliverHorn](https://github.com/SliverHorn)
  25. func (s *autoCodeMssql) GetTables(businessDB string, dbName string) (data []response.Table, err error) {
  26. var entities []response.Table
  27. sql := fmt.Sprintf(`select name as 'table_name' from %s.DBO.sysobjects where xtype='U'`, dbName)
  28. if businessDB == "" {
  29. err = global.GVA_DB.Raw(sql).Scan(&entities).Error
  30. } else {
  31. err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
  32. }
  33. return entities, err
  34. }
  35. // GetColumn 获取指定数据库和指定数据表的所有字段名,类型值等
  36. // Author [piexlmax](https://github.com/piexlmax)
  37. // Author [SliverHorn](https://github.com/SliverHorn)
  38. func (s *autoCodeMssql) GetColumn(businessDB string, tableName string, dbName string) (data []response.Column, err error) {
  39. var entities []response.Column
  40. sql := fmt.Sprintf(`
  41. SELECT
  42. sc.name AS column_name,
  43. st.name AS data_type,
  44. sc.max_length AS data_type_long,
  45. CASE
  46. WHEN pk.object_id IS NOT NULL THEN 1
  47. ELSE 0
  48. END AS primary_key
  49. FROM
  50. %s.sys.columns sc
  51. JOIN
  52. sys.types st ON sc.user_type_id=st.user_type_id
  53. LEFT JOIN
  54. %s.sys.objects so ON so.name='%s' AND so.type='U'
  55. LEFT JOIN
  56. %s.sys.indexes si ON si.object_id = so.object_id AND si.is_primary_key = 1
  57. LEFT JOIN
  58. %s.sys.index_columns sic ON sic.object_id = si.object_id AND sic.index_id = si.index_id AND sic.column_id = sc.column_id
  59. LEFT JOIN
  60. %s.sys.key_constraints pk ON pk.object_id = si.object_id
  61. WHERE
  62. st.is_user_defined=0 AND sc.object_id = so.object_id
  63. `, dbName, dbName, tableName, dbName, dbName, dbName)
  64. if businessDB == "" {
  65. err = global.GVA_DB.Raw(sql).Scan(&entities).Error
  66. } else {
  67. err = global.GVA_DBList[businessDB].Raw(sql).Scan(&entities).Error
  68. }
  69. return entities, err
  70. }