@@ -28,6 +28,7 @@ import {
|
|||||||
isNull,
|
isNull,
|
||||||
lt,
|
lt,
|
||||||
lte,
|
lte,
|
||||||
|
max,
|
||||||
min,
|
min,
|
||||||
ne,
|
ne,
|
||||||
notExists,
|
notExists,
|
||||||
@@ -196,16 +197,11 @@ accountRoutes.post("/me/avatar", requireAuth, async (c) => {
|
|||||||
|
|
||||||
accountRoutes.get("/users/:id/metrics", async (c) => {
|
accountRoutes.get("/users/:id/metrics", async (c) => {
|
||||||
const userId = queryInteger(c.req.param("id"), 0, { min: 1 })
|
const userId = queryInteger(c.req.param("id"), 0, { min: 1 })
|
||||||
// 学习天数连比赛提交一起算;首末提交时间照旧只看比赛外的提交
|
// 比赛提交也算:首末提交时间、学习天数都连比赛一起统计
|
||||||
const outsideContest = sql`filter (where ${schema.submission.contestId} is null)`
|
|
||||||
const [row] = await db
|
const [row] = await db
|
||||||
.select({
|
.select({
|
||||||
first: sql<
|
first: min(schema.submission.createTime),
|
||||||
string | null
|
latest: max(schema.submission.createTime),
|
||||||
>`min(${schema.submission.createTime}) ${outsideContest}`,
|
|
||||||
latest: sql<
|
|
||||||
string | null
|
|
||||||
>`max(${schema.submission.createTime}) ${outsideContest}`,
|
|
||||||
activeDays: countDistinct(
|
activeDays: countDistinct(
|
||||||
sql`date(${localTime(schema.submission.createTime)})`,
|
sql`date(${localTime(schema.submission.createTime)})`,
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user