diff --git a/shvatka/infrastructure/db/migrations/versions/20241201-144338_74618499d318_updated_scenarios.py b/shvatka/infrastructure/db/migrations/versions/20241201-144338_74618499d318_updated_scenarios.py index 89a43736..e324ff77 100644 --- a/shvatka/infrastructure/db/migrations/versions/20241201-144338_74618499d318_updated_scenarios.py +++ b/shvatka/infrastructure/db/migrations/versions/20241201-144338_74618499d318_updated_scenarios.py @@ -26,20 +26,23 @@ def upgrade(): op.execute(""" WITH scn AS ( SELECT jsonb_insert( - l.scenario::JSONB, - '{conditions}', - jsonb_build_array( - jsonb_build_object( - 'type', 'WIN_KEY', - 'keys', l.scenario::JSONB->'keys' - ), - jsonb_build_object( - 'type', 'BONUS_KEY', - 'keys', jsonb_extract_path(l.scenario::JSONB, 'bonus_keys') - ) - ) - ) - 'keys' - 'bonus_keys' AS scenario, - l.id + l.scenario::JSONB, + '{conditions}', + jsonb_path_query_array( + jsonb_build_array( + jsonb_build_object( + 'type', 'WIN_KEY', + 'keys', l.scenario::JSONB->'keys' + ), + jsonb_build_object( + 'type', 'BONUS_KEY', + 'keys', jsonb_extract_path(l.scenario::JSONB, 'bonus_keys') + ) + ), + '$[*] ? (@.keys != null && @.keys.size() > 0)' + ) + ) - 'keys' - 'bonus_keys' AS scenario, + l.id FROM levels AS l ) UPDATE levels lvl