summary refs log tree commit diff
path: root/src/models/Template.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/Template.ts')
-rw-r--r--src/models/Template.ts61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/models/Template.ts b/src/models/Template.ts
new file mode 100644

index 00000000..e057edd7 --- /dev/null +++ b/src/models/Template.ts
@@ -0,0 +1,61 @@ +import { + Schema, + model, + Types, + Document +} from "mongoose"; +import db from "../util/Database"; +import { + PublicUser, + User, + UserModel, + PublicUserProjection +} from "./User"; +import { + Guild, GuildModel +} from "./Guild"; + +export interface Template extends Document { + code: string; + name: string; + description ? : string; + usage_count ? : number; + cretor_id: string; + creator: User; + created_at: Date; + updated_at: Date; + source_guild_id: String; + serialized_source_guild: Guild; +} + +export const TemplateSchema = new Schema({ + code: String, + name: String, + description: String, + usage_count: Number, + cretor_id: String, + created_at: Date, + updated_at: Date, + source_guild_id: String, +}); + +TemplateSchema.virtual("creator", { + ref: UserModel, + localField: "creator_id", + foreignField: "id", + justOne: false, + autopopulate: { + select: PublicUserProjection + }, +}); + +TemplateSchema.virtual("serialized_source_guild", { + ref: GuildModel, + localField: "source_guild_id", + foreignField: "id", + justOne: false, + autopopulate: true, +}); + +// @ts-ignore +export const TemplateModel = db.model < Template > ("Template", TemplateSchema, "templates"); \ No newline at end of file