从0解构tinyWeb项目--(Day:10)

今日任务

中间五一节玩了几天,隔了很久才完成

今日内容

CreateFocusSession(创造专注记录)

写法模式和以前很像没什么多说的

专注时间设置最少1分钟最长4个小时

GetTodayFocus(获取今天的专注记录)

tagsummary对应这个表

stduysession是这个表

那么这个函数中,用s变量range每一条专注记录,把所有专注记录的时长s.duration累加到totalseconds

前面的tagmap是一个以tag名为下标,然后tag对应的tagsummary汇总表为值的哈希表

那么再把每个已有s的tag名的汇总表赋值给ts,如果tag名找得到就赋值ts不然就else新创建表

这个依然是同一个tag名的专注时间累加到ts.seconds,else新创建表同样的逻辑

最后bytag表计算percentage

时长大于0就可以计算占比,形成多个tagsummay列表

最终组装成bytag表在response中上传

GetFocusSummary(获取指定多少天的专注总览)

这里前面的历史总计没有时间限制,默认的查询所有记录,

后面的sql查询条件就较多了 这个select是需要查询的列有哪些,这里有day,totalseconds,sessioncount

相当于把上面这个三个列的头确定了

然后where就是限制条件查哪里的这里明确了查对应的用户id,然后AND date >= DATE_SUB(CURDATE(), INTERVAL ? DAY),这里"CURDATE()"代表今天的日期,"?"是占位符后面days会赋值,"interval ?day"相当于经过多少天的意思,

"DATE_SUB(CURDATE(), INTERVAL ? DAY)"意思就是今天之前"?"那天的日期(如果"?"的值为30,就是从今天往前数三十天那一天的时期),这里的意思就是查询的日期要大于那一天,

最终的意思就是查询前30天的记录 然后group("date")这里是以日期分组 DESC代表降序(从大到小)

Rows是gorm的方法,启动查询

单日的统计表

后续defer rows.Close代表当程序执行完后最后再关闭,延迟关闭。其实就是关闭数据库连接池中的一个链接,归还一个链接。

这里scan三个变量填入的是上面对应的select的三个数据,然后这里scan是在循环内的,说明每一行都需要填入。 rows.next相当循环变量,一旦下一行没有数据才终止,

然后这里再格式化处理一下数据,然后把每一行数据逐一装入定义好的dailystatitem表

最后再响应json数据

GetFocusHistory(获取以前具体某一天的专注记录详情)

这个也是都是常见的写法

先通过find自动把数据库对应数据映射到这个session表,然后后续通过循环sessions补充details表 最后响应返回details表

CreateTag(创造标签)

当err信息中有"Duplicate"或者"unique"时,表示重复或者不是唯一的意思,就是指tag名重复

GetTags(获取标签)

今日练习

模拟标签占比

SQL查询

相关推荐
BingoGo5 分钟前
一个ChatGPT 超级省额度方案!用 TaskQuay 连接网页 ChatGPT 和本地 Codex
人工智能·后端
柳杉6 分钟前
从调研到闭环,我用 GPT-Image-2.5 和 GPT-6 Astra 把智慧厂房 3D 大屏这条链路走完了
前端·ai编程·数据可视化
海宇数据6 分钟前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化异动企业筛查网关
运维·人工智能·架构·自动化
芳心粽伙饭7 分钟前
CSS第四章 布局
前端·css·html
Brilliantwxx10 分钟前
【STM32】 I2C协议和设备主从( 图解 + 面试题 )
stm32·单片机·嵌入式硬件·架构
QQ_216962909611 分钟前
基于微服务架构的店铺管理系统的设计与实现
大数据·spring boot·后端·spring·微服务·小程序·架构
CoderYanger11 分钟前
Java EE 进阶:2.3 JavaScript 综合案例
java·前端·javascript·css·职场和发展·java-ee·html
芒鸽23 分钟前
把 Agent 运行时做成插件系统:agent-harness(openJiuwen Rust版) 的实践
开发语言·后端·rust
摸鱼仙人~25 分钟前
Vue 核心知识体系(大厂秋招方向)
前端·javascript·vue.js
CHHH_HHH30 分钟前
【Linux系统篇】进程间通信揭秘:从管道到共享内存
linux·服务器·c语言·开发语言·后端·ubuntu