当前位置:网站首页>基于Gin、Gorm实现的在线练习系统之项目梳理

基于Gin、Gorm实现的在线练习系统之项目梳理

2022-06-11 00:47:00 JIeJaitt

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"
}

整体构建完后目录如下:
在这里插入图片描述

原网站

版权声明
本文为[JIeJaitt]所创,转载请带上原文链接,感谢
https://jiejaitt.blog.csdn.net/article/details/125212263