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