-- P5-877
-- Table: public.rooms
/*
DROP TABLE IF EXISTS public.interiors;
DROP TABLE IF EXISTS public.rooms;
DROP INDEX IF EXISTS public.interiors_print_id_idx;
*/

CREATE TABLE IF NOT EXISTS public.rooms
(
    id SERIAL NOT NULL,
    name CHARACTER VARYING(255) NOT NULL,

    CONSTRAINT rooms_pkey PRIMARY KEY (id)
);

DROP INDEX IF EXISTS rooms_name_idx;

CREATE UNIQUE INDEX rooms_name_idx
    ON public.rooms (name);


CREATE TABLE IF NOT EXISTS public.interiors
(
    id SERIAL NOT NULL,
    print_id INTEGER NOT NULL,
    room_id INTEGER,
    "position" SMALLINT NOT NULL DEFAULT 0,
    create_date TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),

    CONSTRAINT interiors_pkey PRIMARY KEY (id),
    CONSTRAINT interiors_print_id_fkey FOREIGN KEY (print_id)
        REFERENCES public."product-printproducts" (printid) ON DELETE CASCADE,
    CONSTRAINT interiors_room_id_fkey FOREIGN KEY (room_id)
        REFERENCES public.rooms (id) ON DELETE RESTRICT
);

-- COVERING INDEX FOR print_id foreign key
DROP INDEX IF EXISTS interiors_print_id_idx;

CREATE INDEX interiors_print_id_idx
    ON public.interiors (print_id);

DROP INDEX IF EXISTS interiors_print_id_room_id_idx;

CREATE UNIQUE INDEX interiors_print_id_room_id_idx
    ON public.interiors (print_id, room_id);


INSERT INTO public.rooms (id, name) VALUES
    (1, 'room01_painting_landscape'),
    (2, 'room01_painting_square'),
    (3, 'room01_painting_standing'),
    (4, 'room01_wallpaper_landscape'),
    (5, 'room02_painting_landscape'),
    (6, 'room02_painting_square'),
    (7, 'room02_painting_standing'),
    (8, 'room02_wallpaper_landscape'),
    (9, 'room02_wallpaper_square'),
    (10, 'room02_wallpaper_standing'),
    (11, 'room03_painting_landscape'),
    (12, 'room03_painting_square'),
    (13, 'room03_painting_standing'),
    (14, 'room03_wallpaper_landscape'),
    (15, 'room03_wallpaper_square'),
    (16, 'room03_wallpaper_standing')
;