go/gin/gorm/mysql等环境搭建略过;首先使用Navicat新建一个数据库gin_gorm_online_judge
用于本项目,内容如下图:
在本库中新建问题表problem
如下图:
我们正常的项目逻辑(项目流程)应该是我们定义完一张表之后我们需要去我们的gorm里面把它的 model也给它同步过去;
我们在Goland新建目录models
目录,然后新建problem.go
文件如下所示:
problem.go内容如下:
package models
import "gorm.io/gorm"
type Problem struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);" json:"identity"`
CategoryId string `gorm:"column:category_id;type:varchar(255);" json:"category-id"`
Title string `gorm:"column:title;type:varchar(255)" json:"title"`
Content string `gorm:"column:content;type:text" json:"content"`
MaxRuntime int `gorm:"column:max_runtime;type:int(11);" json:"max-runtime"`
MaxMem int `gorm:"column:max_mem;type:int(11);" json:"max_mem"`
}
func (table *Problem) TableName() string {
return "problem"
}
新建user
表如下:
新建 user.go
如下:
package models
import "gorm.io/gorm"
type User struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);" json:"identity"`
Name string `gorm:"column:name;type:varchar(100)" json:"name"`
Password string `gorm:"column:password;type:varchar(32)" json:"password"`
Phone string `gorm:"column:phone;type:varchar(20)" json:"phone"`
Mail string `gorm:"column:mail;type:varchar(100)" json:"mail"`
}
func (table *User) TableName() string {
return "user"
}
新建category
表:
新建category.go
文件:
package models
import "gorm.io/gorm"
type Category struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);" json:"identity"`
Name string `gorm:"column:name;type:varchar(100);" json:"name"`
ParentId int `gorm:"column:parent_id;type:int(11);" json:"parent_id"`
}
func (table *Category) TableName() string {
return "category"
}
新建submit
表:
新建submit.go
文件如下:
package models
import "gorm.io/gorm"
type Submit struct {
gorm.Model
Identity string `gorm:"column:identity;type:varchar(36);" json:"identity"`
ProblemIdentity string `gorm:"column:problem_identity;type:varchar(36)" json:"problem_identity"`
UserIdentity string `gorm:"column:user_identity;type:varchar(36)" json:"user_identity"`
Path string `gorm:"column:path;type:varchar(20)" json:"path"`
}
func (table *Submit) TableName() string {
return "submit"
}
整体构建完后目录如下: