Strapi v4 Popo
// path:\src\api\event\controllers
/**
* event controller
*/
const {createCoreController} = require('@strapi/strapi').factories;
// module.exports = createCoreController('api::event.event');
module.exports = createCoreController('api::event.event', ({strapi}) => ({
//Find with populate ----------------------------------------
async find(ctx) {
const populateList = [
'image',
'user',
]
// Push any additional query params to the array
populateList.push(ctx.query.populate)
ctx.query.populate = populateList.join(',')
// console.log(ctx.query)
const content = await super.find(ctx)
return content
},
// Create user event----------------------------------------
async create(ctx) {
let entity;
ctx.request.body.data.user = ctx.state.user;
entity = await super.create(ctx);
return entity;
},
// Update user event----------------------------------------
async update(ctx) {
let entity;
const {id} = ctx.params;
const query = {
filters: {
id: id,
user: {id: ctx.state.user.id}
}
};
const events = await this.find({query: query});
console.log(events);
if (!events.data || !events.data.length) {
return ctx.unauthorized(`You can't update this entry`);
}
entity = await super.update(ctx)
return entity;
},
// Delete a user event----------------------------------------
async delete(ctx) {
const {id} = ctx.params;
const query = {
filters: {
id: id,
user: {id: ctx.state.user.id}
}
}
const events = await this.find({query: query});
if (!events.data || !events.data.length) {
return ctx.unauthorized(`You can't delete this entry`);
}
const response = await super.delete(ctx);
return response;
},
// Get logged in users----------------------------------------
async me(ctx) {
const user = ctx.state.user;
if (!user) {
return ctx.badRequest(null, [
{messages: [{id: "No authorization header was found"}]},
]);
}
const query = {
filters: {
user: {id: user.id}
}
}
const data = await this.find({query: query});
if (!data) {
return ctx.notFound();
}
const sanitizedEntity = await this.sanitizeOutput(data, ctx);
return this.transformResponse(sanitizedEntity);
},
}));
Cute Capybara