Files

39 lines
1.1 KiB
TypeScript

import { authTables } from '@convex-dev/auth/server';
import { defineSchema, defineTable } from 'convex/server';
import { v, VId } from 'convex/values';
const applicationTables = {
questions: defineTable({
question: v.string(),
options: v.array(v.string()),
correctAnswer: v.number(),
topic: v.string(),
difficulty: v.optional(v.string()),
explanation: v.optional(v.string()),
}).index('by_topic', ['topic']),
userProgress: defineTable({
userId: v.id('users'),
questionId: v.id('questions'),
correctCount: v.number(),
incorrectCount: v.number(),
lastAttempted: v.number(),
})
.index('by_user', ['userId'])
.index('by_user_and_question', ['userId', 'questionId']),
quizSessions: defineTable({
userId: v.id('users'),
activeQuestions: v.array(v.id('questions')),
missedQuestions: v.array(v.id('questions')),
completedQuestions: v.array(v.id('questions')),
currentQuestionIndex: v.number(),
isActive: v.boolean(),
}).index('by_user_and_active', ['userId', 'isActive']),
};
export default defineSchema({
...authTables,
...applicationTables,
});