MarcelArthur / yamlConverter

yaml表定义信息提取工具:该程序用来提取yaml文件中的表定义信息,组成go结构体以及其他有用的信息

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

使用方法

使用以下命令将同级目录下的user_info.yaml文件中的表定义信息提取出来,提取的结果存储在同级目录下的user_info.txt文件中,如果user_info.txt文件已存在,那么会覆盖已有内容。

go run yamlConvertToStruct.go user_info.yaml

所提取的信息列表

1.表名

表的中文名称。

2.主键序列

表定义的主键组合。我接触到的yaml通常用来定义非关系数据库的"表",非关系数据库的主键通常有多个,由一定顺序形成主键序列。

3.结构体定义

根据表定义转换成的go里面的结构体定义。

4.数据校验

表定义信息里包含了每一个字段最大长度、是否可以为空等属性,因此可以将这些信息与数据校验方法结合生成用于数据校验的go代码。以示例文件中输出的一行数据校验代码为例:util.CheckParam(structNeededToCheck.GroupId, "机构代码", 8, true, false),CheckParam方法第一个入参是所校验的属性的值;第二个入参是该属性的中文名称;第三个参数是该属性的最大长度;第四个参数用于指明该属性是否定长,如果定长则值的长度只能是规定值(本例中是8),通常是不定长,如果定长会在属性描述那一行明确指出;第五个入参用于对该属性可否以及是否为空进行判断。

5.对应的json字符串

go结构体对应的json字符串(即对结构体json.Marshal后的结果),适用于使用json作为数据交换的场景。

6.初始化对象时给字段赋值用

在以下场景初始化结构体对象时使用。

user := UserInfo{
    UserId : "1",
    UserName : "John",
}

7.给前端的接口文档用(字段说明)

前后端分离的架构,通常后端需要编写类似服务使用说明的文件,来将访问路径、请求方式、入参和出参向前端解释说明,在这种场景下,根据表信息自动生成当然是最省事的,尤其在表字段很多的时候,只是整理字段说明就会耗费很多时间。

开发缘由

我供职的公司使用yaml文件作为数据模型的定义文件,每个yaml文件相当于一张表的定义文档,因此在开发的时候经常需要根据yaml创建go的结构体,表的字段少了还好,但通常多达四五十个,一个字段一个字段的定义成go结构体属性实在太麻烦,效率很低,字母也容易拼错。开发了一段时间之后,发现yaml文件是有一定格式的,因此想到根据yaml的格式规律来生成对应的go结构体,本工程便由此而生。

About

yaml表定义信息提取工具:该程序用来提取yaml文件中的表定义信息,组成go结构体以及其他有用的信息


Languages

Language:Go 100.0%