第一二次项目讨论总结 | 青训营笔记

90 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记。

项目结构

  1. controller文件夹 包含具体代码实现,包名controller,分为5部分代码
  • user,用户相关代码
  • video,视频相关代码
  • follow,关注相关代码
  • favorite,点赞相关代码
  • comment,评论相关代码
  1. routers文件夹 初始化数据索引,初始化引擎配置,构建路由,启动服务。同样分为5部分代码:
  • user
  • video
  • follow
  • favorite
  • comment
  1. models文件夹 存储公共的结构,工具代码,创建数据库sql等

  2. public文件夹 存储本地视频

  3. main.go主程序

  4. go.mod,go.sum等依赖管理

接口安排

  • 视频流接口,投稿接口,发布列表:2人
  • 用户注册,用户登录,用户信息:2人
  • 赞操作,点赞列表:1人
  • 评论操作,评论列表:1人
  • 关注操作,关注列表,粉丝列表:2人

具体实现

  • 先做单元测试,后面再联调测试
  • 初始化:读取数据库数据到内存
  • GET:根据request读取到内存数据,返回response
  • POST:接受上传的数据,更新内存和数据库数据

数据库相关

设计的数据库如图示

image.png

  • 因用户相互关注可能造成数据冗余,关注表增加status字段,-1表示a关注b,0表示ab相互关注,1表示b关注a
  • create_time使用timestamp,因为要返回按投稿时间倒序的列表
  • user表单有关注总数和粉丝总数
  • url用varchar(128)
  • 将用户id+timestampe 作为video的标识符
  • 实体属性命名按照接口说明来,减少同学们后续开发过程中的理解难度
  • favorite表中的属性类型也改为bigint,因为他们和其他id类型对应
  • relation表添加id项作为主键,因为关注者id和被关注者id应该都是外键