Files
gfast/app/model/admin/gen_table_column/gen_table_column.go
T
2020-09-30 17:55:04 +08:00

101 lines
3.3 KiB
Go

// ============================================================================
// This is auto-generated by gf cli tool only once. Fill this file as you wish.
// ============================================================================
package gen_table_column
import (
"github.com/gogf/gf/database/gdb"
"github.com/gogf/gf/errors/gerror"
"github.com/gogf/gf/frame/g"
)
//数据库字符串类型
var COLUMNTYPE_STR = []string{"char", "varchar", "narchar", "varchar2", "tinytext", "text", "mediumtext", "longtext"}
//数据库时间类型
var COLUMNTYPE_TIME = []string{"datetime", "time", "date", "timestamp"}
//数据库数字类型
var COLUMNTYPE_NUMBER = []string{"tinyint", "smallint", "mediumint", "int", "number", "integer", "bigint", "float", "float", "double", "decimal"}
//页面不需要编辑字段
var COLUMNNAME_NOT_EDIT = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time"}
//页面不需要显示的列表字段
var COLUMNNAME_NOT_LIST = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time"}
//页面不需要查询字段
var COLUMNNAME_NOT_QUERY = []string{"id", "create_by", "create_time", "del_flag", "update_by", "update_time", "remark"}
//根据表名称查询列信息
func SelectDbTableColumnsByName(tableName string) ([]*Entity, error) {
db := g.DB()
var entity []*Entity
sql := " select column_name, (case when (is_nullable = 'no' && column_key != 'PRI') then '1' else null end) as is_required, " +
"(case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment," +
" (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type from information_schema.columns" +
" where table_schema = (select database()) "
sql += " and " + gdb.FormatSqlWithArgs(" table_name=? ", []interface{}{tableName}) + " order by ordinal_position ASC "
result, err := db.GetAll(sql)
if err != nil {
g.Log().Error(err)
return nil, gerror.New("查询列信息失败")
}
err = result.Structs(&entity)
if err != nil {
return nil, err
}
return entity, nil
}
//判断是否是数据库字符串类型
func IsStringObject(value string) bool {
return IsExistInArray(value, COLUMNTYPE_STR)
}
//判断是否是数据库时间类型
func IsTimeObject(value string) bool {
return IsExistInArray(value, COLUMNTYPE_TIME)
}
//判断是否是数据库数字类型
func IsNumberObject(value string) bool {
return IsExistInArray(value, COLUMNTYPE_NUMBER)
}
//页面不需要编辑字段
func IsNotEdit(value string) bool {
return !IsExistInArray(value, COLUMNNAME_NOT_EDIT)
}
//页面不需要显示的列表字段
func IsNotList(value string) bool {
return !IsExistInArray(value, COLUMNNAME_NOT_LIST)
}
//页面不需要查询字段
func IsNotQuery(value string) bool {
return !IsExistInArray(value, COLUMNNAME_NOT_QUERY)
}
//判断string 是否存在在数组中
func IsExistInArray(value string, array []string) bool {
for _, v := range array {
if v == value {
return true
}
}
return false
}
//查询业务字段列表
func SelectGenTableColumnListByTableId(tableId int64) ([]*Entity, error) {
list, err := Model.Where(Columns.TableId, tableId).Order(Columns.Sort + " asc, " + Columns.ColumnId + " asc").All()
if err != nil {
g.Log().Error(err)
return nil, gerror.New("获取字段信息出错")
}
return list, nil
}