From 96f04c6de4d2b141bf4ff9307c54e22af700d484 Mon Sep 17 00:00:00 2001 From: Patrick Mueller Date: Sat, 24 Dec 2022 15:03:37 +0100 Subject: [PATCH] Add JSON Endpoint for events --- src/models/calendar/Calendar.router.ts | 3 ++ src/models/calendar/events/event.interface.ts | 3 ++ .../calendar/events/events.interface.ts | 0 src/models/calendar/events/events.router.ts | 36 +++++++++++++++++++ src/models/calendar/events/events.service.ts | 32 +++++++++++++++++ 5 files changed, 74 insertions(+) delete mode 100644 src/models/calendar/events/events.interface.ts diff --git a/src/models/calendar/Calendar.router.ts b/src/models/calendar/Calendar.router.ts index 36e7f73..770301e 100644 --- a/src/models/calendar/Calendar.router.ts +++ b/src/models/calendar/Calendar.router.ts @@ -4,12 +4,15 @@ import express, {Request, Response} from 'express'; import {Guid} from 'guid-typescript'; import logger from '../../middleware/logger'; +import {eventsRouter} from './events/events.router'; /** * Router Definition */ export const calendarRouter = express.Router(); +calendarRouter.use('/events', eventsRouter); + calendarRouter.get('/', async (req: Request, res: Response) => { try { diff --git a/src/models/calendar/events/event.interface.ts b/src/models/calendar/events/event.interface.ts index e69de29..90217fe 100644 --- a/src/models/calendar/events/event.interface.ts +++ b/src/models/calendar/events/event.interface.ts @@ -0,0 +1,3 @@ +export interface Event { + event_id: number; +} diff --git a/src/models/calendar/events/events.interface.ts b/src/models/calendar/events/events.interface.ts deleted file mode 100644 index e69de29..0000000 diff --git a/src/models/calendar/events/events.router.ts b/src/models/calendar/events/events.router.ts index e69de29..17c54f1 100644 --- a/src/models/calendar/events/events.router.ts +++ b/src/models/calendar/events/events.router.ts @@ -0,0 +1,36 @@ +/** + * Required External Modules and Interfaces + */ + +import express, {Request, Response} from 'express'; +import * as EventService from './events.service'; +import {Event} from './event.interface'; + + +/** + * Router Definition + */ + +export const eventsRouter = express.Router(); + + +/** + * Controller Definitions + */ + +// POST users/register +eventsRouter.get('/all', async (req: Request, res: Response) => { + try { + // Get request params + let calendarId: number = parseInt(req.query.calendar as string ?? '', 10); + + // Get events + let events = await EventService.getAllEvents(calendarId); + + // Send the session details back to the user + res.status(200).send(events); + } catch (e: any) { + console.log('Error handling a request: ' + e.message); + res.status(500).send(JSON.stringify({'message': 'Internal Server Error. Try again later.'})); + } +}); diff --git a/src/models/calendar/events/events.service.ts b/src/models/calendar/events/events.service.ts index e69de29..185bee4 100644 --- a/src/models/calendar/events/events.service.ts +++ b/src/models/calendar/events/events.service.ts @@ -0,0 +1,32 @@ +import * as dotenv from 'dotenv'; +import * as bcrypt from 'bcrypt'; +import {Guid} from 'guid-typescript'; +import {Event} from './event.interface'; +import {NachklangCalendarDB} from '../Calendar.db'; + + +dotenv.config(); + +/** + * Returns all events for the given calendar + * @param calendarId The calendar Id + */ +export const getAllEvents = async (calendarId: number): Promise => { + let conn = await NachklangCalendarDB.getConnection(); + let eventRows: Event[] = []; + try { + const eventsQuery = 'SELECT * FROM events WHERE calendar_id = ?'; + const eventsRes = await conn.query(eventsQuery, calendarId); + + for(let row of eventsRes) { + eventRows.push(row); + } + + return eventRows; + } catch (err) { + throw err; + } finally { + // Return connection + await conn.end(); + } +};