Files
lettersoup-online/002_source/cms/src/db/QuizLPQuestions/_GUIDELINES.md
louiscklaw 7105bc85e3 update,
2025-05-08 14:38:34 +08:00

1.9 KiB

GUIDELINES

This folder contains drivers for QuizLPQuestion/QuizLPQuestions records using PocketBase:

File Structure

  • create (Create.tsx)
  • read (GetById.tsx)
  • write (Update.tsx)
  • count (GetAllCount.tsx)
  • delete (Delete.tsx)
  • list (GetAll.tsx)
  • validation (validateQuestion.tsx)

Complete Implementation Template

import { pb } from '@/lib/pb';
import { COL_QUIZ_LP_QUESTIONS } from '@/constants';
import type { QuizLPQuestion, CreateFormProps } from './type.d.ts';

export async function createQuizLPQuestion(data: CreateFormProps): Promise<QuizLPQuestion> {
  return pb.collection(COL_QUIZ_LP_QUESTIONS).create(data);
}

Question-Specific Handling

Answer Validation

export function validateLPQuestionAnswer(question: QuizLPQuestion, answer: string): boolean {
  // Implement LP question specific validation
  return question.correctAnswer === answer;
}

Type Definitions

interface QuizLPQuestion {
  id: string;
  question: string;
  options: string[];
  correctAnswer: string;
  categoryId: string;
  difficulty: 'easy'|'medium'|'hard';
}

Common Patterns

// Get questions by category
export async function getQuestionsByCategory(categoryId: string) {
  return pb.collection(COL_QUIZ_LP_QUESTIONS)
    .getFullList({ filter: `categoryId = "${categoryId}"` });
}

// Validate before create
export async function createValidatedQuestion(data: CreateFormProps) {
  if (!validateQuestionData(data)) throw new Error('Invalid question data');
  return createQuizLPQuestion(data);
}

Performance Considerations

  • Add index on: categoryId, difficulty
  • Consider pagination for large question sets
  • Cache frequently accessed questions

Testing Guidelines

Recommended test cases:

  • Basic CRUD operations
  • Answer validation
  • Category filtering
  • Difficulty level queries
  • Error cases (invalid data)