P5-6898 Reduce framed print and poster interiors (#209)
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
-- 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
|
||||||
|
;
|
||||||
|
|
||||||
Reference in New Issue
Block a user