From e8f730c9676920776ff0e63d77b1413f8c3c3cce Mon Sep 17 00:00:00 2001 From: Matthew Date: Fri, 22 Mar 2024 00:15:45 -0400 Subject: [PATCH] add WIP Member and Partner database model classes --- database/Member.ts | 54 +++++++++++++++++++++++++++++++++++++++++ database/Partner.ts | 58 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 database/Member.ts create mode 100644 database/Partner.ts diff --git a/database/Member.ts b/database/Member.ts new file mode 100644 index 0000000..0b2361e --- /dev/null +++ b/database/Member.ts @@ -0,0 +1,54 @@ +import { prop, getModelForClass } from "@typegoose/typegoose" + +/* TODO +* Comments +* Further attributes for class +* */ + +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; + +// 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 { + @prop({ required: true, unique: true }) + public discordID: string | undefined; + + @prop() + public usedOperatingSystems: MemberUsedOperatingSystems[] | undefined; + + @prop() + public usedLanguages: MemberUsedLanguages[] | undefined; + + @prop() + public additionalAcknowledgement: MemberAdditionalAcknowledgement[] | undefined; +} diff --git a/database/Partner.ts b/database/Partner.ts new file mode 100644 index 0000000..eaf1079 --- /dev/null +++ b/database/Partner.ts @@ -0,0 +1,58 @@ +import { prop, getModelForClass } from "@typegoose/typegoose"; +import Member from "./Member"; + +/* TODO +* Comments +* Further attributes for class +* */ + +export type PartnerTitle = + "Director of Engineering" | + "Director of Operations" | + "Deputy Director of Engineering" | + "Deputy Director of Operations" | + "Services Manager" | + "Project Manager" | + "Engineering Core Partner" | + "Operations Core Partner" | + "Community Moderator" | + "Technician" | + string; + + +export enum PartnerDepartment { + INDEPENDENT_AGENCY, + ENGINEERING, // Department of Engineering + OPERATIONS // Department of Operations +} + +export enum PartnerRoleType { + MANAGERIAL, + NONMANAGERIAL, +} + +export enum PartnerCommissionType { + TENURE, + PROVISIONAL, + CONTRACTUAL, + ACTING, + INTERIM, + TRIAL, +} + +export default class Partner extends Member { + @prop({ required: true }) + public roleType: PartnerRoleType | undefined; + + @prop({ required: true }) + public commissionType: PartnerCommissionType | undefined; + + @prop({ required: true }) + public department: PartnerDepartment | undefined; + + @prop({ required: true }) + public title: PartnerTitle | "Partner" | undefined; + + @prop() + public directReport: Partner | string | undefined; +}