33 lines
1.6 KiB
TypeScript
33 lines
1.6 KiB
TypeScript
import { sql } from "drizzle-orm";
|
|
import { primaryKey, sqliteTable, text } from "drizzle-orm/sqlite-core";
|
|
export const progress = sqliteTable("progress", {
|
|
userId: text("user_id").notNull(),
|
|
planDate: text("plan_date").notNull(),
|
|
doneTasks: text("done_tasks").notNull().default("[]"),
|
|
mood: text("mood").notNull().default(""),
|
|
note: text("note").notNull().default(""),
|
|
checkinType: text("checkin_type").notNull().default("normal"),
|
|
checkedAt: text("checked_at").notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
updatedAt: text("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
}, (t) => [primaryKey({ columns: [t.userId, t.planDate] })]);
|
|
|
|
export const studyDays = sqliteTable("study_days", {
|
|
userId: text("user_id").notNull(),
|
|
planDate: text("plan_date").notNull(),
|
|
durations: text("durations").notNull().default("{}"),
|
|
weeklyReview: text("weekly_review").notNull().default(""),
|
|
nextFocus: text("next_focus").notNull().default(""),
|
|
updatedAt: text("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
}, (t) => [primaryKey({ columns: [t.userId, t.planDate] })]);
|
|
|
|
export const mockExams = sqliteTable("mock_exams", {
|
|
userId: text("user_id").notNull(),
|
|
examDate: text("exam_date").notNull(),
|
|
listening: text("listening").notNull().default(""),
|
|
reading: text("reading").notNull().default(""),
|
|
writing: text("writing").notNull().default(""),
|
|
translation: text("translation").notNull().default(""),
|
|
note: text("note").notNull().default(""),
|
|
updatedAt: text("updated_at").notNull().default(sql`CURRENT_TIMESTAMP`),
|
|
}, (t) => [primaryKey({ columns: [t.userId, t.examDate] })]);
|