2026-04-18 15:37:13 +08:00

40 lines
1.7 KiB
TypeScript

import express from "express";
import u from "@/utils";
import { z } from "zod";
import { success } from "@/lib/responseFormat";
import { validateFields } from "@/middleware/middleware";
import { id } from "zod/locales";
const router = express.Router();
export default router.post(
"/",
validateFields({
items: z.array(z.object({
id: z.number(),
sources: z.string()
}))
}),
async (req, res) => {
const { items } = req.body;
const result: Record<string, string> = {};
const storyboardIds = items.filter((item: any) => item.sources == "storyboard").map((item: any) => item.id)
const totalFilePaths = []
if (storyboardIds.length) {
const storyBoardPaths = await u.db("o_storyboard").whereIn("id", storyboardIds).select("id", "filePath");
totalFilePaths.push(...storyBoardPaths.map(i => ({ id: i.id, filePath: i.filePath, sources: "storyboard" })))
}
const assetsIds = items.filter((item: any) => item.sources == "assets").map((item: any) => item.id)
if (assetsIds.length) {
const assetsPaths = await u.db("o_assets").leftJoin("o_image", "o_image.id", "o_assets.imageId").whereIn("o_assets.id", assetsIds).select("o_assets.id", "o_image.filePath");
totalFilePaths.push(...assetsPaths.map(i => ({ id: i.id, filePath: i.filePath, sources: "assets" })))
}
await Promise.all(
totalFilePaths.map(async (item: { id: string, filePath: string, sources: string }) => {
result[`${item.id}:${item.sources}`] = item.filePath ? await u.oss.getSmallImageUrl(item.filePath) : "";
}))
res.status(200).send(success({ data: result }));
},
);