infoalloggi-monorepo/apps/db/migrations/57_mediatable.up.sql

68 lines
1.9 KiB
MySQL
Raw Normal View History

2026-05-22 15:49:28 +02:00
-- Media Refs
CREATE TABLE IF NOT EXISTS public.media_refs (
codice TEXT NOT NULL,
ordine INTEGER NOT NULL,
storage_id UUID NOT NULL,
og_url TEXT NOT NULL,
media_type TEXT NOT NULL CHECK (media_type IN ('image', 'video')),
is_thumbnail BOOLEAN NOT NULL DEFAULT FALSE
);
-- Indexes
CREATE INDEX IF NOT EXISTS idx_media_refs_codice ON public.media_refs (codice);
CREATE INDEX IF NOT EXISTS idx_media_refs_storage_id ON public.media_refs (storage_id);
-- Unique Codice and Ordine
DO $$ BEGIN IF NOT EXISTS (
SELECT 1
FROM pg_constraint
WHERE conname = 'media_refs_unique'
) THEN
ALTER TABLE public.media_refs
ADD CONSTRAINT media_refs_unique UNIQUE (codice, ordine, is_thumbnail, media_type);
END IF;
END $$;
-- Foreign Key to Annunci
DO $$ BEGIN IF NOT EXISTS (
SELECT 1
FROM pg_constraint
WHERE conname = 'media_refs_annuncio'
) THEN
ALTER TABLE public.media_refs
ADD CONSTRAINT media_refs_annuncio FOREIGN KEY (codice) REFERENCES public.annunci (codice) ON UPDATE CASCADE ON DELETE CASCADE;
END IF;
END $$;
--Foreign Key to Storage
DO $$ BEGIN IF NOT EXISTS (
SELECT 1
FROM pg_constraint
WHERE conname = 'media_refs_storage'
) THEN
ALTER TABLE public.media_refs
ADD CONSTRAINT media_refs_storage FOREIGN KEY (storage_id) REFERENCES public.storage (id) ON UPDATE CASCADE ON DELETE CASCADE;
END IF;
END $$;
2026-05-26 10:42:00 +02:00
-- DO $$
-- BEGIN
-- IF EXISTS (
-- SELECT FROM information_schema.tables
-- WHERE table_schema = 'public'
-- AND table_name = 'media_refs'
-- ) THEN
-- EXECUTE '
-- DELETE FROM public.storage s
-- WHERE s.tag IS NOT NULL
-- AND NOT EXISTS (
-- SELECT 1
-- FROM public.media_refs m
-- WHERE s.id = m.storage_id
-- );
-- ';
-- END IF;
-- END $$;
2026-05-22 15:49:28 +02:00
-- Drop Tables if they exist
DROP TABLE IF EXISTS public.images_refs;
DROP TABLE IF EXISTS public.videos_refs;