From 82b7bc579bb1105a98901aa3a882a3057dcf4fde Mon Sep 17 00:00:00 2001 From: SrGooglo Date: Tue, 1 Apr 2025 21:51:39 +0000 Subject: [PATCH] improve events endpoints --- packages/server/db_models/event/index.js | 15 ++++++++++++++ .../server/db_models/featuredEvent/index.js | 13 ------------ .../main/routes/events/[event_id]/data/get.js | 20 +++++++++++++++++++ .../main/routes/featured/events/get.js | 10 ++++++++++ 4 files changed, 45 insertions(+), 13 deletions(-) create mode 100755 packages/server/db_models/event/index.js delete mode 100755 packages/server/db_models/featuredEvent/index.js create mode 100644 packages/server/services/main/routes/events/[event_id]/data/get.js create mode 100644 packages/server/services/main/routes/featured/events/get.js diff --git a/packages/server/db_models/event/index.js b/packages/server/db_models/event/index.js new file mode 100755 index 00000000..40ef639e --- /dev/null +++ b/packages/server/db_models/event/index.js @@ -0,0 +1,15 @@ +export default { + name: "Event", + collection: "events", + schema: { + name: { type: String, required: true }, + category: { type: String }, + description: { type: String }, + announcement: { type: Object, required: true }, + location: { type: String }, + startDate: { type: Date, required: true }, + endDate: { type: Date, required: true }, + featured: { type: Boolean, default: false }, + pageConfig: { type: Object, default: {} }, + }, +} diff --git a/packages/server/db_models/featuredEvent/index.js b/packages/server/db_models/featuredEvent/index.js deleted file mode 100755 index af36c24f..00000000 --- a/packages/server/db_models/featuredEvent/index.js +++ /dev/null @@ -1,13 +0,0 @@ -export default { - name: "FeaturedEvent", - collection: "featuredEvents", - schema: { - name: { type: String, required: true }, - category: { type: String }, - description: { type: String }, - dates: { type: Object }, - location: { type: String }, - announcement: { type: Object, required: true }, - expired: { type: Boolean, default: false } - } -} \ No newline at end of file diff --git a/packages/server/services/main/routes/events/[event_id]/data/get.js b/packages/server/services/main/routes/events/[event_id]/data/get.js new file mode 100644 index 00000000..9c6c807a --- /dev/null +++ b/packages/server/services/main/routes/events/[event_id]/data/get.js @@ -0,0 +1,20 @@ +import { Event } from "@db_models" +import axios from "axios" + +export default async (req) => { + let event = await Event.findById(req.params.event_id) + + event = event.toObject() + + // fetch page if exist + if (event.page && event.page.startsWith("https://")) { + try { + const response = await axios.get(event.page) + event.page = response.data + } catch (error) { + console.error(error) + } + } + + return event +} diff --git a/packages/server/services/main/routes/featured/events/get.js b/packages/server/services/main/routes/featured/events/get.js new file mode 100644 index 00000000..60f4d7c6 --- /dev/null +++ b/packages/server/services/main/routes/featured/events/get.js @@ -0,0 +1,10 @@ +import { Event } from "@db_models" + +export default async (req) => { + const events = await Event.find({ + endDate: { $gte: new Date() }, + featured: true, + }) + + return events +}