/* * Copyright (C) 2019 StApps * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ import {SCThingType} from './things/abstract/thing'; import {SCAcademicEvent, SCAcademicEventMeta, SCAcademicEventWithoutReferences} from './things/academic-event'; import {SCArticle, SCArticleMeta, SCArticleWithoutReferences} from './things/article'; import {SCBook, SCBookMeta, SCBookWithoutReferences} from './things/book'; import {SCBuilding, SCBuildingMeta, SCBuildingWithoutReferences} from './things/building'; import {SCCatalog, SCCatalogMeta, SCCatalogWithoutReferences} from './things/catalog'; import {SCContactPoint, SCContactPointMeta, SCContactPointWithoutReferences} from './things/contact-point'; import {SCCourseOfStudies, SCCourseOfStudiesMeta, SCCourseOfStudiesWithoutReferences} from './things/course-of-studies'; import {SCDateSeries, SCDateSeriesMeta, SCDateSeriesWithoutReferences} from './things/date-series'; import {SCDiff, SCDiffMeta, SCDiffWithoutReferences} from './things/diff'; import {SCDish, SCDishMeta, SCDishWithoutReferences} from './things/dish'; import {SCFavorite, SCFavoriteMeta, SCFavoriteWithoutReferences} from './things/favorite'; import {SCFloor, SCFloorMeta, SCFloorWithoutReferences} from './things/floor'; import {SCMessage, SCMessageMeta, SCMessageWithoutReferences} from './things/message'; import {SCOrganization, SCOrganizationMeta, SCOrganizationWithoutReferences} from './things/organization'; import {SCPerson, SCPersonMeta, SCPersonWithoutReferences} from './things/person'; import {SCPointOfInterest, SCPointOfInterestMeta, SCPointOfInterestWithoutReferences} from './things/point-of-interest'; import {SCRoom, SCRoomMeta, SCRoomWithoutReferences} from './things/room'; import {SCSemester, SCSemesterMeta, SCSemesterWithoutReferences} from './things/semester'; import {SCSetting, SCSettingMeta, SCSettingWithoutReferences} from './things/setting'; import {SCSportCourse, SCSportCourseMeta, SCSportCourseWithoutReferences} from './things/sport-course'; import {SCStudyModule, SCStudyModuleMeta, SCStudyModuleWithoutReferences} from './things/study-module'; import {SCTicket, SCTicketMeta, SCTicketWithoutReferences} from './things/ticket'; import {SCToDo, SCToDoMeta, SCToDoWithoutReferences} from './things/todo'; import {SCTour, SCTourMeta, SCTourWithoutReferences} from './things/tour'; import {SCVideo, SCVideoMeta, SCVideoWithoutReferences} from './things/video'; /* tslint:disable:variable-name */ /** * A map of things, from type to meta data */ export const SCClasses: { [K in SCThingType]: object } = { /* tslint:enable */ 'academic event': SCAcademicEventMeta, 'article': SCArticleMeta, 'book': SCBookMeta, 'building': SCBuildingMeta, 'catalog': SCCatalogMeta, 'contact point': SCContactPointMeta, 'course of studies': SCCourseOfStudiesMeta, 'date series': SCDateSeriesMeta, 'diff': SCDiffMeta, 'dish': SCDishMeta, 'favorite': SCFavoriteMeta, 'floor': SCFloorMeta, 'message': SCMessageMeta, 'organization': SCOrganizationMeta, 'person': SCPersonMeta, 'point of interest': SCPointOfInterestMeta, 'room': SCRoomMeta, 'semester': SCSemesterMeta, 'setting': SCSettingMeta, 'sport course': SCSportCourseMeta, 'study module': SCStudyModuleMeta, 'ticket': SCTicketMeta, 'todo': SCToDoMeta, 'tour': SCTourMeta, 'video': SCVideoMeta, }; export type SCThingsWithoutDiff = SCAcademicEvent | SCArticle | SCBook | SCBuilding | SCCatalog | SCContactPoint | SCCourseOfStudies | SCDateSeries | SCDish | SCFavorite | SCFloor | SCMessage | SCOrganization | SCPerson | SCPointOfInterest | SCRoom | SCSemester | SCSetting | SCSportCourse | SCStudyModule | SCTicket | SCToDo | SCTour | SCVideo; /** * An object that exists in the StAppsCore */ export type SCThings = SCThingsWithoutDiff | SCDiff; /** * A field of a thing */ export type SCThingsField = keyof SCThings | string; /** * Thing without references for a thing */ export type SCAssociatedThingWithoutReferences = THING extends SCAcademicEvent ? SCAcademicEventWithoutReferences : THING extends SCArticle ? SCArticleWithoutReferences : THING extends SCBook ? SCBookWithoutReferences : THING extends SCBuilding ? SCBuildingWithoutReferences : THING extends SCCatalog ? SCCatalogWithoutReferences : THING extends SCContactPoint ? SCContactPointWithoutReferences : THING extends SCCourseOfStudies ? SCCourseOfStudiesWithoutReferences : THING extends SCDateSeries ? SCDateSeriesWithoutReferences : THING extends SCDiff ? SCDiffWithoutReferences : THING extends SCDish ? SCDishWithoutReferences : THING extends SCFavorite ? SCFavoriteWithoutReferences : THING extends SCFloor ? SCFloorWithoutReferences : THING extends SCMessage ? SCMessageWithoutReferences : THING extends SCOrganization ? SCOrganizationWithoutReferences : THING extends SCPerson ? SCPersonWithoutReferences : THING extends SCPointOfInterest ? SCPointOfInterestWithoutReferences : THING extends SCRoom ? SCRoomWithoutReferences : THING extends SCSemester ? SCSemesterWithoutReferences : THING extends SCSetting ? SCSettingWithoutReferences : THING extends SCSportCourse ? SCSportCourseWithoutReferences : THING extends SCStudyModule ? SCStudyModuleWithoutReferences : THING extends SCTicket ? SCTicketWithoutReferences : THING extends SCToDo ? SCToDoWithoutReferences : THING extends SCTour ? SCTourWithoutReferences : THING extends SCVideo ? SCVideoWithoutReferences : never; /** * Thing for a thing without references */ export type SCAssociatedThing = THING extends SCAcademicEventWithoutReferences ? SCAcademicEvent : THING extends SCArticleWithoutReferences ? SCArticle : THING extends SCBookWithoutReferences ? SCBook : THING extends SCBuildingWithoutReferences ? SCBuilding : THING extends SCCatalogWithoutReferences ? SCCatalog : THING extends SCContactPointWithoutReferences ? SCContactPoint : THING extends SCCourseOfStudiesWithoutReferences ? SCCourseOfStudies : THING extends SCDateSeriesWithoutReferences ? SCDateSeries : THING extends SCDiffWithoutReferences ? SCDiff : THING extends SCDishWithoutReferences ? SCDish : THING extends SCFavoriteWithoutReferences ? SCFavorite : THING extends SCFloorWithoutReferences ? SCFloor : THING extends SCMessageWithoutReferences ? SCMessage : THING extends SCOrganizationWithoutReferences ? SCOrganization : THING extends SCPersonWithoutReferences ? SCPerson : THING extends SCPointOfInterestWithoutReferences ? SCPointOfInterest : THING extends SCRoomWithoutReferences ? SCRoom : THING extends SCSemesterWithoutReferences ? SCSemester : THING extends SCSettingWithoutReferences ? SCSetting : THING extends SCSportCourseWithoutReferences ? SCSportCourse : THING extends SCStudyModuleWithoutReferences ? SCStudyModule : THING extends SCTicketWithoutReferences ? SCTicket : THING extends SCToDoWithoutReferences ? SCToDo : THING extends SCTourWithoutReferences ? SCTour : THING extends SCVideoWithoutReferences ? SCVideo : never;