67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
/**
|
|
* choral controller
|
|
*/
|
|
|
|
import { factories } from "@strapi/strapi";
|
|
|
|
export default factories.createCoreController(
|
|
"api::choral.choral",
|
|
({ strapi }) => ({
|
|
async create(ctx) {
|
|
const data = JSON.parse(ctx.request.body.data);
|
|
|
|
if (ctx.request.files.coverImage) {
|
|
const files = Array.isArray(ctx.request.files.coverImage)
|
|
? ctx.request.files.coverImage[0]
|
|
: ctx.request.files.coverImage;
|
|
const extension = files.originalFilename.match(/\.[0-9a-z]+$/i);
|
|
const payload = {
|
|
fileInfo: {
|
|
caption: "undefined",
|
|
alternativeText: data.name || "",
|
|
name: `${data.name}_cover${extension}`,
|
|
},
|
|
};
|
|
const asset = await strapi.services["plugin::upload.upload"].upload({
|
|
data: payload,
|
|
files,
|
|
});
|
|
data.cover = asset[0].id;
|
|
}
|
|
|
|
ctx.request.body = { data };
|
|
const result = await super.create(ctx);
|
|
return result;
|
|
},
|
|
|
|
async update(ctx) {
|
|
const data = ctx.request.body.data
|
|
? JSON.parse(ctx.request.body.data)
|
|
: {};
|
|
|
|
if (ctx.request.files && ctx.request.files.coverImage) {
|
|
const files = Array.isArray(ctx.request.files.coverImage)
|
|
? ctx.request.files.coverImage[0]
|
|
: ctx.request.files.coverImage;
|
|
const extension = files.originalFilename.match(/\.[0-9a-z]+$/i);
|
|
const payload = {
|
|
fileInfo: {
|
|
caption: "undefined",
|
|
alternativeText: data.name || "",
|
|
name: `${data.name}_cover${extension}`,
|
|
},
|
|
};
|
|
const asset = await strapi.services["plugin::upload.upload"].upload({
|
|
data: payload,
|
|
files,
|
|
});
|
|
data.cover = asset[0].id;
|
|
}
|
|
|
|
ctx.request.body = { data };
|
|
const result = await super.update(ctx);
|
|
return result;
|
|
},
|
|
})
|
|
);
|