惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
WordPress大学
WordPress大学
博客园_首页
罗磊的独立博客
D
Docker
N
Netflix TechBlog - Medium
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
D
DataBreaches.Net
I
InfoQ
L
LangChain Blog
GbyAI
GbyAI
V
V2EX
博客园 - 聂微东
P
Proofpoint News Feed
博客园 - 【当耐特】
腾讯CDC
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
U
Unit 42
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏

Chenxu's Blog

写出一份好的代码 linux 的基本操作 启动我的服务 更舒适地写代码(含学生白嫖指南) RAG检索优化:从 68% 到 82.2% 学习深度学习 北邮计算机研究生选课指北 学习机器学习 上海篇 提出一个好问题 写代码的环境 选购一台合适的设备 计算机的第零课 序言 内蒙古篇 山东篇 一篇对transformers的疑惑 浅析GPUStack 浅谈后端项目分层 浙江篇 河南篇 一些三端协同的开发工具记录 浅谈编程语言中的 GC 在 Windows 上安装 Rust 美化博客 消息队列 MyBatis 现代交换原理2024年题目 回忆版 北邮计科本科课程指北 ClkLog埋点用户分析系统研究报告 大数据梧桐实验分享
手把手教你gozero从开发到部署 (1): gtodolist 项目说明和环...
Chenxu · 2023-08-30 · via Chenxu's Blog

声明: 若博客中代码与 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 模块的编写