@@ -4,6 +4,16 @@ CREATE SCHEMA IF NOT EXISTS synchronizer;
44-- The sources of items in the loadout.
55CREATE TYPE synchronizer .ItemType AS ENUM (' Loadout' , ' Game' , ' Deleted' , ' Intrinsic' );
66
7+ -- Gets all loadout item groups and their enabled state
8+ CREATE OR REPLACE MACRO synchronizer .LoadoutGroups (db) AS TABLE
9+ SELECT
10+ loadout_item_group.* ,
11+ loadout_item_group .Disabled = FALSE
12+ AND COALESCE(collection_group .Disabled , FALSE) = FALSE AS IsEnabled
13+ FROM
14+ MDB_LOADOUTITEMGROUP (Db => db) loadout_item_group
15+ LEFT JOIN MDB_COLLECTIONGROUP (Db => db) collection_group ON loadout_item_group .Parent = collection_group .Id ;
16+
717-- All leaf loadout items with a target path
818CREATE OR REPLACE MACRO synchronizer .LeafLoadoutItems (db) AS TABLE
919SELECT
@@ -33,11 +43,11 @@ SELECT
3343 arg_max(loadout_item .TargetPath , coalesce(group_priority .Priority , 0 )) AS TargetPath,
3444 arg_max(loadout_item .Hash , coalesce(group_priority .Priority , 0 )) AS Hash,
3545 arg_max(loadout_item .Size , coalesce(group_priority .Priority , 0 )) AS Size,
36- arg_max(loadout_item .IsEnabled , coalesce(group_priority .Priority , 0 )) AS IsEnabled,
3746 arg_max(loadout_item .IsDeleted , coalesce(group_priority .Priority , 0 )) AS IsDeleted
3847FROM
3948 synchronizer .LeafLoadoutItems (db) loadout_item
4049 LEFT JOIN MDB_LOADOUTITEMGROUPPRIORITY(DB => db) group_priority ON loadout_item .Parent = group_priority .Target
50+ WHERE loadout_item .IsEnabled
4151GROUP BY loadout_item .Loadout , loadout_item .TargetPath .Item2, loadout_item .TargetPath .Item3;
4252
4353-- All the files in the overrides group
@@ -75,7 +85,6 @@ WITH all_files AS
7585 (CASE WHEN loadout_item .IsDeleted THEN ' Deleted' ELSE ' Loadout' END)::synchronizer .ItemType ItemType,
7686 1 Layer
7787 FROM synchronizer .WinningLeafLoadoutItem (db) loadout_item
78- WHERE loadout_item .IsEnabled
7988 UNION
8089 -- Override files on Layer 2
8190 SELECT
132141 synchronizer .LeafLoadoutItems (db) loadout_item
133142 LEFT JOIN MDB_LOADOUTITEMGROUPPRIORITY (Db => db) priority ON priority .Target = loadout_item .Parent
134143WHERE
135- priority .Id IS NOT NULL
144+ priority .Id IS NOT NULL AND loadout_item . IsEnabled
136145GROUP BY loadout_item .Loadout , loadout_item .TargetPath .Item2, loadout_item .TargetPath .Item3
137146HAVING count (DISTINCT loadout_item .Hash ) > 1 ;
138147
@@ -152,11 +161,13 @@ WITH
152161 )
153162SELECT
154163 priority.* ,
155- row_number() OVER (PARTITION BY Loadout ORDER BY Priority) AS Index,
156- lead(priority .Id , - 1 , 0 ) OVER (PARTITION BY Loadout ORDER BY Priority) As Prev,
157- lead(priority .Id , 1 , 0 ) OVER (PARTITION BY Loadout ORDER BY Priority) As Next,
164+ row_number() OVER (PARTITION BY priority . Loadout ORDER BY priority . Priority ) AS Index,
165+ lead(priority .Id , - 1 , 0 ) OVER (PARTITION BY priority . Loadout ORDER BY priority . Priority ) As Prev,
166+ lead(priority .Id , 1 , 0 ) OVER (PARTITION BY priority . Loadout ORDER BY priority . Priority ) As Next,
158167 coalesce(winnersAndLoser .WinningFiles , []) AS WinningFiles,
159168 coalesce(winnersAndLoser .LosingFiles , []) AS LosingFiles
160169FROM
161170 MDB_LOADOUTITEMGROUPPRIORITY (Db => db) priority
162- LEFT JOIN winnersAndLosers winnersAndLoser ON winnersAndLoser .Id = priority .Id ;
171+ LEFT JOIN winnersAndLosers winnersAndLoser ON winnersAndLoser .Id = priority .Id
172+ LEFT JOIN synchronizer .LoadoutGroups (db) loadout_item_group ON priority .Target = loadout_item_group .Id
173+ WHERE loadout_item_group .IsEnabled ;
0 commit comments