from __future__ import annotations import sqlite3 from backend.database.migrations.runner import Migration def create_invite_codes(connection: sqlite3.Connection) -> None: connection.execute( """ CREATE TABLE IF NOT EXISTS invite_codes ( code TEXT PRIMARY KEY, status TEXT NOT NULL DEFAULT 'unused', note TEXT NOT NULL DEFAULT '', created_by INTEGER, created_at TEXT NOT NULL, used_by INTEGER, used_at TEXT NOT NULL DEFAULT '', revoked_at TEXT NOT NULL DEFAULT '', FOREIGN KEY (created_by) REFERENCES users(id) ON DELETE SET NULL, FOREIGN KEY (used_by) REFERENCES users(id) ON DELETE SET NULL ) """ ) connection.execute( """ CREATE INDEX IF NOT EXISTS idx_invite_codes_status ON invite_codes(status, created_at DESC) """ ) MIGRATION = Migration( version="0006", name="create_invite_codes", action=create_invite_codes, signature="invite-codes:v1:code,status,note,created,used,revoked", )