setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); $pdo->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); $pdo->exec('PRAGMA foreign_keys = ON'); $pdo->exec('PRAGMA busy_timeout = 5000'); $pdo->exec('PRAGMA journal_mode = WAL'); createSchema($pdo); return $pdo; } function createSchema(PDO $pdo): void { $pdo->exec( <<<'SQL' CREATE TABLE IF NOT EXISTS kanban_tasks ( id INTEGER PRIMARY KEY AUTOINCREMENT, column_id INTEGER NOT NULL CHECK (column_id BETWEEN 1 AND 6), position INTEGER NOT NULL DEFAULT 0, assign_to TEXT NOT NULL DEFAULT 'me', content TEXT NOT NULL, description TEXT, tags TEXT, color TEXT NOT NULL DEFAULT 'yellow', due_at TEXT, start_date TEXT, priority INTEGER NOT NULL DEFAULT 0 CHECK (priority BETWEEN 0 AND 10), complexity INTEGER NOT NULL DEFAULT 0 CHECK (complexity BETWEEN 0 AND 10), estimate_hours REAL, time_spent_hours REAL, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_kanban_tasks_column_position ON kanban_tasks (column_id, position); SQL ); }