-- P5-6898 Prune posters and framed print interiors

-- 1. Delete all poster interiors except first two
with poster_interiors_to_delete as (
	select id
	from interiors main
	join "product-printproducts" posters on print_id = printid and posters.groupid = 7 -- only poster products
	where room_id is not null -- only 3d interiors
	and position >= 2
	-- exclude products that also have own photos
	and not exists (select 1 from interiors o_p where o_p.print_id = main.print_id and o_p.room_id is null)
)
DELETE
	FROM interiors
	USING poster_interiors_to_delete
	WHERE interiors.id = poster_interiors_to_delete.id
;

-- 2. Delete the first two framed print interiors
with framed_print_interiors_to_delete as (
	select id
	from interiors main
	join "product-printproducts" framed_prints on print_id = printid and framed_prints.groupid = 8 -- only framed prints
	where room_id is not null -- only 3d interiors
	and position < 2
	-- exclude products that also have own photos
	and not exists (select 1 from interiors o_p where o_p.print_id = main.print_id and o_p.room_id is null)
)
DELETE
	FROM interiors
	USING framed_print_interiors_to_delete
	WHERE interiors.id = framed_print_interiors_to_delete.id
;

-- 3. Copy framed print inteiors position 3 and 4 to position 1 and 2
update interiors
set position = position - 2
from
	"product-printproducts" framedprints
where
	print_id = printid and framedprints.groupid = 8 -- only framed prints
	and position in (2,3)
	and room_id is not null -- only 3d interiors
	-- exclude prodotucts that also have own photos
	and print_id not in (select print_id from interiors where room_id is null)
;

-- 4. delete remainig framed print interiors (position 5 and up)
with framed_print_interiors_to_delete as (
	select id
	from interiors main
	join "product-printproducts" framed_prints on print_id = printid and framed_prints.groupid = 8 -- only framed prints
	where room_id is not null -- only 3d interiors
	and position >= 2
	-- exclude products that also have own photos
	and not exists (select 1 from interiors o_p where o_p.print_id = main.print_id and o_p.room_id is null)
)
DELETE
	FROM interiors
	USING framed_print_interiors_to_delete
	WHERE interiors.id = framed_print_interiors_to_delete.id
;

-- 5. When framed print product has no interiors at all: copy first poster interior
with framed_prints_without_interiors as (
	select productid, printid from "product-printproducts" where groupid = 8
	and not exists (select 1 from interiors where print_id = printid)
), matching_poster_interiors as (
	select
		framed_print.productid productid,
		framed_print.printid fp_printid,
		replace(rooms.name, 'poster', 'framed-print') fp_room_name
	from
		framed_prints_without_interiors framed_print
		join "product-printproducts" poster on framed_print.productid = poster.productid and poster.groupid = 7
		join interiors poster_interiors on poster.printid = poster_interiors.print_id and position = 0 and room_id is not null
		join rooms on room_id = rooms.id
)
INSERT INTO interiors (print_id, position, room_id)
	SELECT fp_printid, 0, (select id from rooms where name = fp_room_name)
	FROM matching_poster_interiors
;

