diff --git a/apps/builder/src/features/results/api/getResult.ts b/apps/builder/src/features/results/api/getResult.ts index 211400768..46b2f73a6 100644 --- a/apps/builder/src/features/results/api/getResult.ts +++ b/apps/builder/src/features/results/api/getResult.ts @@ -76,12 +76,14 @@ export const getResult = authenticatedProcedure select: { blockId: true, content: true, + createdAt: true, }, }, answersV2: { select: { blockId: true, content: true, + createdAt: true, }, }, }, @@ -95,7 +97,9 @@ export const getResult = authenticatedProcedure return { result: resultWithAnswersSchema.parse({ ...result, - answers: answers.concat(answersV2), + answers: answers + .concat(answersV2) + .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()), }), } }) diff --git a/apps/builder/src/features/results/api/getResults.ts b/apps/builder/src/features/results/api/getResults.ts index de7e33634..da997d597 100644 --- a/apps/builder/src/features/results/api/getResults.ts +++ b/apps/builder/src/features/results/api/getResults.ts @@ -109,12 +109,14 @@ export const getResults = authenticatedProcedure select: { blockId: true, content: true, + createdAt: true, }, }, answersV2: { select: { blockId: true, content: true, + createdAt: true, }, }, }, @@ -127,11 +129,14 @@ export const getResults = authenticatedProcedure } return { - results: z - .array(resultWithAnswersSchema) - .parse( - results.map((r) => ({ ...r, answers: r.answersV2.concat(r.answers) })) - ), + results: z.array(resultWithAnswersSchema).parse( + results.map((r) => ({ + ...r, + answers: r.answersV2 + .concat(r.answers) + .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()), + })) + ), nextCursor, } }) diff --git a/packages/bot-engine/blocks/logic/setVariable/executeSetVariable.ts b/packages/bot-engine/blocks/logic/setVariable/executeSetVariable.ts index 36def21c1..7f1a9d320 100644 --- a/packages/bot-engine/blocks/logic/setVariable/executeSetVariable.ts +++ b/packages/bot-engine/blocks/logic/setVariable/executeSetVariable.ts @@ -261,12 +261,14 @@ const parseResultTranscriptProps = async ( select: { blockId: true, content: true, + createdAt: true, }, }, answersV2: { select: { blockId: true, content: true, + createdAt: true, }, }, setVariableHistory: { @@ -281,7 +283,9 @@ const parseResultTranscriptProps = async ( }) if (!result) return return { - answers: result.answersV2.concat(result.answers), + answers: result.answersV2 + .concat(result.answers) + .sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime()), setVariableHistory: ( result.setVariableHistory as SetVariableHistoryItem[] ).sort((a, b) => a.index - b.index), diff --git a/packages/prisma/mysql/schema.prisma b/packages/prisma/mysql/schema.prisma index 8b4ca404b..4d9e47f01 100644 --- a/packages/prisma/mysql/schema.prisma +++ b/packages/prisma/mysql/schema.prisma @@ -320,11 +320,12 @@ model Answer { } model AnswerV2 { - id Int @id @default(autoincrement()) - blockId String - content String @db.Text - resultId String - result Result @relation(fields: [resultId], references: [id], onDelete: Cascade) + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + blockId String + content String @db.Text + resultId String + result Result @relation(fields: [resultId], references: [id], onDelete: Cascade) @@index([resultId]) @@index([blockId]) diff --git a/packages/prisma/postgresql/migrations/20240522133715_add_created_at_in_answerv2/migration.sql b/packages/prisma/postgresql/migrations/20240522133715_add_created_at_in_answerv2/migration.sql new file mode 100644 index 000000000..ab56eb955 --- /dev/null +++ b/packages/prisma/postgresql/migrations/20240522133715_add_created_at_in_answerv2/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "AnswerV2" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/packages/prisma/postgresql/schema.prisma b/packages/prisma/postgresql/schema.prisma index def5470eb..ca3659c83 100644 --- a/packages/prisma/postgresql/schema.prisma +++ b/packages/prisma/postgresql/schema.prisma @@ -300,11 +300,12 @@ model Answer { } model AnswerV2 { - id Int @id @default(autoincrement()) - blockId String - content String - resultId String - result Result @relation(fields: [resultId], references: [id], onDelete: Cascade) + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) + blockId String + content String + resultId String + result Result @relation(fields: [resultId], references: [id], onDelete: Cascade) @@index([blockId]) }