| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- -- Keep mixed-version writers consistent before backfilling rows that already exist.
- CREATE OR REPLACE FUNCTION public.enforce_openai_long_context_billing_extra()
- RETURNS TRIGGER
- LANGUAGE plpgsql
- AS $$
- DECLARE
- parent_effective_value JSONB;
- BEGIN
- IF NEW.platform IS DISTINCT FROM 'openai' THEN
- RETURN NEW;
- END IF;
- NEW.extra := COALESCE(NEW.extra, '{}'::jsonb);
- IF NEW.parent_account_id IS NOT NULL AND NEW.quota_dimension = 'spark' THEN
- SELECT CASE
- WHEN parent.platform IS DISTINCT FROM 'openai' THEN 'false'::jsonb
- WHEN NOT (COALESCE(parent.extra, '{}'::jsonb) ? 'openai_long_context_billing_enabled') THEN 'false'::jsonb
- WHEN jsonb_typeof(parent.extra->'openai_long_context_billing_enabled') = 'boolean'
- THEN parent.extra->'openai_long_context_billing_enabled'
- ELSE 'false'::jsonb
- END
- INTO parent_effective_value
- FROM accounts AS parent
- WHERE parent.id = NEW.parent_account_id;
- NEW.extra := jsonb_set(
- NEW.extra,
- '{openai_long_context_billing_enabled}',
- COALESCE(parent_effective_value, 'false'::jsonb),
- true
- );
- ELSIF NOT (NEW.extra ? 'openai_long_context_billing_enabled')
- AND TG_OP = 'UPDATE'
- AND OLD.platform = 'openai'
- AND jsonb_typeof(OLD.extra->'openai_long_context_billing_enabled') = 'boolean' THEN
- NEW.extra := jsonb_set(
- NEW.extra,
- '{openai_long_context_billing_enabled}',
- OLD.extra->'openai_long_context_billing_enabled',
- true
- );
- ELSIF NOT (NEW.extra ? 'openai_long_context_billing_enabled') THEN
- NEW.extra := jsonb_set(
- NEW.extra,
- '{openai_long_context_billing_enabled}',
- 'false'::jsonb,
- true
- );
- END IF;
- IF jsonb_typeof(NEW.extra->'openai_long_context_billing_enabled') IS DISTINCT FROM 'boolean' THEN
- RAISE EXCEPTION 'openai_long_context_billing_enabled must be a boolean'
- USING ERRCODE = '22023';
- END IF;
- RETURN NEW;
- END;
- $$;
- CREATE OR REPLACE FUNCTION public.propagate_openai_long_context_billing_extra_to_shadows()
- RETURNS TRIGGER
- LANGUAGE plpgsql
- AS $$
- BEGIN
- WITH updated_shadows AS (
- UPDATE accounts AS shadow
- SET extra = jsonb_set(
- COALESCE(shadow.extra, '{}'::jsonb),
- '{openai_long_context_billing_enabled}',
- NEW.extra->'openai_long_context_billing_enabled',
- true
- )
- WHERE shadow.parent_account_id = NEW.id
- AND shadow.platform = 'openai'
- AND shadow.quota_dimension = 'spark'
- AND shadow.extra->'openai_long_context_billing_enabled'
- IS DISTINCT FROM NEW.extra->'openai_long_context_billing_enabled'
- RETURNING shadow.id
- )
- INSERT INTO scheduler_outbox (event_type, account_id)
- SELECT 'account_changed', id
- FROM updated_shadows;
- RETURN NULL;
- END;
- $$;
- DROP TRIGGER IF EXISTS accounts_enforce_openai_long_context_billing_extra ON accounts;
- CREATE TRIGGER accounts_enforce_openai_long_context_billing_extra
- BEFORE INSERT OR UPDATE OF platform, extra, parent_account_id, quota_dimension
- ON accounts
- FOR EACH ROW
- EXECUTE FUNCTION public.enforce_openai_long_context_billing_extra();
- DROP TRIGGER IF EXISTS accounts_propagate_openai_long_context_billing_extra ON accounts;
- CREATE TRIGGER accounts_propagate_openai_long_context_billing_extra
- AFTER UPDATE OF platform, extra
- ON accounts
- FOR EACH ROW
- WHEN (
- NEW.platform = 'openai'
- AND NEW.parent_account_id IS NULL
- AND (
- OLD.platform IS DISTINCT FROM NEW.platform
- OR OLD.extra->'openai_long_context_billing_enabled'
- IS DISTINCT FROM NEW.extra->'openai_long_context_billing_enabled'
- )
- )
- EXECUTE FUNCTION public.propagate_openai_long_context_billing_extra_to_shadows();
- UPDATE accounts
- SET extra = jsonb_set(
- COALESCE(extra, '{}'::jsonb),
- '{openai_long_context_billing_enabled}',
- 'false'::jsonb,
- true
- )
- WHERE platform = 'openai'
- AND COALESCE(extra, '{}'::jsonb) ? 'openai_long_context_billing_enabled'
- AND jsonb_typeof(extra->'openai_long_context_billing_enabled') IS DISTINCT FROM 'boolean';
- UPDATE accounts
- SET extra = jsonb_set(
- COALESCE(extra, '{}'::jsonb),
- '{openai_long_context_billing_enabled}',
- 'false'::jsonb,
- true
- )
- WHERE platform = 'openai'
- AND parent_account_id IS NULL
- AND NOT (COALESCE(extra, '{}'::jsonb) ? 'openai_long_context_billing_enabled');
- WITH shadow_values AS (
- SELECT
- shadow.id,
- CASE
- WHEN parent.platform IS DISTINCT FROM 'openai' THEN 'false'::jsonb
- WHEN NOT (COALESCE(parent.extra, '{}'::jsonb) ? 'openai_long_context_billing_enabled') THEN 'false'::jsonb
- WHEN jsonb_typeof(parent.extra->'openai_long_context_billing_enabled') = 'boolean'
- THEN parent.extra->'openai_long_context_billing_enabled'
- ELSE 'false'::jsonb
- END AS effective_value
- FROM accounts AS shadow
- JOIN accounts AS parent ON parent.id = shadow.parent_account_id
- WHERE shadow.platform = 'openai'
- AND shadow.quota_dimension = 'spark'
- ),
- updated_shadows AS (
- UPDATE accounts AS shadow
- SET extra = jsonb_set(
- COALESCE(shadow.extra, '{}'::jsonb),
- '{openai_long_context_billing_enabled}',
- shadow_values.effective_value,
- true
- )
- FROM shadow_values
- WHERE shadow.id = shadow_values.id
- AND shadow.extra->'openai_long_context_billing_enabled'
- IS DISTINCT FROM shadow_values.effective_value
- RETURNING shadow.id
- )
- INSERT INTO scheduler_outbox (event_type, account_id)
- SELECT 'account_changed', id
- FROM updated_shadows;
|