UNPKG

@opengis/fastify-table

Version:

core-plugins

58 lines (57 loc) 2.07 kB
import path from "node:path"; import { logger, applyHook, pgClients, dataInsert } from "../../../../utils.js"; import uploadMultiPart from "../../../plugins/file/uploadMultiPart.js"; export default async function upload(req) { const { pg = pgClients.client } = req; const file = await uploadMultiPart(req); const objectId = req.params["*"] || "uploads"; const hookData = await applyHook("preUpload", { id: req.query?.id, subdir: objectId, token: req.query?.table, file, user: req.user, }); if (hookData) return hookData; const resultInsert = pg ? await dataInsert({ pg, table: "crm.files", data: { uploaded_name: file.originalFilename?.toLocaleLowerCase?.(), file_path: file.relativeFilepath?.replace?.(/\\/g, "/"), ext: file.extension, size: file.size, file_status: 1, entity_id: objectId, }, uid: req.user?.uid, }).then((el) => el?.rows?.[0] || {}) : {}; const { dir: relativeDirpath, base: fileName } = resultInsert?.file_path ? path.parse(resultInsert.file_path) : { relativeDirpath: path.dirname(file.relativeFilepath || ""), fileName: file.newFilename, }; logger.file("file/upload", { filepath: file.relativeFilepath, objectId, uid: req.user?.uid, }); return { res: "ok", name: file?.originalFilename, result: { file_id: resultInsert?.file_id, format: resultInsert?.ext || file.extension, size: resultInsert?.size || file?.size, entity_id: resultInsert?.entity_id, file_path: resultInsert?.file_path || file?.relativeFilepath?.replace(/\\/g, "/"), file_name: file?.originalFilename?.toLocaleLowerCase?.(), dir: relativeDirpath?.replace?.(/\\/g, "/"), native_file_name: fileName, }, }; }