声明: 若博客中代码与 github 中代码有出入, 请以 github 为准
项目说明
gtodolist 是一个带有前端页面的简易备忘录项目, 使用 gozero 框架开发, 帮助同学快速熟悉和入门 gozero 框架, 项目地址在这里
项目前端来自于 github todolist , 原作者使用 gin+gorm 完成后端开发, 笔者将使用 gozero 进行重构
环境准备
假设你已经安装好了 gozero 所需的所有环境, 如果没有, 请参考 快速入门 gozero 框架
项目结构
新建文件夹 gtodolist
作为项目目录, 使用 gomod 进行管理并添加到 gowork 中
此项目拟作为微服务项目并采用 git 进行版本管理, 所以目前创建目录如下:
D:\GOPROJECTS\SRC\GTODOLIST
│ go.mod # mod依赖管理
│ README.md # 自述文件
│
├─app # 项目主目录
│ ├─task # task 模块
│ │ ├─cmd # 服务
│ │ │ ├─api
│ │ │ └─rpc
│ │ ├─model # 数据库
│ │ └─template # 模板文件
│ └─user # user 模块
│ ├─cmd
│ │ ├─api
│ │ └─rpc
│ ├─model
│ └─template
└─common # 通用的工具类等, 后面不再单另写出来
创建数据库
user 表:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` datetime(3) NULL DEFAULT NULL COMMENT '删除时间',
`username` varchar(191) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名',
`password_digest` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `username` (`username`) USING BTREE,
INDEX `idx_users_deleted_at` (`deleted_at`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1
CHARACTER SET = utf8
COLLATE = utf8_general_ci
ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
task 表:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP TABLE IF EXISTS `task`;
CREATE TABLE `task`
(
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`deleted_at` datetime(3) NULL DEFAULT NULL COMMENT '删除时间',
`uid` bigint(20) UNSIGNED NOT NULL COMMENT '用户id',
`title` varchar(191) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务标题',
`status` tinyint(20) NOT NULL DEFAULT 0 COMMENT '任务状态 0代办 1已完成',
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '任务内容',
`start_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '任务开始时间',
`end_time` timestamp NULL DEFAULT NULL COMMENT '任务结束时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_tasks_deleted_at` (`deleted_at`) USING BTREE,
INDEX `idx_tasks_title` (`title`) USING BTREE,
INDEX `idx_tasks_user` (`uid`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 1
CHARACTER SET = utf8
COLLATE = utf8_general_ci
ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
准备工作结束, 下一部分将介绍 user
模块的编写