P5-4335 replace canvas interior images
This commit is contained in:
@@ -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;
|
||||
Reference in New Issue
Block a user