mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-23 08:06:42 +02:00
Feat: Login localization, design, märchenzauber feature complete webapp
This commit is contained in:
parent
9c584a2580
commit
84f9343d25
47 changed files with 3254 additions and 175 deletions
47
packages/manadeck-database/src/schema/studySessions.ts
Normal file
47
packages/manadeck-database/src/schema/studySessions.ts
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import {
|
||||
pgTable,
|
||||
uuid,
|
||||
varchar,
|
||||
integer,
|
||||
timestamp,
|
||||
index,
|
||||
pgEnum,
|
||||
} from 'drizzle-orm/pg-core';
|
||||
import { relations } from 'drizzle-orm';
|
||||
import { decks } from './decks';
|
||||
|
||||
// Study mode enum
|
||||
export const studyModeEnum = pgEnum('study_mode', ['all', 'new', 'review', 'favorites', 'random']);
|
||||
|
||||
export const studySessions = pgTable(
|
||||
'study_sessions',
|
||||
{
|
||||
id: uuid('id').primaryKey().defaultRandom(),
|
||||
deckId: uuid('deck_id')
|
||||
.notNull()
|
||||
.references(() => decks.id, { onDelete: 'cascade' }),
|
||||
userId: uuid('user_id').notNull(),
|
||||
mode: studyModeEnum('mode').notNull(),
|
||||
totalCards: integer('total_cards').notNull().default(0),
|
||||
completedCards: integer('completed_cards').notNull().default(0),
|
||||
correctCards: integer('correct_cards').notNull().default(0),
|
||||
startedAt: timestamp('started_at', { withTimezone: true }).defaultNow().notNull(),
|
||||
completedAt: timestamp('completed_at', { withTimezone: true }),
|
||||
timeSpentSeconds: integer('time_spent_seconds').default(0).notNull(),
|
||||
},
|
||||
(table) => [
|
||||
index('idx_study_sessions_user_id').on(table.userId),
|
||||
index('idx_study_sessions_deck_id').on(table.deckId),
|
||||
index('idx_study_sessions_started_at').on(table.startedAt),
|
||||
]
|
||||
);
|
||||
|
||||
export const studySessionsRelations = relations(studySessions, ({ one }) => ({
|
||||
deck: one(decks, {
|
||||
fields: [studySessions.deckId],
|
||||
references: [decks.id],
|
||||
}),
|
||||
}));
|
||||
|
||||
export type StudySession = typeof studySessions.$inferSelect;
|
||||
export type NewStudySession = typeof studySessions.$inferInsert;
|
||||
Loading…
Add table
Add a link
Reference in a new issue