CREATE INDEX idx_applications_active_date ON applications(deleted_at, submitted_at DESC, id);
--> statement-breakpoint
CREATE INDEX idx_applications_active_status_date ON applications(deleted_at, status, submitted_at DESC, id);
--> statement-breakpoint
ALTER TABLE outbox_jobs ADD COLUMN locked_until TEXT;
--> statement-breakpoint
ALTER TABLE outbox_jobs ADD COLUMN lock_token TEXT;
--> statement-breakpoint
CREATE UNIQUE INDEX uq_outbox_resource ON outbox_jobs(kind, resource_id);
--> statement-breakpoint
ALTER TABLE communications ADD COLUMN message_body TEXT;
--> statement-breakpoint
ALTER TABLE communications ADD COLUMN document_request_id TEXT;
--> statement-breakpoint
CREATE TABLE admin_users(id TEXT PRIMARY KEY, username TEXT UNIQUE NOT NULL, display_name TEXT NOT NULL, email TEXT NOT NULL, password_hash TEXT NOT NULL, role TEXT NOT NULL CHECK(role IN ('ADMIN','VIEWER')), active INTEGER NOT NULL DEFAULT 1, created_at TEXT NOT NULL);
--> statement-breakpoint
CREATE TABLE admin_sessions(token_hash TEXT PRIMARY KEY, user_id TEXT NOT NULL REFERENCES admin_users(id) ON DELETE CASCADE, expires_at TEXT NOT NULL);
--> statement-breakpoint
CREATE INDEX idx_sessions_expiry ON admin_sessions(expires_at);
