goweb实战全家桶:gowebfactroy-v2代码工厂重构之一:获取元数据

UML

b539e899c8974da8b652370c5c6f1111.png

SWAGGER

72aed79200ea438ba7a4fc26a506ddee.png

开源代码

 

git clone https://gitee.com/ichub/gowebfactroy-v2.git

获取表清单、表元数据、表与表字段转换GO、代码属性。

代码位置

f95421fc6dce416a88cafb599091871c.png

前置脚本

func (this *TestTableFactroySuite) SetupTest() {

    ichublog.InitLogrus()
    this.inst = FindBeanTableFactroy()
    this.rootdir = fileutils.FindRootDir()
    this.inst.IniDb("mysql")
}

d2119dba94a54af5b105c10c590acc21.png

获取表清单

func (this *TestTableFactroySuite) Test025_FindTables() {
    logrus.Info(27)
    this.inst.TableSchema = "gocenter"
    this.inst.FindTables()
    var names = this.inst.FindTableNames()

    logrus.Info("table nams:=", jsonutils.ToJsonPretty(names))

}

表清单

gitee.com/ichub/gowebfactroynew/core/service/table.(*TestTableFactroySuite).Test025_FindTables() table nams:=[
     
     "shop_company",
     "shop_goods_type",
     "shop_period",
 
        ...
     "sys_user_post",
     "sys_user_role",
     "tenant_info",
     "train",
     "v_col",
     "v_table"

 

获取模型转换数据

func (this *TestTableFactroySuite) Test018_BuildModel() {
    this.inst.TableSchema = "gocenter"
    this.inst.TableName = "employee"

    var models = this.inst.BuildModel()
    logrus.Info("factors=", models)
}

模型转换结果

type ModelFactors struct {
    basedto.BaseEntity
    Columns       *[]meta.MetaColumn
    Models        *list.List
    Protos        *list.List
    ModelEntities *list.List
    ModelParams   *list.List
}

func NewModelFactors() *ModelFactors {
    return &ModelFactors{}
}

696e62f064384edf8d7f95cfd8a57f2e.png

获取单表元数据

func (this *TestTableFactroySuite) Test026_FindMetadata() {

    this.inst.TableSchema = "gocenter"
    this.inst.TableName = "employee"

    var meta = this.inst.FindMetadata()
    logrus.Info(meta)
}

元数据表结果

(*TestTableFactroySuite).Test026_FindMetadata() tables's meta={
     "TableSchema": "gocenter",
     "TableName": "employee",
     "TableComment": "",
     "columns": [
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "id",
               "DataType": "int",
               "ColumnType": "int(11)",
               "ColumnKey": "PRI",
               "CharMaxLen": "",
               "ColumnComment": "员工编号",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "department_id",
               "DataType": "int",
               "ColumnType": "int(11)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "所属部门",
               "ColumnDefault": "0"
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "name",
               "DataType": "varchar",
               "ColumnType": "varchar(16)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "员工姓名",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "gender",
               "DataType": "char",
               "ColumnType": "char(4)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "性别",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "birthday",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "出生日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "id_card",
               "DataType": "char",
               "ColumnType": "char(18)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "身份证号",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "wedlock",
               "DataType": "varchar",
               "ColumnType": "varchar(8)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "婚姻状况",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "nation_id",
               "DataType": "int",
               "ColumnType": "int(8)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "民族",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "native_place",
               "DataType": "varchar",
               "ColumnType": "varchar(20)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "籍贯",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "politic_id",
               "DataType": "int",
               "ColumnType": "int(8)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "政治面貌",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "email",
               "DataType": "varchar",
               "ColumnType": "varchar(20)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "邮箱",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "phone",
               "DataType": "varchar",
               "ColumnType": "varchar(11)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "电话号码",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "address",
               "DataType": "varchar",
               "ColumnType": "varchar(64)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "联系地址",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "job_level_id",
               "DataType": "int",
               "ColumnType": "int(11)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "职称ID",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "pos_id",
               "DataType": "int",
               "ColumnType": "int(11)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "职位ID",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "engage_form",
               "DataType": "varchar",
               "ColumnType": "varchar(8)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "聘用形式",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "tiptop_degree",
               "DataType": "varchar",
               "ColumnType": "varchar(8)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "最高学历",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "specialty",
               "DataType": "varchar",
               "ColumnType": "varchar(32)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "所属专业",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "school",
               "DataType": "varchar",
               "ColumnType": "varchar(32)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "毕业院校",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "begin_date",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "入职日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "work_state",
               "DataType": "varchar",
               "ColumnType": "varchar(8)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "在职状态",
               "ColumnDefault": "在职"
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "code",
               "DataType": "varchar",
               "ColumnType": "varchar(8)",
               "ColumnKey": "MUL",
               "CharMaxLen": "",
               "ColumnComment": "工号",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "contract_term",
               "DataType": "double",
               "ColumnType": "double",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "合同期限",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "conversion_time",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "转正日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "not_wok_date",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "离职日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "begin_contract",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "合同起始日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "end_contract",
               "DataType": "date",
               "ColumnType": "date",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "合同终止日期",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "work_age",
               "DataType": "int",
               "ColumnType": "int(11)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "工龄",
               "ColumnDefault": ""
          },
          {
               "TableName": "employee",
               "TableSchema": "gocenter",
               "ColumnName": "work_id",
               "DataType": "varchar",
               "ColumnType": "varchar(16)",
               "ColumnKey": "",
               "CharMaxLen": "",
               "ColumnComment": "",
               "ColumnDefault": ""
          }
     ],
     "pk_info": {
          "Pkey": "id",
          "PkeyField": "",
          "PkeyType": "int"
     }

 

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leijmdas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值