gen
gen copied to clipboard
如何增量的生成model和query?
Your Question
每次数据库表有更新字段属性或者新增字段的时候,需要重新生成model和query。 使用gorm gen这个包如何实现部分增量更新,而不是把表结构拿到后全量重新生成。 因为有时候表结构不一定是受开发者控制(dba管理表结构),我们只能说针对代码中新增字段进行增量生成代码。由于表结构不一定能拿到最新的(即使拿到最新表结构全量重新生成gen的代码也感觉代码改动较大),并且也避免不对称信息,我们尽量只增量的改动代码
The document you expected this should be explained
Expected answer
能否实现通过新增sql的执行,进行增量的生成代码在原有的已生成的model结构体基础上。
例如之前已经生成了一个user表对应的model结构体(此处示例省略gorm标签内容)。 type User struct{ ID uint64 gorm:.. Name string gorm:... Email string gorm:.. }
本次新增字段version,执行sql: ALTER TABLE user ADD COLUMN version INT UNSIGNED NOT NULL DEFAULT 0 COMMENT '版本号'
能否基于这个新增的sql命令以及之前已存在的User结构体。来进行增量的gen生成代码到这个user结构体上,同时也增量生成对应的query包的代码内容。
type User struct{ ID uint64 gorm:.. Name string gorm:... Email string gorm:.. Version int32 gorm... // 本次增量生成,其他字段都不改动 }
求大佬支持~感激
你可以配置2套环境(生产环境、开发环境)。生产环境的db结构肯定是不能轻易变动的,但是这不影响你开发。你在开发新功能时,先在开发环境变动数据库结构,然后连接开发环境的数据库进行model和query的generate,然后进行开发和测试。等到开发和测试完成后,再对生产环境的数据库做变动。
@game1991 解析sql是有的,但是也是全量生成; 增量容易出现不一致,我们认为始终保持和db一致,更合适; 同时gen也在不断的迭代,可能是修复问题,也可能是新的功能支持,仅根据字段增量变更,也很容易出现问题