CREATE TABLE IF NOT EXISTS gateway.provider_models (
    id uuid PRIMARY KEY,
    provider_id uuid NOT NULL REFERENCES gateway.providers(id) ON DELETE CASCADE,
    provider_model_id text NOT NULL CHECK (
        length(provider_model_id) BETWEEN 1 AND 512
    ),
    owned_by text NOT NULL DEFAULT '',
    metadata jsonb NOT NULL DEFAULT '{}'::jsonb,
    enabled boolean NOT NULL DEFAULT true,
    discovered_at timestamptz NOT NULL DEFAULT clock_timestamp(),
    last_seen_at timestamptz NOT NULL DEFAULT clock_timestamp(),
    updated_at timestamptz NOT NULL DEFAULT clock_timestamp(),
    UNIQUE (provider_id, provider_model_id)
);

CREATE INDEX IF NOT EXISTS provider_models_provider_active_idx
    ON gateway.provider_models (provider_id, enabled, provider_model_id);

COMMENT ON TABLE gateway.provider_models IS
    'Provider model catalog snapshots. Missing upstream models are retained and disabled.';
