From b85723d44fc0b0dc04b226f53e5e87900bc44b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arwid=20Thornstr=C3=B6m?= Date: Tue, 23 Sep 2025 14:33:41 +0200 Subject: [PATCH] Will swap rooms (#500) * Will swap rooms * correct migration number --- migrations/000.578.sql | 83 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 migrations/000.578.sql diff --git a/migrations/000.578.sql b/migrations/000.578.sql new file mode 100644 index 0000000..39fb198 --- /dev/null +++ b/migrations/000.578.sql @@ -0,0 +1,83 @@ +-- room34_wallpaper_landscape -> room113_wallpaper_standing +-- room73_wallpaper_landscape -> room121_wallpaper_standing +-- room80_wallpaper_landscape -> room120_wallpaper_standing +-- room70_wallpaper_landscape -> room116_wallpaper_standing +-- room93_wallpaper_landscape -> room124_wallpaper_standing +-- room100_wallpaper_landscape -> room117_wallpaper_standing +-- room111_wallpaper_landscape -> room118_wallpaper_standing +-- room71_wallpaper_landscape -> room114_wallpaper_standing +-- room76_wallpaper_landscape -> room131_wallpaper_standing +-- room53_wallpaper_landscape -> room132_wallpaper_standing +-- room51_wallpaper_landscape -> room128_wallpaper_standing +-- room99_wallpaper_landscape -> room118_wallpaper_standing +-- room107_wallpaper_landscape -> room115_wallpaper_standing +-- room46_wallpaper_landscape -> room126_wallpaper_standing +-- room41_wallpaper_landscape -> room130_wallpaper_standing +-- room43_wallpaper_landscape -> 50% room137_wallpaper_standing +-- room43_wallpaper_landscape -> 50% room115_wallpaper_standing + +-- Main bulk update for 1:1 room mappings +-- This updates all interiors from landscape rooms to their corresponding standing rooms +UPDATE interiors i +SET room_id = r_dst.id +FROM ( + -- Define all the 1:1 room mappings as a temporary table + VALUES + ('room34_wallpaper_landscape', 'room113_wallpaper_standing'), + ('room73_wallpaper_landscape', 'room121_wallpaper_standing'), + ('room80_wallpaper_landscape', 'room120_wallpaper_standing'), + ('room70_wallpaper_landscape', 'room116_wallpaper_standing'), + ('room93_wallpaper_landscape', 'room124_wallpaper_standing'), + ('room100_wallpaper_landscape', 'room117_wallpaper_standing'), + ('room111_wallpaper_landscape', 'room118_wallpaper_standing'), + ('room71_wallpaper_landscape', 'room114_wallpaper_standing'), + ('room76_wallpaper_landscape', 'room131_wallpaper_standing'), + ('room53_wallpaper_landscape', 'room132_wallpaper_standing'), + ('room51_wallpaper_landscape', 'room128_wallpaper_standing'), + ('room99_wallpaper_landscape', 'room118_wallpaper_standing'), + ('room107_wallpaper_landscape', 'room115_wallpaper_standing'), + ('room46_wallpaper_landscape', 'room126_wallpaper_standing'), + ('room41_wallpaper_landscape', 'room130_wallpaper_standing') +) AS mapping(src_room_name, dst_room_name) -- Create the mapping table first +JOIN rooms r_src ON r_src.name = mapping.src_room_name -- Join to source room (landscape version) +JOIN rooms r_dst ON r_dst.name = mapping.dst_room_name -- Join to destination room (standing version) +WHERE r_src.id = i.room_id -- Link interior to source room + AND i.position = 0 -- Only update position 0 interiors + AND EXISTS ( + SELECT 1 FROM "product-printproducts" ppp + WHERE ppp.printid = i.print_id AND ppp.groupid = 1 + ) -- Only change for non repeating patterns +RETURNING i.id, i.room_id AS new_room_id, r_src.name AS old_room_name, r_dst.name AS new_room_name; + +-- Special case: Split room43_wallpaper_landscape 50/50 between two destination rooms +-- First half goes to room137_wallpaper_standing +UPDATE interiors i +SET room_id = r_dst.id +FROM rooms r_src -- Source: room43_wallpaper_landscape +JOIN rooms r_dst ON r_dst.name = 'room137_wallpaper_standing' -- Destination 1 +WHERE r_src.id = i.room_id + AND r_src.name = 'room43_wallpaper_landscape' + AND i.position = 0 + AND i.id % 2 = 0 -- Use modulo to split: even IDs go to room137 + AND EXISTS ( + SELECT 1 FROM "product-printproducts" ppp + WHERE ppp.printid = i.print_id AND ppp.groupid = 1 + ) -- Only change for non repeating patterns +RETURNING i.id, i.room_id AS new_room_id, 'room43_wallpaper_landscape' AS old_room_name, 'room137_wallpaper_standing' AS new_room_name; + +-- Second half goes to room115_wallpaper_standing +UPDATE interiors i +SET room_id = r_dst.id +FROM rooms r_src -- Source: room43_wallpaper_landscape +JOIN rooms r_dst ON r_dst.name = 'room115_wallpaper_standing' -- Destination 2 +WHERE r_src.id = i.room_id + AND r_src.name = 'room43_wallpaper_landscape' + AND i.position = 0 + AND i.id % 2 = 1 -- Use modulo to split: odd IDs go to room115 + AND EXISTS ( + SELECT 1 FROM "product-printproducts" ppp + WHERE ppp.printid = i.print_id AND ppp.groupid = 1 + ) -- Only change for non repeating patterns +RETURNING i.id, i.room_id AS new_room_id, 'room43_wallpaper_landscape' AS old_room_name, 'room115_wallpaper_standing' AS new_room_name; + +