video-flow-toon/src/routes/task/getTaskApi.ts
zyc e8f381f73a
Some checks failed
Build and Deploy / build-and-deploy (push) Failing after 5s
Add SMS verification auth flow
2026-05-28 16:08:30 +08:00

60 lines
1.8 KiB
TypeScript

import express from "express";
import u from "@/utils";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
import { z } from "zod";
import { getCurrentUser } from "@/lib/auth";
const router = express.Router();
export default router.post(
"/",
validateFields({
state: z.string().optional().nullable(),
taskClass: z.string().optional().nullable(),
projectId: z.number().optional().nullable(),
page: z.number(),
limit: z.number(),
}),
async (req, res) => {
const { taskClass, state, projectId, page = 1, limit = 10 }: any = req.body;
const user = getCurrentUser(req);
const offset = (page - 1) * limit;
const data = await u
.db("o_tasks")
.leftJoin("o_project", "o_project.id", "o_tasks.projectId")
.where("o_project.userId", user.id)
.andWhere((qb) => {
if (taskClass) {
qb.andWhere("o_tasks.taskClass", taskClass);
}
if (state) {
qb.andWhere("o_tasks.state", state);
}
if (projectId) {
qb.andWhere("o_tasks.projectId", projectId);
}
})
.select("o_tasks.*", "o_project.* ")
.offset(offset)
.limit(limit)
.orderBy("o_tasks.id", "desc");
const totalQuery = (await u
.db("o_tasks")
.leftJoin("o_project", "o_project.id", "o_tasks.projectId")
.where("o_project.userId", user.id)
.andWhere((qb) => {
if (taskClass) {
qb.andWhere("o_tasks.taskClass", taskClass);
}
if (projectId) {
qb.andWhere("o_tasks.projectId", projectId);
}
if (state) {
qb.andWhere("o_tasks.state", state);
}
})
.count("* as total")
.first()) as any;
res.status(200).send(success({ data, total: totalQuery?.total }));
},
);