UNPKG

@opengis/fastify-table

Version:

core-plugins

49 lines (48 loc) 1.6 kB
import path from "node:path"; import dataUpdate from "../../../plugins/crud/funcs/dataUpdate.js"; import pgClients from "../../../plugins/pg/pgClients.js"; import uploadMultiPart from "../../../plugins/file/uploadMultiPart.js"; export default async function widgetSet(req, reply) { const { pg = pgClients.client, headers = {}, user = {}, params = {} } = req; if (!params?.id) { return reply.status(400).send("not enough params: id"); } if (!pg.pk?.["crm.files"]) { return reply.status(404).send("table not found"); } if (headers["content-type"]?.split?.(";")?.shift?.() !== "multipart/form-data") { return reply.status(400).send("invalid payload content type"); } const file = await uploadMultiPart(req); const extName = path .extname(file.filepath || "") .slice(1) .toLowerCase(); const data = { uploaded_name: file?.originalFilename ?.toLocaleLowerCase() ?.replace?.(/'/g, "''"), file_path: file?.relativeFilepath?.replace?.(/\\/g, "/"), ext: extName, size: file?.size, file_status: 1, uid: user?.uid || 1, }; const result = await dataUpdate({ pg, table: "crm.files", id: params.id, data, uid: user?.uid, }); if (!result?.file_id) { return reply.status(404).send("file not found"); } return reply.status(200).send({ rowCount: 1, data: result, command: "UPLOAD", id: result?.file_id, entity_id: result?.entity_id, }); }