UNPKG

alpha-version-dce-check-in-api

Version:

API for taking attendance and checking people in.

81 lines (68 loc) 2.3 kB
// Import Express import express from 'express'; // Import mango type import { Collection } from 'dce-mango'; // Import types import CanvasAPI from './shared/types/CanvasAPI'; import GetCourseEvent from './shared/types/GetCourseEvent'; import LogAction from './types/LogAction'; import LogError from './types/LogError'; import RecordAttendanceFunction from './shared/types/RecordAttendanceFunction'; // Import constants import STUDENT_PATH_PREFIX from './shared/constants/STUDENT_PATH_PREFIX'; import TTM_PATH_PREFIX from './shared/constants/TTM_PATH_PREFIX'; // Import DB connections import { initCollections } from './initCollections'; // Import logger initializer import { initLogger } from './initLogger'; // Import routes import addStudentRoutes from './addRoutes/addStudentRoutes'; import addTTMRoutes from './addRoutes/addTTMRoutes'; /** * Function to add the dce-check-in-ui backend to your Express app. * @author Benedikt Arnarsson * @param app the Express app that will handle the check-in UI backend calls. * @param opts.getCanvasAPI function for retrieving the Canvas API. * @param opts.CollectionCons constructor for Collection type (dce-mango). * @param opts.recordAttendance function for recording student attendance. * @param opts.logAction function for logging backend actions. * @param opts.logError function for logging backend errors. */ const addCheckInRoutes = (opts: { app: express.Application, getCanvasAPI: () => CanvasAPI, CollectionCons: typeof Collection, recordAttendance: RecordAttendanceFunction, getCourseEvent: GetCourseEvent, logAction: LogAction, logError: LogError, }): void => { // Destructure const { app, getCanvasAPI, CollectionCons, recordAttendance, getCourseEvent, logAction, logError, } = opts; // Get DB connections initCollections(CollectionCons); // Setup logger initLogger(logAction, logError); // Add TTM routes const ttmRouter = addTTMRoutes(); app.use(TTM_PATH_PREFIX, ttmRouter); // Add student routes (for everyone) const studentRouter = addStudentRoutes( recordAttendance, getCanvasAPI, getCourseEvent, ); app.use(STUDENT_PATH_PREFIX, studentRouter); }; export { // eslint-disable-next-line import/prefer-default-export addCheckInRoutes, };