Ctrl K
ComunidadGuías…

deploy/migrations/0093_official_star_gift_attributes.down.sql

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
DO $$
BEGIN
    IF EXISTS (
        SELECT 1 FROM public.star_gift_collectible_models
        WHERE rarity_kind <> 'permille' OR crafted
    ) THEN
        RAISE EXCEPTION 'cannot downgrade while categorical/crafted collectible models exist';
    END IF;
END;
$$;

DROP INDEX IF EXISTS public.star_gift_catalog_revisions_official_source_idx;

ALTER TABLE public.star_gift_collectible_backdrops
    DROP CONSTRAINT star_gift_collectible_backdrop_rarity_check,
    ALTER COLUMN rarity_permille SET NOT NULL,
    DROP COLUMN rarity_kind,
    ADD CONSTRAINT star_gift_collectible_backdrop_rarity_check CHECK (rarity_permille BETWEEN 1 AND 1000);

ALTER TABLE public.star_gift_collectible_patterns
    DROP CONSTRAINT star_gift_collectible_pattern_official_document_check,
    DROP CONSTRAINT star_gift_collectible_pattern_rarity_check,
    ALTER COLUMN rarity_permille SET NOT NULL,
    DROP COLUMN official_document_id,
    DROP COLUMN rarity_kind,
    ADD CONSTRAINT star_gift_collectible_pattern_rarity_check CHECK (rarity_permille BETWEEN 1 AND 1000);

ALTER TABLE public.star_gift_collectible_models
    DROP CONSTRAINT star_gift_collectible_model_official_document_check,
    DROP CONSTRAINT star_gift_collectible_model_rarity_check,
    ALTER COLUMN rarity_permille SET NOT NULL,
    DROP COLUMN official_document_id,
    DROP COLUMN crafted,
    DROP COLUMN rarity_kind,
    ADD CONSTRAINT star_gift_collectible_model_rarity_check CHECK (rarity_permille BETWEEN 1 AND 1000);

ALTER TABLE public.star_gift_collectible_revisions
    DROP CONSTRAINT star_gift_collectible_official_source_check,
    DROP COLUMN source_manifest_sha256,
    DROP COLUMN official_gift_id;

ALTER TABLE public.star_gift_catalog_revisions
    DROP CONSTRAINT star_gift_catalog_official_source_check,
    DROP COLUMN official_source,
    DROP COLUMN source_manifest_sha256,
    DROP COLUMN official_gift_id;

CREATE OR REPLACE FUNCTION public.telesrv_guard_collectible_revision() RETURNS trigger
    LANGUAGE plpgsql AS $$
BEGIN
    IF TG_OP = 'DELETE' THEN
        IF OLD.status = 'published' THEN
            RAISE EXCEPTION 'published collectible revision is immutable';
        END IF;
        RETURN OLD;
    END IF;

    IF OLD.status = 'published' THEN
        IF NEW.gift_id <> OLD.gift_id OR NEW.revision <> OLD.revision OR
           NEW.upgrade_stars <> OLD.upgrade_stars OR NEW.supply_total <> OLD.supply_total OR
           NEW.slug_prefix <> OLD.slug_prefix OR NEW.status <> OLD.status OR
           NEW.created_by <> OLD.created_by OR NEW.command_id <> OLD.command_id OR
           NEW.created_at <> OLD.created_at OR NEW.published_at <> OLD.published_at THEN
            RAISE EXCEPTION 'published collectible revision is immutable';
        END IF;
        IF NEW.issued <> OLD.issued + 1 THEN
            RAISE EXCEPTION 'published collectible issuance must advance exactly once';
        END IF;
    END IF;
    RETURN NEW;
END;
$$;