import { prop, getModelForClass } from "@typegoose/typegoose"; /* TODO * Comments * Further attributes for class * */ export interface SharedMemberAttributes { discordID: string | undefined; } export type MemberAdditionalAcknowledgement = | "Chair of the Board of Governors" | "Vice Chair of the Board of Governors" | "Voting Seat Member of the Board of Governors" | string; export const MemberGuildRoleIDMap = { // Chair/Vice Chair of the Board of Governors CHAIR_OR_VICE_OF_BOARD: "608394038466445320", // Management MANAGEMENT: "1077646568091570236", // Director of Operations DIRECTOR_OF_OPERATIONS: "1077647072163020840", // Director of Engineering DIRECTOR_OF_ENGINEERING: "1077646956890951690", // Board of Governors BOARD_OF_GOVERNORS: "662163685439045632", // Project Manager PROJECT_MANAGER: "1077647157928132711", // Services Manager SERVICES_MANAGER: "1077647467056742482", // Staff STAFF: "446104438969466890", // Technician TECHNICIAN: "701454780828221450", // Moderator MODERATOR: "455972169449734144", // Core Team CORE_TEAM: "453689940140883988", // Intern (Training) INTERN: "701481967149121627", }; // enum for the used programming languages in whois information export enum MemberUsedLanguages { ASM = "lang-asm", CFAM = "lang-cfam", CSHARP = "lang-csharp", GO = "lang-go", JAVA = "lang-java", JS = "lang-js", KT = "lang-kt", PY = "lang-py", RB = "lang-rb", RS = "lang-rs", SWIFT = "lang-swift", TS = "lang-ts", } // enum for the used operating systems in the whois information export enum MemberUsedOperatingSystems { ARCH = "os-arch", DEB = "os-deb", CENT = "os-cent", FEDORA = "os-fedora", MDARWIN = "os-mdarwin", MANJARO = "os-manjaro", REDHAT = "os-redhat", UBUNTU = "os-ubuntu", WIN = "os-win", } export default class Member implements SharedMemberAttributes { @prop({ required: true, unique: true }) public discordID: string | undefined; @prop() public usedOperatingSystems: MemberUsedOperatingSystems[] | undefined; @prop() public usedLanguages: MemberUsedLanguages[] | undefined; @prop() public additionalAcknowledgement: MemberAdditionalAcknowledgement[] | undefined; } export const MemberModel = getModelForClass(Member);