import type { Model, Document } from 'mongoose'; import { Schema } from 'mongoose'; import { getOrCreateModel } from '~/server/util/mongoose-utils'; import type { IQuestionnaireOrder } from '../../interfaces/questionnaire-order'; import conditionSchema from './schema/condition'; import questionSchema from './schema/question'; export interface QuestionnaireOrderDocument extends IQuestionnaireOrder, Document {} export type QuestionnaireOrderModel = Model const questionnaireOrderTitleSchema = new Schema({ ja_JP: { type: String, required: true }, en_US: { type: String, required: true }, }, { _id: false }); const questionnaireOrderSchema = new Schema({ shortTitle: { type: questionnaireOrderTitleSchema, required: true }, title: { type: questionnaireOrderTitleSchema, required: true }, showFrom: { type: Date, required: true }, showUntil: { type: Date, required: true, validate: [function(value) { return this.showFrom <= value; }, 'showFrom must be before showUntil'], }, questions: [questionSchema], condition: { type: conditionSchema, required: true }, }, { timestamps: true }); export default getOrCreateModel('QuestionnaireOrder', questionnaireOrderSchema);