scaffold基于数据库定义的代码生成器
scaffold 是一款基于数据库定义的代码生成器。
它是如何工作的?
正如我们所知,go 中进行 json 字符串的编码/解码过程中, 可以通过对象定义时字段的tag定义, 对字段进行补充说明。如下例:
type JsonSomething struct{ AField int64 `json:"x"` BField string `json:"y"` }
同样的方法, scaffold 通过数据库定义中的字段(或表)的 COMMENT 定义来对相应字段(或表)进行补充说明, 在根据模板进行代码生成。如:
CREATE TABLE `users` ( `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 'caption:"编号"', `name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'caption:"名称"', `mailbox` VARCHAR(128) NOT NULL DEFAULT '' COMMENT 'caption:"邮箱"', `sex` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'caption:"性别"', `description` VARCHAR(256) NOT NULL DEFAULT '' COMMENT 'caption:"描述"', `password` VARCHAR(32) NOT NULL DEFAULT '' COMMENT 'caption:"密码"', `head_url` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'caption:"头像"', `status` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT 'caption:"状态"', `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'caption:"创建时间"' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'caption:"会员"';
如定义表结构后, scaffold 就可以通过模板函数读取到 comment 中的 caption 字段, 并根据模板生成代码了。
评论