Просмотр исходного кода

refs 119367: add questionnaireOrder to questionnareAnswer

Futa Arai 3 лет назад
Родитель
Сommit
335651ee20

+ 2 - 1
packages/app/src/interfaces/questionnaire/questionnaire-answer.ts

@@ -2,9 +2,10 @@ import { IAnswer } from './answer';
 import { IGrowiInfo } from './growi-info';
 import { IUserInfo } from './user-info';
 
-export interface IQuestionnaireAnswer {
+export interface IQuestionnaireAnswer<ID = string> {
   answers: IAnswer[]
   answeredAt: Date
   growiInfo: IGrowiInfo
   userInfo: IUserInfo
+  questionnaireOrder: ID
 }

+ 3 - 1
packages/app/src/server/models/questionnaire/questionnaire-answer.ts

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

+ 3 - 0
packages/app/src/server/routes/apiv3/questionnaire.ts

@@ -99,6 +99,7 @@ module.exports = (crowi: Crowi): Router => {
       }
       catch (err) {
         if (err.request != null) {
+          // when failed to send, save to resend in cronjob
           await ProactiveQuestionnaireAnswer.create(proactiveQuestionnaireAnswer);
         }
         else {
@@ -133,6 +134,7 @@ module.exports = (crowi: Crowi): Router => {
         userInfo,
         answers,
         answeredAt: new Date(),
+        questionnaireOrder: req.body.questionnaireOrderId,
       };
 
       try {
@@ -140,6 +142,7 @@ module.exports = (crowi: Crowi): Router => {
       }
       catch (err) {
         if (err.request != null) {
+          // when failed to send, save to resend in cronjob
           await QuestionnaireAnswer.create(questionnaireAnswer);
         }
         else {

+ 1 - 0
packages/app/test/integration/service/questionnaire-cron.test.ts

@@ -278,6 +278,7 @@ describe('QuestionnaireCronService', () => {
         type: 'general',
         userCreatedAt: new Date(),
       },
+      questionnaireOrder: '63a8354837e7aa378e16f0b1',
     };
 
     await QuestionnaireAnswer.insertMany([