gen_table_column.go 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. // ============================================================================
  2. // This is auto-generated by gf cli tool only once. Fill this file as you wish.
  3. // ============================================================================
  4. package gen_table_column
  5. import (
  6. "github.com/gogf/gf/database/gdb"
  7. "github.com/gogf/gf/errors/gerror"
  8. "github.com/gogf/gf/frame/g"
  9. )
  10. //数据库字符串类型
  11. var COLUMNTYPE_STR = []string{"char", "varchar", "narchar", "varchar2", "tinytext", "text", "mediumtext", "longtext"}
  12. //数据库时间类型
  13. var COLUMNTYPE_TIME = []string{"datetime", "time", "date", "timestamp"}
  14. //数据库数字类型
  15. var COLUMNTYPE_NUMBER = []string{"tinyint", "smallint", "mediumint", "int", "number", "integer", "bigint", "float", "float", "double", "decimal"}
  16. //页面不需要编辑字段
  17. var COLUMNNAME_NOT_EDIT = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time"}
  18. //页面不需要显示的列表字段
  19. var COLUMNNAME_NOT_LIST = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time"}
  20. //页面不需要查询字段
  21. var COLUMNNAME_NOT_QUERY = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time", "remark"}
  22. //根据表名称查询列信息
  23. func SelectDbTableColumnsByName(tableName string) ([]*Entity, error) {
  24. db := g.DB()
  25. var entity []*Entity
  26. sql := " select column_name, (case when (is_nullable = 'no' && column_key != 'PRI') then '1' else null end) as is_required, " +
  27. "(case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment," +
  28. " (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type from information_schema.columns" +
  29. " where table_schema = (select database()) "
  30. sql += " and " + gdb.FormatSqlWithArgs(" table_name=? ", []interface{}{tableName}) + " order by ordinal_position ASC "
  31. result, err := db.GetAll(sql)
  32. if err != nil {
  33. g.Log().Error(err)
  34. return nil, gerror.New("查询列信息失败")
  35. }
  36. result.Structs(&entity)
  37. return entity, nil
  38. }
  39. //判断是否是数据库字符串类型
  40. func IsStringObject(value string) bool {
  41. return IsExistInArray(value, COLUMNTYPE_STR)
  42. }
  43. //判断是否是数据库时间类型
  44. func IsTimeObject(value string) bool {
  45. return IsExistInArray(value, COLUMNTYPE_TIME)
  46. }
  47. //判断是否是数据库数字类型
  48. func IsNumberObject(value string) bool {
  49. return IsExistInArray(value, COLUMNTYPE_NUMBER)
  50. }
  51. //页面不需要编辑字段
  52. func IsNotEdit(value string) bool {
  53. return !IsExistInArray(value, COLUMNNAME_NOT_EDIT)
  54. }
  55. //页面不需要显示的列表字段
  56. func IsNotList(value string) bool {
  57. return !IsExistInArray(value, COLUMNNAME_NOT_LIST)
  58. }
  59. //页面不需要查询字段
  60. func IsNotQuery(value string) bool {
  61. return !IsExistInArray(value, COLUMNNAME_NOT_QUERY)
  62. }
  63. //判断string 是否存在在数组中
  64. func IsExistInArray(value string, array []string) bool {
  65. for _, v := range array {
  66. if v == value {
  67. return true
  68. }
  69. }
  70. return false
  71. }
  72. //查询业务字段列表
  73. func SelectGenTableColumnListByTableId(tableId int64) ([]*Entity, error) {
  74. list, err := Model.Where(Columns.TableId, tableId).Order(Columns.Sort + " asc, " + Columns.ColumnId + " asc").All()
  75. if err != nil {
  76. g.Log().Error(err)
  77. return nil, gerror.New("获取字段信息出错")
  78. }
  79. return list, nil
  80. }