From f7a97cce82d2091ea1435cf54bfb602242f69cee Mon Sep 17 00:00:00 2001 From: srgooglo Date: Thu, 20 Oct 2022 11:54:07 +0200 Subject: [PATCH] implement `FeaturedEvents` controller --- packages/server/src/api.js | 1 + .../FeaturedEventsController/index.js | 53 +++++++++++++++++++ .../methods/createFeaturedEvent.js | 25 +++++++++ packages/server/src/controllers/index.js | 3 +- 4 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 packages/server/src/controllers/FeaturedEventsController/index.js create mode 100644 packages/server/src/controllers/FeaturedEventsController/methods/createFeaturedEvent.js diff --git a/packages/server/src/api.js b/packages/server/src/api.js index 3210ddcd..e47d37bf 100755 --- a/packages/server/src/api.js +++ b/packages/server/src/api.js @@ -37,6 +37,7 @@ export default class Server { controllers.BadgesController, controllers.CommentsController, controllers.SearchController, + controllers.FeaturedEventsController, ] middlewares = middlewares diff --git a/packages/server/src/controllers/FeaturedEventsController/index.js b/packages/server/src/controllers/FeaturedEventsController/index.js new file mode 100644 index 00000000..0fecbc3e --- /dev/null +++ b/packages/server/src/controllers/FeaturedEventsController/index.js @@ -0,0 +1,53 @@ +import { Controller } from "linebridge/dist/server" +import { FeaturedEvent } from "../../models" + +import createFeaturedEvent from "./methods/createFeaturedEvent" + +export default class FeaturedEventsController extends Controller { + get = { + "/featured_event/:id": async (req, res) => { + const { id } = req.params + + const featuredEvent = await FeaturedEvent.findById(id) + + return res.json(featuredEvent) + }, + "/featured_events": async (req, res) => { + const featuredEvents = await FeaturedEvent.find() + + return res.json(featuredEvents) + } + } + + post = { + "/featured_event": { + middlewares: ["withAuthentication", "onlyAdmin"], + fn: async (req, res) => { + const result = await createFeaturedEvent(req.body).catch((err) => { + res.status(500).json({ + error: err.message + }) + + return null + }) + + if (result) { + return res.json(result) + } + } + } + } + + delete = { + "/featured_event/:id": { + middlewares: ["withAuthentication", "onlyAdmin"], + fn: async (req, res) => { + const { id } = req.params + + const featuredEvent = await FeaturedEvent.findByIdAndDelete(id) + + return res.json(featuredEvent) + } + } + } +} \ No newline at end of file diff --git a/packages/server/src/controllers/FeaturedEventsController/methods/createFeaturedEvent.js b/packages/server/src/controllers/FeaturedEventsController/methods/createFeaturedEvent.js new file mode 100644 index 00000000..e8269b3a --- /dev/null +++ b/packages/server/src/controllers/FeaturedEventsController/methods/createFeaturedEvent.js @@ -0,0 +1,25 @@ +import { FeaturedEvent } from "../../../models" + +export default async (payload) => { + const { + name, + category, + description, + dates, + location, + announcement, + } = payload + + const featuredEvent = new FeaturedEvent({ + name, + category, + description, + dates, + location, + announcement, + }) + + await featuredEvent.save() + + return featuredEvent +} \ No newline at end of file diff --git a/packages/server/src/controllers/index.js b/packages/server/src/controllers/index.js index 6aa53e8a..c3be695b 100755 --- a/packages/server/src/controllers/index.js +++ b/packages/server/src/controllers/index.js @@ -8,4 +8,5 @@ export { default as PostsController } from "./PostsController" export { default as StreamingController } from "./StreamingController" export { default as BadgesController } from "./BadgesController" export { default as CommentsController } from "./CommentsController" -export { default as SearchController } from "./SearchController" \ No newline at end of file +export { default as SearchController } from "./SearchController" +export { default as FeaturedEventsController } from "./FeaturedEventsController" \ No newline at end of file