questionnaire-answer.ts 1.1 KB

1234567891011121314151617181920212223
  1. import { Document, Model, Schema } from 'mongoose';
  2. import { IQuestionnaireAnswer } from '~/interfaces/questionnaire/questionnaire-answer';
  3. import { ObjectIdLike } from '~/server/interfaces/mongoose-utils';
  4. import { getOrCreateModel } from '~/server/util/mongoose-utils';
  5. import { answerSchema } from './schema/answer';
  6. import { growiInfoSchema } from './schema/growi-info';
  7. import { userInfoSchema } from './schema/user-info';
  8. interface QuestionnaireAnswerDocument extends IQuestionnaireAnswer<ObjectIdLike>, Document {}
  9. type QuestionnaireAnswerModel = Model<QuestionnaireAnswerDocument>
  10. const questionnaireAnswerSchema = new Schema<QuestionnaireAnswerDocument>({
  11. answers: [answerSchema],
  12. answeredAt: { type: Date, required: true },
  13. growiInfo: { type: growiInfoSchema, required: true },
  14. userInfo: { type: userInfoSchema, required: true },
  15. questionnaireOrder: { type: Schema.Types.ObjectId, ref: 'QuestionnaireOrder' },
  16. }, { timestamps: true });
  17. export default getOrCreateModel<QuestionnaireAnswerDocument, QuestionnaireAnswerModel>('QuestionnaireAnswer', questionnaireAnswerSchema);