P5-4335 replace canvas interior images

This commit is contained in:
Martin
2019-10-30 11:40:30 +01:00
parent 8af62f0926
commit 9b37f68e14
+73
View File
@@ -0,0 +1,73 @@
-- P5-4335 replace canvas interior images
BEGIN;
-- temp lookup table: all products that exists as both canvas and poster
DROP TABLE IF EXISTS _poster_canvas_products;
CREATE TABLE _poster_canvas_products (
canvas_print_id integer,
poster_print_id integer
);
-- populate the table with values
INSERT INTO _poster_canvas_products (canvas_print_id, poster_print_id)
SELECT canvas_print_id, poster_print_id FROM (
SELECT canvas.printid AS canvas_print_id, poster.printid AS poster_print_id
FROM "product-products" products
LEFT JOIN "product-printproducts" canvas ON products.productid = canvas.productid AND canvas.groupid = 2
LEFT JOIN "product-printproducts" poster ON products.productid = poster.productid AND poster.groupid = 7
WHERE canvas.productid IS NOT NULL AND poster.productid IS NOT NULL
) x;
--temp lookup table: poster_room to canvas_room
DROP TABLE IF EXISTS _poster_canvas_rooms;
CREATE TABLE _poster_canvas_rooms (
poster_room_id integer,
canvas_room_id integer
);
INSERT INTO _poster_canvas_rooms
SELECT poster_rooms.id, canvas_rooms.id FROM rooms poster_rooms
JOIN rooms canvas_rooms ON canvas_rooms.name LIKE REPLACE(poster_rooms.name, 'poster', 'painting')
WHERE poster_rooms.name LIKE '%poster%';
----------------------------------------------------------------------------------------------------------------
-- delete interior images from all canvases that also exists as posters. Keep own uploaded interiors
DELETE FROM interiors WHERE
print_id IN (SELECT canvas_print_id FROM _poster_canvas_products)
AND room_id IN (SELECT id FROM rooms WHERE name LIKE '%painting%');
-- -- insert new interior images (based on the images used by posters)
INSERT INTO interiors (print_id, room_id, position)
SELECT * FROM (
SELECT
_poster_canvas_products.canvas_print_id as print_id,
_poster_canvas_rooms.canvas_room_id as room_id,
poster_interiors.position as position
FROM _poster_canvas_products
JOIN interiors poster_interiors ON poster_interiors.print_id = _poster_canvas_products.poster_print_id
JOIN _poster_canvas_rooms ON poster_interiors.room_id = _poster_canvas_rooms.poster_room_id
) x;
-- move own uploaded images last
UPDATE interiors i1 SET
position = (
SELECT max(position) + 1
FROM interiors i2
WHERE i1.print_id = i2.print_id
)
WHERE i1.room_id IS NULL AND i1.print_id IN (SELECT canvas_print_id from _poster_canvas_products);
-- finally delete the temporary tables
DROP TABLE _poster_canvas_products;
DROP TABLE _poster_canvas_rooms;
COMMIT;