alpha-version-dce-check-in-api
Version:
API for taking attendance and checking people in.
81 lines (68 loc) • 2.3 kB
text/typescript
// 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,
};