alpha-version-dce-check-in-api
Version:
API for taking attendance and checking people in.
67 lines (53 loc) • 2.17 kB
text/typescript
// Import Grouper
import { initGrouper, EventStateData } from 'dce-live-grouper';
// Import Mango
import { CollectionInterface, Collection } from 'dce-mango';
// Import types
import OccurrenceDocument from './shared/types/OccurrenceDocument';
/*------------------------------------------------------------------------*/
/* ---------------------------- Collections ----------------------------- */
/*------------------------------------------------------------------------*/
let groupCollection: CollectionInterface<EventStateData>;
let occurrenceCollection: CollectionInterface<OccurrenceDocument>;
/*------------------------------------------------------------------------*/
/* ----------------------------- Initialize ----------------------------- */
/*------------------------------------------------------------------------*/
const initCollections = (CollectionCons: typeof Collection) => {
occurrenceCollection = new CollectionCons<OccurrenceDocument>(
'OccurrenceDocument',
{
uniqueIndexKey: 'id',
indexKeys: [
'courseId',
'ihid',
],
},
);
const {
eventCollection,
} = initGrouper(CollectionCons);
groupCollection = eventCollection;
};
/*------------------------------------------------------------------------*/
/* ------------------------------ Getters ------------------------------- */
/*------------------------------------------------------------------------*/
const getOccurrenceCollection = (): CollectionInterface<OccurrenceDocument> => {
if (!occurrenceCollection) {
throw new Error('Occurrence collection has not been initiated.');
}
return occurrenceCollection;
};
const getGroupCollection = (): CollectionInterface<EventStateData> => {
if (!groupCollection) {
throw new Error('Group collection has not been initiated.');
}
return groupCollection;
};
/*------------------------------------------------------------------------*/
/* ------------------------------ Export -------------------------------- */
/*------------------------------------------------------------------------*/
export {
initCollections,
getOccurrenceCollection,
getGroupCollection,
};