From 4f2bba31d4f14822b8cb84820e412e3de0c3ef55 Mon Sep 17 00:00:00 2001 From: falendikategar Date: Sun, 4 Aug 2024 21:24:51 +0700 Subject: [PATCH] create: options, answers, and answerRevisions schema --- .../src/drizzle/schema/answerRevisions.ts | 24 +++++++++++++++++ apps/backend/src/drizzle/schema/answers.ts | 26 +++++++++++++++++++ apps/backend/src/drizzle/schema/options.ts | 23 ++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 apps/backend/src/drizzle/schema/answerRevisions.ts create mode 100644 apps/backend/src/drizzle/schema/answers.ts create mode 100644 apps/backend/src/drizzle/schema/options.ts diff --git a/apps/backend/src/drizzle/schema/answerRevisions.ts b/apps/backend/src/drizzle/schema/answerRevisions.ts new file mode 100644 index 0000000..f0f80ec --- /dev/null +++ b/apps/backend/src/drizzle/schema/answerRevisions.ts @@ -0,0 +1,24 @@ +import { createId } from "@paralleldrive/cuid2"; + +import { + boolean, + pgTable, + text, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { options } from "./options"; +import { answers } from "./answers"; + +export const answerRevisions = pgTable("answer_revisions", { + id: varchar("id", { length: 50 }) + .primaryKey() + .$defaultFn(() => createId()), + answerId: varchar("answerId", { length: 50 }) + .references(() => answers.id), + newOptionId: varchar("newOptionId", { length: 50 }) + .references(() => options.id), + revisedBy: varchar("revisedBy").notNull(), + newValidationInformation: text("newValidationInformation").notNull(), + createdAt: timestamp("createdAt", { mode: "date" }).defaultNow(), +}); diff --git a/apps/backend/src/drizzle/schema/answers.ts b/apps/backend/src/drizzle/schema/answers.ts new file mode 100644 index 0000000..6a8ab6d --- /dev/null +++ b/apps/backend/src/drizzle/schema/answers.ts @@ -0,0 +1,26 @@ +import { createId } from "@paralleldrive/cuid2"; +import { relations } from "drizzle-orm"; +import { + boolean, + pgTable, + text, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { options } from "./options"; +// import { assessments } from "./assessments"; + +export const answers = pgTable("answers", { + id: varchar("id", { length: 50 }) + .primaryKey() + .$defaultFn(() => createId()), + optionId: varchar("optionId", { length: 50 }) + .references(() => options.id), + // assessmentId: varchar("assessmentId", { length: 50 }) + // .references(() => assessments.id), + isFlagged: boolean("isFlagged").default(false), + filename: varchar("filename"), + validationInformation: text("validationInformation").notNull(), + createdAt: timestamp("createdAt", { mode: "date" }).defaultNow(), + updatedAt: timestamp("updatedAt", { mode: "date" }).defaultNow(), +}); diff --git a/apps/backend/src/drizzle/schema/options.ts b/apps/backend/src/drizzle/schema/options.ts new file mode 100644 index 0000000..59df2b1 --- /dev/null +++ b/apps/backend/src/drizzle/schema/options.ts @@ -0,0 +1,23 @@ +import { createId } from "@paralleldrive/cuid2"; +import { relations } from "drizzle-orm"; +import { + integer, + pgTable, + text, + timestamp, + varchar, +} from "drizzle-orm/pg-core"; +import { questions } from "./questions"; + +export const options = pgTable("options", { + id: varchar("id", { length: 50 }) + .primaryKey() + .$defaultFn(() => createId()), + questionId: varchar("questionId", { length: 50 }) + .references(() => questions.id), + text: text("text").notNull(), + score: integer("score").notNull(), + createdAt: timestamp("createdAt", { mode: "date" }).defaultNow(), + updatedAt: timestamp("updatedAt", { mode: "date" }).defaultNow(), + deletedAt: timestamp("deletedAt", { mode: "date" }), +});