UNPKG

@opengis/fastify-table

Version:

core-plugins

56 lines (48 loc) 1.84 kB
import path from 'node:path'; import { 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, }; // req.log.info('upload', { filepath: file?.filepath, uid: session.passport?.user?.uid }); return { message: { 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, }, }, }; }