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