A Swiss Army Knife helps you generate sql from gorm model struct.
go get github.com/liudanking/gorm2sql
user_email.go:
typeUserBasestruct {
UserIdstring`sql:"index:idx_ub"`Ipstring`sql:"unique_index:uniq_ip"`
}
typeUserEmailstruct {
Idint64`gorm:"primary_key"`UserBaseEmailstringSexboolAgeintScorefloat64UpdateTime time.Time`sql:"default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"`CreateTime time.Time`sql:"default:CURRENT_TIMESTAMP"`
}gorm2sql sql -f user_email.go -s UserEmail -o db.sql
Result:
CREATETABLE `user_email`
(
`id`bigint AUTO_INCREMENT NOT NULL ,
`user_id`varchar(128) NOT NULL ,
`ip`varchar(128) NOT NULL ,
`email`varchar(128) NOT NULL ,
`sex`booleanNOT NULL ,
`age`intNOT NULL ,
`score` double NOT NULL ,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP,
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
INDEX idx_ub (`user_id`),
UNIQUE INDEX uniq_ip (`ip`),
PRIMARY KEY (`id`)
) engine=innodb DEFAULT charset=utf8mb4;gorm2sql loads go source file to golang AST, then generate sql according to tag of gorm struct field.