23 lines
1.1 KiB
TypeScript
23 lines
1.1 KiB
TypeScript
import { pgTable, uuid, text, integer, timestamp } from 'drizzle-orm/pg-core';
|
|
import { jsonb } from 'drizzle-orm/pg-core';
|
|
import { stackEnum, levelEnum, questionTypeEnum, questionStatusEnum, questionSourceEnum } from './enums.js';
|
|
|
|
export const questionBank = pgTable('question_bank', {
|
|
id: uuid('id').primaryKey().defaultRandom(),
|
|
stack: stackEnum('stack').notNull(),
|
|
level: levelEnum('level').notNull(),
|
|
type: questionTypeEnum('type').notNull(),
|
|
questionText: text('question_text').notNull(),
|
|
options: jsonb('options').$type<Array<{ key: string; text: string }>>(),
|
|
correctAnswer: jsonb('correct_answer').$type<string | string[]>().notNull(),
|
|
explanation: text('explanation').notNull(),
|
|
status: questionStatusEnum('status').notNull().default('pending'),
|
|
source: questionSourceEnum('source').notNull(),
|
|
usageCount: integer('usage_count').notNull().default(0),
|
|
createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
|
|
approvedAt: timestamp('approved_at', { withTimezone: true }),
|
|
});
|
|
|
|
export type QuestionBank = typeof questionBank.$inferSelect;
|
|
export type NewQuestionBank = typeof questionBank.$inferInsert;
|