CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS files ( id TEXT PRIMARY KEY, user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE, original_name TEXT NOT NULL, mime_type TEXT NOT NULL, size INTEGER NOT NULL, stored_name TEXT NOT NULL, created_at TEXT DEFAULT (datetime('now')) ); CREATE TABLE IF NOT EXISTS login_attempts ( username TEXT PRIMARY KEY, failed_count INTEGER NOT NULL DEFAULT 0, last_failed_at TEXT, locked_until TEXT ); CREATE INDEX IF NOT EXISTS idx_login_attempts_locked_until ON login_attempts(locked_until);