@opengis/fastify-table
Version:
core-plugins
56 lines (48 loc) • 1.84 kB
JavaScript
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,
},
},
};
}