/
dupleymi-amp
/
sql-trainer
Обзор
Документация
Войти
/
dupleymi-amp
/
sql-trainer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/lib/store/database-slice.ts
74 строки
2 KB
Maxim Dupley
refactor: extract MS_PER_DAY constant, fix store duplication, improve a11y
17 июл 2026, 13:31
17 июл 2026, 13:31
7ca17ed
Код
Авторство
О чём код?
/** * Database & Editor slice — manages DB type, editor content, and query results. */ import type { StateCreator } from 'zustand'; import type { DbType } from '@/lib/training-tasks'; export interface QueryResult { success: boolean; columns: string[]; rows: Record<string, unknown>[]; error?: string; executionTime: number; message?: string; suggestion?: string; } export interface VerificationResult { verified: boolean; userRowCount: number; expectedRowCount: number; message: string; } export interface DatabaseSlice { // Database dbType: DbType; setDbType: (type: DbType) => void; // Current task currentTaskId: string | null; setCurrentTaskId: (id: string | null) => void; // Editor editorContent: string; setEditorContent: (content: string) => void; // Query results lastResult: QueryResult | null; setLastResult: (result: QueryResult | null) => void; // Verification verification: VerificationResult | null; setVerification: (result: VerificationResult | null) => void; // Execution state isExecuting: boolean; setIsExecuting: (executing: boolean) => void; } export const createDatabaseSlice: StateCreator<DatabaseSlice, [], [], DatabaseSlice> = (set) => ({ dbType: 'sqlite', setDbType: (type) => set({ dbType: type, editorContent: '', lastResult: null, verification: null }), currentTaskId: null, setCurrentTaskId: (id) => set({ currentTaskId: id, editorContent: '', lastResult: null, verification: null, }), editorContent: '', setEditorContent: (content) => set({ editorContent: content }), lastResult: null, setLastResult: (result) => set({ lastResult: result }), verification: null, setVerification: (result) => set({ verification: result }), isExecuting: false, setIsExecuting: (executing) => set({ isExecuting: executing }), });