import { prop, getModelForClass, Ref } from "@typegoose/typegoose"; import Member from "./Member"; /* TODO * Comments * Further attributes for class * */ import { SharedMemberAttributes } from "./Member"; 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 implements SharedMemberAttributes { @prop({ required: true, unique: true }) public discordID: string | undefined; @prop() public emailAddress: string | undefined; @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({ ref: () => Partner }) // public directReport?: Ref | string | undefined; @prop() // this field dictates if the partner is able to perform developer commands, such as "eval" public canPerformDevCommands: boolean | undefined; } export const PartnerModel = getModelForClass(Partner);