Fix: Login.

This commit is contained in:
2026-03-15 19:52:21 +00:00
parent e8e9a02e7b
commit 97dccafc05
80 changed files with 1475 additions and 536 deletions

View File

@@ -0,0 +1,15 @@
CREATE TABLE tcg.public.TCG_MTG_Deck_Temp (
temp_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
, deck_id INT
, name TEXT NOT NULL
, is_commander BOOLEAN
, commander_bracket_id INT
, active BOOLEAN
, created_on TIMESTAMP
, created_by_user_id INT
, updated_last_on TIMESTAMP
, updated_last_by_user_id INT
, change_set_id INT
, guid UUID
);

View File

@@ -32,31 +32,31 @@ BEGIN
)
-- Changed user_auth0_id
SELECT NEW.user_id, 'user_auth0_id', OLD.user_auth0_id, NEW.user_auth0_id, NEW.change_set_id
WHERE OLD.user_auth0_id IS NOT DISTINCT FROM NEW.user_auth0_id
WHERE OLD.user_auth0_id IS DISTINCT FROM NEW.user_auth0_id
UNION
-- Changed firstname
SELECT NEW.user_id, 'firstname', OLD.firstname, NEW.firstname, NEW.change_set_id
WHERE OLD.firstname IS NOT DISTINCT FROM NEW.firstname
WHERE OLD.firstname IS DISTINCT FROM NEW.firstname
UNION
-- Changed surname
SELECT NEW.user_id, 'surname', OLD.surname, NEW.surname, NEW.change_set_id
WHERE OLD.surname IS NOT DISTINCT FROM NEW.surname
WHERE OLD.surname IS DISTINCT FROM NEW.surname
UNION
-- Changed email
SELECT NEW.user_id, 'email', OLD.email, NEW.email, NEW.change_set_id
WHERE OLD.email IS NOT DISTINCT FROM NEW.email
WHERE OLD.email IS DISTINCT FROM NEW.email
UNION
-- Changed is_email_verified
SELECT NEW.user_id, 'is_email_verified', OLD.is_email_verified::TEXT, NEW.is_email_verified::TEXT, NEW.change_set_id
WHERE OLD.is_email_verified IS NOT DISTINCT FROM NEW.is_email_verified
WHERE OLD.is_email_verified IS DISTINCT FROM NEW.is_email_verified
UNION
-- Changed is_super_user
SELECT NEW.user_id, 'is_super_user', OLD.is_super_user::TEXT, NEW.is_super_user::TEXT, NEW.change_set_id
WHERE OLD.is_super_user IS NOT DISTINCT FROM NEW.is_super_user
WHERE OLD.is_super_user IS DISTINCT FROM NEW.is_super_user
UNION
-- Changed active
SELECT NEW.user_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,23 +48,23 @@ BEGIN
)
-- Changed follower_user_id
SELECT NEW.relationship_id, 'follower_user_id', OLD.follower_user_id::TEXT, NEW.follower_user_id::TEXT, NEW.change_set_id
WHERE OLD.follower_user_id IS NOT DISTINCT FROM NEW.follower_user_id
WHERE OLD.follower_user_id IS DISTINCT FROM NEW.follower_user_id
UNION
-- Changed following_user_id
SELECT NEW.relationship_id, 'following_user_id', OLD.following_user_id::TEXT, NEW.following_user_id::TEXT, NEW.change_set_id
WHERE OLD.following_user_id IS NOT DISTINCT FROM NEW.following_user_id
WHERE OLD.following_user_id IS DISTINCT FROM NEW.following_user_id
UNION
-- Changed is_following
SELECT NEW.relationship_id, 'is_following', OLD.is_following::TEXT, NEW.is_following::TEXT, NEW.change_set_id
WHERE OLD.is_following IS NOT DISTINCT FROM NEW.is_following
WHERE OLD.is_following IS DISTINCT FROM NEW.is_following
UNION
-- Changed is_blocked
SELECT NEW.relationship_id, 'is_blocked', OLD.is_blocked::TEXT, NEW.is_blocked::TEXT, NEW.change_set_id
WHERE OLD.is_blocked IS NOT DISTINCT FROM NEW.is_blocked
WHERE OLD.is_blocked IS DISTINCT FROM NEW.is_blocked
UNION
-- Changed active
SELECT NEW.relationship_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,15 +48,15 @@ BEGIN
)
-- Changed code
SELECT NEW.error_type_id, 'code', OLD.code, NEW.code, NEW.change_set_id
WHERE OLD.code IS NOT DISTINCT FROM NEW.code
WHERE OLD.code IS DISTINCT FROM NEW.code
UNION
-- Changed name
SELECT NEW.error_type_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed active
SELECT NEW.error_type_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,23 +48,23 @@ BEGIN
)
-- Changed guid
SELECT NEW.error_id, 'guid', OLD.guid::TEXT, NEW.guid::TEXT, NEW.change_set_id
WHERE OLD.guid IS NOT DISTINCT FROM NEW.guid
WHERE OLD.guid IS DISTINCT FROM NEW.guid
UNION
-- Changed error_type_id
SELECT NEW.error_id, 'error_type_id', OLD.error_type_id::TEXT, NEW.error_type_id::TEXT, NEW.change_set_id
WHERE OLD.error_type_id IS NOT DISTINCT FROM NEW.error_type_id
WHERE OLD.error_type_id IS DISTINCT FROM NEW.error_type_id
UNION
-- Changed message
SELECT NEW.error_id, 'message', OLD.message, NEW.message, NEW.change_set_id
WHERE OLD.message IS NOT DISTINCT FROM NEW.message
WHERE OLD.message IS DISTINCT FROM NEW.message
UNION
-- Changed display_order
SELECT NEW.error_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.error_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,35 +48,35 @@ BEGIN
)
-- Changed name
SELECT NEW.condition_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed code
SELECT NEW.condition_id, 'code', OLD.code, NEW.code, NEW.change_set_id
WHERE OLD.code IS NOT DISTINCT FROM NEW.code
WHERE OLD.code IS DISTINCT FROM NEW.code
UNION
-- Changed description
SELECT NEW.condition_id, 'description', OLD.description, NEW.description, NEW.change_set_id
WHERE OLD.description IS NOT DISTINCT FROM NEW.description
WHERE OLD.description IS DISTINCT FROM NEW.description
UNION
-- Changed summary
SELECT NEW.condition_id, 'summary', OLD.summary, NEW.summary, NEW.change_set_id
WHERE OLD.summary IS NOT DISTINCT FROM NEW.summary
WHERE OLD.summary IS DISTINCT FROM NEW.summary
UNION
-- Changed us_name
SELECT NEW.condition_id, 'us_name', OLD.us_name, NEW.us_name, NEW.change_set_id
WHERE OLD.us_name IS NOT DISTINCT FROM NEW.us_name
WHERE OLD.us_name IS DISTINCT FROM NEW.us_name
UNION
-- Changed price_ratio_min
SELECT NEW.condition_id, 'price_ratio_min', OLD.price_ratio_min::TEXT, NEW.price_ratio_min::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_min IS NOT DISTINCT FROM NEW.price_ratio_min
WHERE OLD.price_ratio_min IS DISTINCT FROM NEW.price_ratio_min
UNION
-- Changed price_ratio_max
SELECT NEW.condition_id, 'price_ratio_max', OLD.price_ratio_max::TEXT, NEW.price_ratio_max::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_max IS NOT DISTINCT FROM NEW.price_ratio_max
WHERE OLD.price_ratio_max IS DISTINCT FROM NEW.price_ratio_max
UNION
-- Changed active
SELECT NEW.condition_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,23 +48,23 @@ BEGIN
)
-- Changed name
SELECT NEW.finish_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed description
SELECT NEW.finish_id, 'description', OLD.description, NEW.description, NEW.change_set_id
WHERE OLD.description IS NOT DISTINCT FROM NEW.description
WHERE OLD.description IS DISTINCT FROM NEW.description
UNION
-- Changed price_ratio_min
SELECT NEW.finish_id, 'price_ratio_min', OLD.price_ratio_min::TEXT, NEW.price_ratio_min::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_min IS NOT DISTINCT FROM NEW.price_ratio_min
WHERE OLD.price_ratio_min IS DISTINCT FROM NEW.price_ratio_min
UNION
-- Changed price_ratio_max
SELECT NEW.finish_id, 'price_ratio_max', OLD.price_ratio_max::TEXT, NEW.price_ratio_max::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_max IS NOT DISTINCT FROM NEW.price_ratio_max
WHERE OLD.price_ratio_max IS DISTINCT FROM NEW.price_ratio_max
UNION
-- Changed active
SELECT NEW.finish_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,451 +48,451 @@ BEGIN
)
-- Changed all_parts
SELECT NEW.card_id, 'all_parts', OLD.all_parts, NEW.all_parts, NEW.change_set_id
WHERE OLD.all_parts IS NOT DISTINCT FROM NEW.all_parts
WHERE OLD.all_parts IS DISTINCT FROM NEW.all_parts
UNION
-- Changed arena_id
SELECT NEW.card_id, 'arena_id', OLD.arena_id::TEXT, NEW.arena_id::TEXT, NEW.change_set_id
WHERE OLD.arena_id IS NOT DISTINCT FROM NEW.arena_id
WHERE OLD.arena_id IS DISTINCT FROM NEW.arena_id
UNION
-- Changed artist
SELECT NEW.card_id, 'artist', OLD.artist, NEW.artist, NEW.change_set_id
WHERE OLD.artist IS NOT DISTINCT FROM NEW.artist
WHERE OLD.artist IS DISTINCT FROM NEW.artist
UNION
-- Changed artist_ids
SELECT NEW.card_id, 'artist_ids', OLD.artist_ids, NEW.artist_ids, NEW.change_set_id
WHERE OLD.artist_ids IS NOT DISTINCT FROM NEW.artist_ids
WHERE OLD.artist_ids IS DISTINCT FROM NEW.artist_ids
UNION
-- Changed booster
SELECT NEW.card_id, 'booster', OLD.booster::TEXT, NEW.booster::TEXT, NEW.change_set_id
WHERE OLD.booster IS NOT DISTINCT FROM NEW.booster
WHERE OLD.booster IS DISTINCT FROM NEW.booster
UNION
-- Changed border_color
SELECT NEW.card_id, 'border_color', OLD.border_color, NEW.border_color, NEW.change_set_id
WHERE OLD.border_color IS NOT DISTINCT FROM NEW.border_color
WHERE OLD.border_color IS DISTINCT FROM NEW.border_color
UNION
-- Changed card_back_id
SELECT NEW.card_id, 'card_back_id', OLD.card_back_id, NEW.card_back_id, NEW.change_set_id
WHERE OLD.card_back_id IS NOT DISTINCT FROM NEW.card_back_id
WHERE OLD.card_back_id IS DISTINCT FROM NEW.card_back_id
UNION
-- Changed cmc
SELECT NEW.card_id, 'cmc', OLD.cmc::TEXT, NEW.cmc::TEXT, NEW.change_set_id
WHERE OLD.cmc IS NOT DISTINCT FROM NEW.cmc
WHERE OLD.cmc IS DISTINCT FROM NEW.cmc
UNION
-- Changed collector_number
SELECT NEW.card_id, 'collector_number', OLD.collector_number, NEW.collector_number, NEW.change_set_id
WHERE OLD.collector_number IS NOT DISTINCT FROM NEW.collector_number
WHERE OLD.collector_number IS DISTINCT FROM NEW.collector_number
UNION
-- Changed color_identity
SELECT NEW.card_id, 'color_identity', OLD.color_identity, NEW.color_identity, NEW.change_set_id
WHERE OLD.color_identity IS NOT DISTINCT FROM NEW.color_identity
WHERE OLD.color_identity IS DISTINCT FROM NEW.color_identity
UNION
-- Changed colors
SELECT NEW.card_id, 'colors', OLD.colors, NEW.colors, NEW.change_set_id
WHERE OLD.colors IS NOT DISTINCT FROM NEW.colors
WHERE OLD.colors IS DISTINCT FROM NEW.colors
UNION
-- Changed content_warning
SELECT NEW.card_id, 'content_warning', OLD.content_warning::TEXT, NEW.content_warning::TEXT, NEW.change_set_id
WHERE OLD.content_warning IS NOT DISTINCT FROM NEW.content_warning
WHERE OLD.content_warning IS DISTINCT FROM NEW.content_warning
UNION
-- Changed digital
SELECT NEW.card_id, 'digital', OLD.digital::TEXT, NEW.digital::TEXT, NEW.change_set_id
WHERE OLD.digital IS NOT DISTINCT FROM NEW.digital
WHERE OLD.digital IS DISTINCT FROM NEW.digital
UNION
-- Changed edhrec_rank
SELECT NEW.card_id, 'edhrec_rank', OLD.edhrec_rank::TEXT, NEW.edhrec_rank::TEXT, NEW.change_set_id
WHERE OLD.edhrec_rank IS NOT DISTINCT FROM NEW.edhrec_rank
WHERE OLD.edhrec_rank IS DISTINCT FROM NEW.edhrec_rank
UNION
-- Changed finishes
SELECT NEW.card_id, 'finishes', OLD.finishes, NEW.finishes, NEW.change_set_id
WHERE OLD.finishes IS NOT DISTINCT FROM NEW.finishes
WHERE OLD.finishes IS DISTINCT FROM NEW.finishes
UNION
-- Changed flavor_name
SELECT NEW.card_id, 'flavor_name', OLD.flavor_name, NEW.flavor_name, NEW.change_set_id
WHERE OLD.flavor_name IS NOT DISTINCT FROM NEW.flavor_name
WHERE OLD.flavor_name IS DISTINCT FROM NEW.flavor_name
UNION
-- Changed flavor_text
SELECT NEW.card_id, 'flavor_text', OLD.flavor_text, NEW.flavor_text, NEW.change_set_id
WHERE OLD.flavor_text IS NOT DISTINCT FROM NEW.flavor_text
WHERE OLD.flavor_text IS DISTINCT FROM NEW.flavor_text
UNION
-- Changed foil
SELECT NEW.card_id, 'foil', OLD.foil::TEXT, NEW.foil::TEXT, NEW.change_set_id
WHERE OLD.foil IS NOT DISTINCT FROM NEW.foil
WHERE OLD.foil IS DISTINCT FROM NEW.foil
UNION
-- Changed frame
SELECT NEW.card_id, 'frame', OLD.frame, NEW.frame, NEW.change_set_id
WHERE OLD.frame IS NOT DISTINCT FROM NEW.frame
WHERE OLD.frame IS DISTINCT FROM NEW.frame
UNION
-- Changed full_art
SELECT NEW.card_id, 'full_art', OLD.full_art::TEXT, NEW.full_art::TEXT, NEW.change_set_id
WHERE OLD.full_art IS NOT DISTINCT FROM NEW.full_art
WHERE OLD.full_art IS DISTINCT FROM NEW.full_art
UNION
-- Changed game_changer
SELECT NEW.card_id, 'game_changer', OLD.game_changer::TEXT, NEW.game_changer::TEXT, NEW.change_set_id
WHERE OLD.game_changer IS NOT DISTINCT FROM NEW.game_changer
WHERE OLD.game_changer IS DISTINCT FROM NEW.game_changer
UNION
-- Changed games
SELECT NEW.card_id, 'games', OLD.games, NEW.games, NEW.change_set_id
WHERE OLD.games IS NOT DISTINCT FROM NEW.games
WHERE OLD.games IS DISTINCT FROM NEW.games
UNION
-- Changed hand_modifier
SELECT NEW.card_id, 'hand_modifier', OLD.hand_modifier, NEW.hand_modifier, NEW.change_set_id
WHERE OLD.hand_modifier IS NOT DISTINCT FROM NEW.hand_modifier
WHERE OLD.hand_modifier IS DISTINCT FROM NEW.hand_modifier
UNION
-- Changed highres_image
SELECT NEW.card_id, 'highres_image', OLD.highres_image::TEXT, NEW.highres_image::TEXT, NEW.change_set_id
WHERE OLD.highres_image IS NOT DISTINCT FROM NEW.highres_image
WHERE OLD.highres_image IS DISTINCT FROM NEW.highres_image
UNION
-- Changed id
SELECT NEW.card_id, 'id', OLD.id::TEXT, NEW.id::TEXT, NEW.change_set_id
WHERE OLD.id IS NOT DISTINCT FROM NEW.id
WHERE OLD.id IS DISTINCT FROM NEW.id
UNION
-- Changed image_status
SELECT NEW.card_id, 'image_status', OLD.image_status, NEW.image_status, NEW.change_set_id
WHERE OLD.image_status IS NOT DISTINCT FROM NEW.image_status
WHERE OLD.image_status IS DISTINCT FROM NEW.image_status
UNION
-- Changed image_uri_art_crop
SELECT NEW.card_id, 'image_uri_art_crop', OLD.image_uri_art_crop, NEW.image_uri_art_crop, NEW.change_set_id
WHERE OLD.image_uri_art_crop IS NOT DISTINCT FROM NEW.image_uri_art_crop
WHERE OLD.image_uri_art_crop IS DISTINCT FROM NEW.image_uri_art_crop
UNION
-- Changed image_uri_border_crop
SELECT NEW.card_id, 'image_uri_border_crop', OLD.image_uri_border_crop, NEW.image_uri_border_crop, NEW.change_set_id
WHERE OLD.image_uri_border_crop IS NOT DISTINCT FROM NEW.image_uri_border_crop
WHERE OLD.image_uri_border_crop IS DISTINCT FROM NEW.image_uri_border_crop
UNION
-- Changed image_uri_large
SELECT NEW.card_id, 'image_uri_large', OLD.image_uri_large, NEW.image_uri_large, NEW.change_set_id
WHERE OLD.image_uri_large IS NOT DISTINCT FROM NEW.image_uri_large
WHERE OLD.image_uri_large IS DISTINCT FROM NEW.image_uri_large
UNION
-- Changed image_uri_normal
SELECT NEW.card_id, 'image_uri_normal', OLD.image_uri_normal, NEW.image_uri_normal, NEW.change_set_id
WHERE OLD.image_uri_normal IS NOT DISTINCT FROM NEW.image_uri_normal
WHERE OLD.image_uri_normal IS DISTINCT FROM NEW.image_uri_normal
UNION
-- Changed image_uri_png
SELECT NEW.card_id, 'image_uri_png', OLD.image_uri_png, NEW.image_uri_png, NEW.change_set_id
WHERE OLD.image_uri_png IS NOT DISTINCT FROM NEW.image_uri_png
WHERE OLD.image_uri_png IS DISTINCT FROM NEW.image_uri_png
UNION
-- Changed image_uri_small
SELECT NEW.card_id, 'image_uri_small', OLD.image_uri_small, NEW.image_uri_small, NEW.change_set_id
WHERE OLD.image_uri_small IS NOT DISTINCT FROM NEW.image_uri_small
WHERE OLD.image_uri_small IS DISTINCT FROM NEW.image_uri_small
UNION
-- Changed keywords
SELECT NEW.card_id, 'keywords', OLD.keywords, NEW.keywords, NEW.change_set_id
WHERE OLD.keywords IS NOT DISTINCT FROM NEW.keywords
WHERE OLD.keywords IS DISTINCT FROM NEW.keywords
UNION
-- Changed lang
SELECT NEW.card_id, 'lang', OLD.lang, NEW.lang, NEW.change_set_id
WHERE OLD.lang IS NOT DISTINCT FROM NEW.lang
WHERE OLD.lang IS DISTINCT FROM NEW.lang
UNION
-- Changed layout
SELECT NEW.card_id, 'layout', OLD.layout, NEW.layout, NEW.change_set_id
WHERE OLD.layout IS NOT DISTINCT FROM NEW.layout
WHERE OLD.layout IS DISTINCT FROM NEW.layout
UNION
-- Changed legal_alchemy
SELECT NEW.card_id, 'legal_alchemy', OLD.legal_alchemy::TEXT, NEW.legal_alchemy::TEXT, NEW.change_set_id
WHERE OLD.legal_alchemy IS NOT DISTINCT FROM NEW.legal_alchemy
WHERE OLD.legal_alchemy IS DISTINCT FROM NEW.legal_alchemy
UNION
-- Changed legal_brawl
SELECT NEW.card_id, 'legal_brawl', OLD.legal_brawl::TEXT, NEW.legal_brawl::TEXT, NEW.change_set_id
WHERE OLD.legal_brawl IS NOT DISTINCT FROM NEW.legal_brawl
WHERE OLD.legal_brawl IS DISTINCT FROM NEW.legal_brawl
UNION
-- Changed legal_commander
SELECT NEW.card_id, 'legal_commander', OLD.legal_commander::TEXT, NEW.legal_commander::TEXT, NEW.change_set_id
WHERE OLD.legal_commander IS NOT DISTINCT FROM NEW.legal_commander
WHERE OLD.legal_commander IS DISTINCT FROM NEW.legal_commander
UNION
-- Changed legal_duel
SELECT NEW.card_id, 'legal_duel', OLD.legal_duel::TEXT, NEW.legal_duel::TEXT, NEW.change_set_id
WHERE OLD.legal_duel IS NOT DISTINCT FROM NEW.legal_duel
WHERE OLD.legal_duel IS DISTINCT FROM NEW.legal_duel
UNION
-- Changed legal_future
SELECT NEW.card_id, 'legal_future', OLD.legal_future::TEXT, NEW.legal_future::TEXT, NEW.change_set_id
WHERE OLD.legal_future IS NOT DISTINCT FROM NEW.legal_future
WHERE OLD.legal_future IS DISTINCT FROM NEW.legal_future
UNION
-- Changed legal_gladiator
SELECT NEW.card_id, 'legal_gladiator', OLD.legal_gladiator::TEXT, NEW.legal_gladiator::TEXT, NEW.change_set_id
WHERE OLD.legal_gladiator IS NOT DISTINCT FROM NEW.legal_gladiator
WHERE OLD.legal_gladiator IS DISTINCT FROM NEW.legal_gladiator
UNION
-- Changed legal_historic
SELECT NEW.card_id, 'legal_historic', OLD.legal_historic::TEXT, NEW.legal_historic::TEXT, NEW.change_set_id
WHERE OLD.legal_historic IS NOT DISTINCT FROM NEW.legal_historic
WHERE OLD.legal_historic IS DISTINCT FROM NEW.legal_historic
UNION
-- Changed legal_legacy
SELECT NEW.card_id, 'legal_legacy', OLD.legal_legacy::TEXT, NEW.legal_legacy::TEXT, NEW.change_set_id
WHERE OLD.legal_legacy IS NOT DISTINCT FROM NEW.legal_legacy
WHERE OLD.legal_legacy IS DISTINCT FROM NEW.legal_legacy
UNION
-- Changed legal_modern
SELECT NEW.card_id, 'legal_modern', OLD.legal_modern::TEXT, NEW.legal_modern::TEXT, NEW.change_set_id
WHERE OLD.legal_modern IS NOT DISTINCT FROM NEW.legal_modern
WHERE OLD.legal_modern IS DISTINCT FROM NEW.legal_modern
UNION
-- Changed legal_oathbreaker
SELECT NEW.card_id, 'legal_oathbreaker', OLD.legal_oathbreaker::TEXT, NEW.legal_oathbreaker::TEXT, NEW.change_set_id
WHERE OLD.legal_oathbreaker IS NOT DISTINCT FROM NEW.legal_oathbreaker
WHERE OLD.legal_oathbreaker IS DISTINCT FROM NEW.legal_oathbreaker
UNION
-- Changed legal_oldschool
SELECT NEW.card_id, 'legal_oldschool', OLD.legal_oldschool::TEXT, NEW.legal_oldschool::TEXT, NEW.change_set_id
WHERE OLD.legal_oldschool IS NOT DISTINCT FROM NEW.legal_oldschool
WHERE OLD.legal_oldschool IS DISTINCT FROM NEW.legal_oldschool
UNION
-- Changed legal_pauper
SELECT NEW.card_id, 'legal_pauper', OLD.legal_pauper::TEXT, NEW.legal_pauper::TEXT, NEW.change_set_id
WHERE OLD.legal_pauper IS NOT DISTINCT FROM NEW.legal_pauper
WHERE OLD.legal_pauper IS DISTINCT FROM NEW.legal_pauper
UNION
-- Changed legal_paupercommander
SELECT NEW.card_id, 'legal_paupercommander', OLD.legal_paupercommander::TEXT, NEW.legal_paupercommander::TEXT, NEW.change_set_id
WHERE OLD.legal_paupercommander IS NOT DISTINCT FROM NEW.legal_paupercommander
WHERE OLD.legal_paupercommander IS DISTINCT FROM NEW.legal_paupercommander
UNION
-- Changed legal_penny
SELECT NEW.card_id, 'legal_penny', OLD.legal_penny::TEXT, NEW.legal_penny::TEXT, NEW.change_set_id
WHERE OLD.legal_penny IS NOT DISTINCT FROM NEW.legal_penny
WHERE OLD.legal_penny IS DISTINCT FROM NEW.legal_penny
UNION
-- Changed legal_pioneer
SELECT NEW.card_id, 'legal_pioneer', OLD.legal_pioneer::TEXT, NEW.legal_pioneer::TEXT, NEW.change_set_id
WHERE OLD.legal_pioneer IS NOT DISTINCT FROM NEW.legal_pioneer
WHERE OLD.legal_pioneer IS DISTINCT FROM NEW.legal_pioneer
UNION
-- Changed legal_predh
SELECT NEW.card_id, 'legal_predh', OLD.legal_predh::TEXT, NEW.legal_predh::TEXT, NEW.change_set_id
WHERE OLD.legal_predh IS NOT DISTINCT FROM NEW.legal_predh
WHERE OLD.legal_predh IS DISTINCT FROM NEW.legal_predh
UNION
-- Changed legal_premodern
SELECT NEW.card_id, 'legal_premodern', OLD.legal_premodern::TEXT, NEW.legal_premodern::TEXT, NEW.change_set_id
WHERE OLD.legal_premodern IS NOT DISTINCT FROM NEW.legal_premodern
WHERE OLD.legal_premodern IS DISTINCT FROM NEW.legal_premodern
UNION
-- Changed legal_standard
SELECT NEW.card_id, 'legal_standard', OLD.legal_standard::TEXT, NEW.legal_standard::TEXT, NEW.change_set_id
WHERE OLD.legal_standard IS NOT DISTINCT FROM NEW.legal_standard
WHERE OLD.legal_standard IS DISTINCT FROM NEW.legal_standard
UNION
-- Changed legal_standardbrawl
SELECT NEW.card_id, 'legal_standardbrawl', OLD.legal_standardbrawl::TEXT, NEW.legal_standardbrawl::TEXT, NEW.change_set_id
WHERE OLD.legal_standardbrawl IS NOT DISTINCT FROM NEW.legal_standardbrawl
WHERE OLD.legal_standardbrawl IS DISTINCT FROM NEW.legal_standardbrawl
UNION
-- Changed legal_timeless
SELECT NEW.card_id, 'legal_timeless', OLD.legal_timeless::TEXT, NEW.legal_timeless::TEXT, NEW.change_set_id
WHERE OLD.legal_timeless IS NOT DISTINCT FROM NEW.legal_timeless
WHERE OLD.legal_timeless IS DISTINCT FROM NEW.legal_timeless
UNION
-- Changed legal_vintage
SELECT NEW.card_id, 'legal_vintage', OLD.legal_vintage::TEXT, NEW.legal_vintage::TEXT, NEW.change_set_id
WHERE OLD.legal_vintage IS NOT DISTINCT FROM NEW.legal_vintage
WHERE OLD.legal_vintage IS DISTINCT FROM NEW.legal_vintage
UNION
-- Changed life_modifier
SELECT NEW.card_id, 'life_modifier', OLD.life_modifier, NEW.life_modifier, NEW.change_set_id
WHERE OLD.life_modifier IS NOT DISTINCT FROM NEW.life_modifier
WHERE OLD.life_modifier IS DISTINCT FROM NEW.life_modifier
UNION
-- Changed loyalty
SELECT NEW.card_id, 'loyalty', OLD.loyalty, NEW.loyalty, NEW.change_set_id
WHERE OLD.loyalty IS NOT DISTINCT FROM NEW.loyalty
WHERE OLD.loyalty IS DISTINCT FROM NEW.loyalty
UNION
-- Changed mana_cost
SELECT NEW.card_id, 'mana_cost', OLD.mana_cost, NEW.mana_cost, NEW.change_set_id
WHERE OLD.mana_cost IS NOT DISTINCT FROM NEW.mana_cost
WHERE OLD.mana_cost IS DISTINCT FROM NEW.mana_cost
UNION
-- Changed mtgo_id
SELECT NEW.card_id, 'mtgo_id', OLD.mtgo_id::TEXT, NEW.mtgo_id::TEXT, NEW.change_set_id
WHERE OLD.mtgo_id IS NOT DISTINCT FROM NEW.mtgo_id
WHERE OLD.mtgo_id IS DISTINCT FROM NEW.mtgo_id
UNION
-- Changed multiverse_ids
SELECT NEW.card_id, 'multiverse_ids', OLD.multiverse_ids, NEW.multiverse_ids, NEW.change_set_id
WHERE OLD.multiverse_ids IS NOT DISTINCT FROM NEW.multiverse_ids
WHERE OLD.multiverse_ids IS DISTINCT FROM NEW.multiverse_ids
UNION
-- Changed name
SELECT NEW.card_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed nonfoil
SELECT NEW.card_id, 'nonfoil', OLD.nonfoil::TEXT, NEW.nonfoil::TEXT, NEW.change_set_id
WHERE OLD.nonfoil IS NOT DISTINCT FROM NEW.nonfoil
WHERE OLD.nonfoil IS DISTINCT FROM NEW.nonfoil
UNION
-- Changed oracle_id
SELECT NEW.card_id, 'oracle_id', OLD.oracle_id::TEXT, NEW.oracle_id::TEXT, NEW.change_set_id
WHERE OLD.oracle_id IS NOT DISTINCT FROM NEW.oracle_id
WHERE OLD.oracle_id IS DISTINCT FROM NEW.oracle_id
UNION
-- Changed oracle_text
SELECT NEW.card_id, 'oracle_text', OLD.oracle_text, NEW.oracle_text, NEW.change_set_id
WHERE OLD.oracle_text IS NOT DISTINCT FROM NEW.oracle_text
WHERE OLD.oracle_text IS DISTINCT FROM NEW.oracle_text
UNION
-- Changed oversized
SELECT NEW.card_id, 'oversized', OLD.oversized::TEXT, NEW.oversized::TEXT, NEW.change_set_id
WHERE OLD.oversized IS NOT DISTINCT FROM NEW.oversized
WHERE OLD.oversized IS DISTINCT FROM NEW.oversized
UNION
-- Changed penny_rank
SELECT NEW.card_id, 'penny_rank', OLD.penny_rank::TEXT, NEW.penny_rank::TEXT, NEW.change_set_id
WHERE OLD.penny_rank IS NOT DISTINCT FROM NEW.penny_rank
WHERE OLD.penny_rank IS DISTINCT FROM NEW.penny_rank
UNION
-- Changed power
SELECT NEW.card_id, 'power', OLD.power, NEW.power, NEW.change_set_id
WHERE OLD.power IS NOT DISTINCT FROM NEW.power
WHERE OLD.power IS DISTINCT FROM NEW.power
UNION
-- Changed preview_date
SELECT NEW.card_id, 'preview_date', TO_CHAR(OLD.preview_date, 'YYYY-MM-DD'), TO_CHAR(NEW.preview_date, 'YYYY-MM-DD'), NEW.change_set_id
WHERE OLD.preview_date IS NOT DISTINCT FROM NEW.preview_date
WHERE OLD.preview_date IS DISTINCT FROM NEW.preview_date
UNION
-- Changed preview_source
SELECT NEW.card_id, 'preview_source', OLD.preview_source, NEW.preview_source, NEW.change_set_id
WHERE OLD.preview_source IS NOT DISTINCT FROM NEW.preview_source
WHERE OLD.preview_source IS DISTINCT FROM NEW.preview_source
UNION
-- Changed preview_source_uri
SELECT NEW.card_id, 'preview_source_uri', OLD.preview_source_uri, NEW.preview_source_uri, NEW.change_set_id
WHERE OLD.preview_source_uri IS NOT DISTINCT FROM NEW.preview_source_uri
WHERE OLD.preview_source_uri IS DISTINCT FROM NEW.preview_source_uri
UNION
-- Changed price_eur
SELECT NEW.card_id, 'price_eur', OLD.price_eur::TEXT, NEW.price_eur::TEXT, NEW.change_set_id
WHERE OLD.price_eur IS NOT DISTINCT FROM NEW.price_eur
WHERE OLD.price_eur IS DISTINCT FROM NEW.price_eur
UNION
-- Changed price_eur_foil
SELECT NEW.card_id, 'price_eur_foil', OLD.price_eur_foil::TEXT, NEW.price_eur_foil::TEXT, NEW.change_set_id
WHERE OLD.price_eur_foil IS NOT DISTINCT FROM NEW.price_eur_foil
WHERE OLD.price_eur_foil IS DISTINCT FROM NEW.price_eur_foil
UNION
-- Changed price_tix
SELECT NEW.card_id, 'price_tix', OLD.price_tix::TEXT, NEW.price_tix::TEXT, NEW.change_set_id
WHERE OLD.price_tix IS NOT DISTINCT FROM NEW.price_tix
WHERE OLD.price_tix IS DISTINCT FROM NEW.price_tix
UNION
-- Changed price_usd
SELECT NEW.card_id, 'price_usd', OLD.price_usd::TEXT, NEW.price_usd::TEXT, NEW.change_set_id
WHERE OLD.price_usd IS NOT DISTINCT FROM NEW.price_usd
WHERE OLD.price_usd IS DISTINCT FROM NEW.price_usd
UNION
-- Changed price_usd_etched
SELECT NEW.card_id, 'price_usd_etched', OLD.price_usd_etched::TEXT, NEW.price_usd_etched::TEXT, NEW.change_set_id
WHERE OLD.price_usd_etched IS NOT DISTINCT FROM NEW.price_usd_etched
WHERE OLD.price_usd_etched IS DISTINCT FROM NEW.price_usd_etched
UNION
-- Changed price_usd_foil
SELECT NEW.card_id, 'price_usd_foil', OLD.price_usd_foil::TEXT, NEW.price_usd_foil::TEXT, NEW.change_set_id
WHERE OLD.price_usd_foil IS NOT DISTINCT FROM NEW.price_usd_foil
WHERE OLD.price_usd_foil IS DISTINCT FROM NEW.price_usd_foil
UNION
-- Changed printed_name
SELECT NEW.card_id, 'printed_name', OLD.printed_name, NEW.printed_name, NEW.change_set_id
WHERE OLD.printed_name IS NOT DISTINCT FROM NEW.printed_name
WHERE OLD.printed_name IS DISTINCT FROM NEW.printed_name
UNION
-- Changed printed_text
SELECT NEW.card_id, 'printed_text', OLD.printed_text, NEW.printed_text, NEW.change_set_id
WHERE OLD.printed_text IS NOT DISTINCT FROM NEW.printed_text
WHERE OLD.printed_text IS DISTINCT FROM NEW.printed_text
UNION
-- Changed printed_type_line
SELECT NEW.card_id, 'printed_type_line', OLD.printed_type_line, NEW.printed_type_line, NEW.change_set_id
WHERE OLD.printed_type_line IS NOT DISTINCT FROM NEW.printed_type_line
WHERE OLD.printed_type_line IS DISTINCT FROM NEW.printed_type_line
UNION
-- Changed prints_search_uri
SELECT NEW.card_id, 'printed_search_uri', OLD.printed_search_uri, NEW.printed_search_uri, NEW.change_set_id
WHERE OLD.printed_search_uri IS NOT DISTINCT FROM NEW.printed_search_uri
WHERE OLD.printed_search_uri IS DISTINCT FROM NEW.printed_search_uri
UNION
-- Changed produced_mana
SELECT NEW.card_id, 'produced_mana', OLD.produced_mana, NEW.produced_mana, NEW.change_set_id
WHERE OLD.produced_mana IS NOT DISTINCT FROM NEW.produced_mana
WHERE OLD.produced_mana IS DISTINCT FROM NEW.produced_mana
UNION
-- Changed promo
SELECT NEW.card_id, 'promo', OLD.promo::TEXT, NEW.promo::TEXT, NEW.change_set_id
WHERE OLD.promo IS NOT DISTINCT FROM NEW.promo
WHERE OLD.promo IS DISTINCT FROM NEW.promo
UNION
-- Changed purchase_cardhoarder
SELECT NEW.card_id, 'purchase_cardhoarder', OLD.purchase_cardhoarder, NEW.purchase_cardhoarder, NEW.change_set_id
WHERE OLD.purchase_cardhoarder IS NOT DISTINCT FROM NEW.purchase_cardhoarder
WHERE OLD.purchase_cardhoarder IS DISTINCT FROM NEW.purchase_cardhoarder
UNION
-- Changed purchase_cardmarket
SELECT NEW.card_id, 'purchase_cardmarket', OLD.purchase_cardmarket, NEW.purchase_cardmarket, NEW.change_set_id
WHERE OLD.purchase_cardmarket IS NOT DISTINCT FROM NEW.purchase_cardmarket
WHERE OLD.purchase_cardmarket IS DISTINCT FROM NEW.purchase_cardmarket
UNION
-- Changed purchase_tcgplayer
SELECT NEW.card_id, 'purchase_tcgplayer', OLD.purchase_tcgplayer, NEW.purchase_tcgplayer, NEW.change_set_id
WHERE OLD.purchase_tcgplayer IS NOT DISTINCT FROM NEW.purchase_tcgplayer
WHERE OLD.purchase_tcgplayer IS DISTINCT FROM NEW.purchase_tcgplayer
UNION
-- Changed rarity
SELECT NEW.card_id, 'rarity', OLD.rarity, NEW.rarity, NEW.change_set_id
WHERE OLD.rarity IS NOT DISTINCT FROM NEW.rarity
WHERE OLD.rarity IS DISTINCT FROM NEW.rarity
UNION
-- Changed released_at
SELECT NEW.card_id, 'released_at', TO_CHAR(OLD.released_at, 'YYYY-MM-DD'), TO_CHAR(NEW.released_at, 'YYYY-MM-DD'), NEW.change_set_id
WHERE OLD.released_at IS NOT DISTINCT FROM NEW.released_at
WHERE OLD.released_at IS DISTINCT FROM NEW.released_at
UNION
-- Changed reprint
SELECT NEW.card_id, 'reprint', OLD.reprint::TEXT, NEW.reprint::TEXT, NEW.change_set_id
WHERE OLD.reprint IS NOT DISTINCT FROM NEW.reprint
WHERE OLD.reprint IS DISTINCT FROM NEW.reprint
UNION
-- Changed reserved
SELECT NEW.card_id, 'reserved', OLD.reserved::TEXT, NEW.reserved::TEXT, NEW.change_set_id
WHERE OLD.reserved IS NOT DISTINCT FROM NEW.reserved
WHERE OLD.reserved IS DISTINCT FROM NEW.reserved
UNION
-- Changed rulings_uri
SELECT NEW.card_id, 'rulings_uri', OLD.rulings_uri, NEW.rulings_uri, NEW.change_set_id
WHERE OLD.rulings_uri IS NOT DISTINCT FROM NEW.rulings_uri
WHERE OLD.rulings_uri IS DISTINCT FROM NEW.rulings_uri
UNION
-- Changed scryfall_set_uri
SELECT NEW.card_id, 'scryfall_set_uri', OLD.scryfall_set_uri, NEW.scryfall_set_uri, NEW.change_set_id
WHERE OLD.scryfall_set_uri IS NOT DISTINCT FROM NEW.scryfall_set_uri
WHERE OLD.scryfall_set_uri IS DISTINCT FROM NEW.scryfall_set_uri
UNION
-- Changed scryfall_uri
SELECT NEW.card_id, 'scryfall_uri', OLD.scryfall_uri, NEW.scryfall_uri, NEW.change_set_id
WHERE OLD.scryfall_uri IS NOT DISTINCT FROM NEW.scryfall_uri
WHERE OLD.scryfall_uri IS DISTINCT FROM NEW.scryfall_uri
UNION
-- Changed security_stamp
SELECT NEW.card_id, 'security_stamp', OLD.security_stamp, NEW.security_stamp, NEW.change_set_id
WHERE OLD.security_stamp IS NOT DISTINCT FROM NEW.security_stamp
WHERE OLD.security_stamp IS DISTINCT FROM NEW.security_stamp
UNION
-- Changed set
SELECT NEW.card_id, 'set', OLD.set, NEW.set, NEW.change_set_id
WHERE OLD.set IS NOT DISTINCT FROM NEW.set
WHERE OLD.set IS DISTINCT FROM NEW.set
UNION
-- Changed set_id
SELECT NEW.card_id, 'set_id', OLD.set_id::TEXT, NEW.set_id::TEXT, NEW.change_set_id
WHERE OLD.set_id IS NOT DISTINCT FROM NEW.set_id
WHERE OLD.set_id IS DISTINCT FROM NEW.set_id
UNION
-- Changed set_name
SELECT NEW.card_id, 'set_name', OLD.set_name, NEW.set_name, NEW.change_set_id
WHERE OLD.set_name IS NOT DISTINCT FROM NEW.set_name
WHERE OLD.set_name IS DISTINCT FROM NEW.set_name
UNION
-- Changed set_search_uri
SELECT NEW.card_id, 'set_search_uri', OLD.set_search_uri, NEW.set_search_uri, NEW.change_set_id
WHERE OLD.set_search_uri IS NOT DISTINCT FROM NEW.set_search_uri
WHERE OLD.set_search_uri IS DISTINCT FROM NEW.set_search_uri
UNION
-- Changed set_type
SELECT NEW.card_id, 'set_type', OLD.set_type, NEW.set_type, NEW.change_set_id
WHERE OLD.set_type IS NOT DISTINCT FROM NEW.set_type
WHERE OLD.set_type IS DISTINCT FROM NEW.set_type
UNION
-- Changed set_uri
SELECT NEW.card_id, 'set_uri', OLD.set_uri, NEW.set_uri, NEW.change_set_id
WHERE OLD.set_uri IS NOT DISTINCT FROM NEW.set_uri
WHERE OLD.set_uri IS DISTINCT FROM NEW.set_uri
UNION
-- Changed story_spotlight
SELECT NEW.card_id, 'story_spotlight', OLD.story_spotlight::TEXT, NEW.story_spotlight::TEXT, NEW.change_set_id
WHERE OLD.story_spotlight IS NOT DISTINCT FROM NEW.story_spotlight
WHERE OLD.story_spotlight IS DISTINCT FROM NEW.story_spotlight
UNION
-- Changed tcgplayer_id
SELECT NEW.card_id, 'tcgplayer_id', OLD.tcgplayer_id::TEXT, NEW.tcgplayer_id::TEXT, NEW.change_set_id
WHERE OLD.tcgplayer_id IS NOT DISTINCT FROM NEW.tcgplayer_id
WHERE OLD.tcgplayer_id IS DISTINCT FROM NEW.tcgplayer_id
UNION
-- Changed textless
SELECT NEW.card_id, 'textless', OLD.textless::TEXT, NEW.textless::TEXT, NEW.change_set_id
WHERE OLD.textless IS NOT DISTINCT FROM NEW.textless
WHERE OLD.textless IS DISTINCT FROM NEW.textless
UNION
-- Changed toughness
SELECT NEW.card_id, 'toughness', OLD.toughness, NEW.toughness, NEW.change_set_id
WHERE OLD.toughness IS NOT DISTINCT FROM NEW.toughness
WHERE OLD.toughness IS DISTINCT FROM NEW.toughness
UNION
-- Changed type_line
SELECT NEW.card_id, 'type_line', OLD.type_line, NEW.type_line, NEW.change_set_id
WHERE OLD.type_line IS NOT DISTINCT FROM NEW.type_line
WHERE OLD.type_line IS DISTINCT FROM NEW.type_line
UNION
-- Changed uri
SELECT NEW.card_id, 'uri', OLD.uri, NEW.uri, NEW.change_set_id
WHERE OLD.uri IS NOT DISTINCT FROM NEW.uri
WHERE OLD.uri IS DISTINCT FROM NEW.uri
UNION
-- Changed uri_edhrec
SELECT NEW.card_id, 'uri_edhrec', OLD.uri_edhrec, NEW.uri_edhrec, NEW.change_set_id
WHERE OLD.uri_edhrec IS NOT DISTINCT FROM NEW.uri_edhrec
WHERE OLD.uri_edhrec IS DISTINCT FROM NEW.uri_edhrec
UNION
-- Changed uri_gatherer
SELECT NEW.card_id, 'uri_gatherer', OLD.uri_gatherer, NEW.uri_gatherer, NEW.change_set_id
WHERE OLD.uri_gatherer IS NOT DISTINCT FROM NEW.uri_gatherer
WHERE OLD.uri_gatherer IS DISTINCT FROM NEW.uri_gatherer
UNION
-- Changed uri_tcgplayer_infinite_articles
SELECT NEW.card_id, 'uri_tcgplayer_infinite_articles', OLD.uri_tcgplayer_infinite_articles, NEW.uri_tcgplayer_infinite_articles, NEW.change_set_id
WHERE OLD.uri_tcgplayer_infinite_articles IS NOT DISTINCT FROM NEW.uri_tcgplayer_infinite_articles
WHERE OLD.uri_tcgplayer_infinite_articles IS DISTINCT FROM NEW.uri_tcgplayer_infinite_articles
UNION
-- Changed uri_tcgplayer_infinite_decks
SELECT NEW.card_id, 'uri_tcgplayer_infinite_decks', OLD.uri_tcgplayer_infinite_decks, NEW.uri_tcgplayer_infinite_decks, NEW.change_set_id
WHERE OLD.uri_tcgplayer_infinite_decks IS NOT DISTINCT FROM NEW.uri_tcgplayer_infinite_decks
WHERE OLD.uri_tcgplayer_infinite_decks IS DISTINCT FROM NEW.uri_tcgplayer_infinite_decks
UNION
-- Changed variation
SELECT NEW.card_id, 'variation', OLD.variation::TEXT, NEW.variation::TEXT, NEW.change_set_id
WHERE OLD.variation IS NOT DISTINCT FROM NEW.variation
WHERE OLD.variation IS DISTINCT FROM NEW.variation
UNION
-- Changed active
SELECT NEW.card_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,135 +48,135 @@ BEGIN
)
-- Changed card_id
SELECT NEW.inventory_id, 'card_id', OLD.card_id::TEXT, NEW.card_id::TEXT, NEW.change_set_id
WHERE OLD.card_id IS NOT DISTINCT FROM NEW.card_id
WHERE OLD.card_id IS DISTINCT FROM NEW.card_id
UNION
-- Changed finish_id
SELECT NEW.inventory_id, 'finish_id', OLD.finish_id::TEXT, NEW.finish_id::TEXT, NEW.change_set_id
WHERE OLD.finish_id IS NOT DISTINCT FROM NEW.finish_id
WHERE OLD.finish_id IS DISTINCT FROM NEW.finish_id
UNION
-- Changed condition_id
SELECT NEW.inventory_id, 'condition_id', OLD.condition_id::TEXT, NEW.condition_id::TEXT, NEW.change_set_id
WHERE OLD.condition_id IS NOT DISTINCT FROM NEW.condition_id
WHERE OLD.condition_id IS DISTINCT FROM NEW.condition_id
UNION
-- Changed sleeve_colour_name
SELECT NEW.inventory_id, 'sleeve_colour_name', OLD.sleeve_colour_name, NEW.sleeve_colour_name, NEW.change_set_id
WHERE OLD.sleeve_colour_name IS NOT DISTINCT FROM NEW.sleeve_colour_name
WHERE OLD.sleeve_colour_name IS DISTINCT FROM NEW.sleeve_colour_name
UNION
-- Changed location_name
SELECT NEW.inventory_id, 'location_name', OLD.location_name, NEW.location_name, NEW.change_set_id
WHERE OLD.location_name IS NOT DISTINCT FROM NEW.location_name
WHERE OLD.location_name IS DISTINCT FROM NEW.location_name
UNION
-- Changed acquired_from
SELECT NEW.inventory_id, 'acquired_from', OLD.acquired_from, NEW.acquired_from, NEW.change_set_id
WHERE OLD.acquired_from IS NOT DISTINCT FROM NEW.acquired_from
WHERE OLD.acquired_from IS DISTINCT FROM NEW.acquired_from
UNION
-- Changed acquired_on
SELECT NEW.inventory_id, 'acquired_on', TO_CHAR(OLD.acquired_on, 'YYYY-MM-DD'), TO_CHAR(NEW.acquired_on, 'YYYY-MM-DD'), NEW.change_set_id
WHERE OLD.acquired_on IS NOT DISTINCT FROM NEW.acquired_on
WHERE OLD.acquired_on IS DISTINCT FROM NEW.acquired_on
UNION
-- Changed cost_gbp
SELECT NEW.inventory_id, 'cost_gbp', OLD.cost_gbp::TEXT, NEW.cost_gbp::TEXT, NEW.change_set_id
WHERE OLD.cost_gbp IS NOT DISTINCT FROM NEW.cost_gbp
WHERE OLD.cost_gbp IS DISTINCT FROM NEW.cost_gbp
UNION
-- Changed sale_price_gbp
SELECT NEW.inventory_id, 'sale_price_gbp', OLD.sale_price_gbp::TEXT, NEW.sale_price_gbp::TEXT, NEW.change_set_id
WHERE OLD.sale_price_gbp IS NOT DISTINCT FROM NEW.sale_price_gbp
WHERE OLD.sale_price_gbp IS DISTINCT FROM NEW.sale_price_gbp
UNION
-- Changed is_sold
SELECT NEW.inventory_id, 'is_sold', OLD.is_sold::TEXT, NEW.is_sold::TEXT, NEW.change_set_id
WHERE OLD.is_sold IS NOT DISTINCT FROM NEW.is_sold
WHERE OLD.is_sold IS DISTINCT FROM NEW.is_sold
UNION
-- Changed is_destroyed
SELECT NEW.inventory_id, 'is_destroyed', OLD.is_destroyed::TEXT, NEW.is_destroyed::TEXT, NEW.change_set_id
WHERE OLD.is_destroyed IS NOT DISTINCT FROM NEW.is_destroyed
WHERE OLD.is_destroyed IS DISTINCT FROM NEW.is_destroyed
UNION
-- Changed notes
SELECT NEW.inventory_id, 'notes', OLD.notes, NEW.notes, NEW.change_set_id
WHERE OLD.notes IS NOT DISTINCT FROM NEW.notes
WHERE OLD.notes IS DISTINCT FROM NEW.notes
UNION
-- Changed alterations_customisations
SELECT NEW.inventory_id, 'alterations_customisations', OLD.alterations_customisations, NEW.alterations_customisations, NEW.change_set_id
WHERE OLD.alterations_customisations IS NOT DISTINCT FROM NEW.alterations_customisations
WHERE OLD.alterations_customisations IS DISTINCT FROM NEW.alterations_customisations
UNION
-- Changed grading_company_name
SELECT NEW.inventory_id, 'grading_company_name', OLD.grading_company_name, NEW.grading_company_name, NEW.change_set_id
WHERE OLD.grading_company_name IS NOT DISTINCT FROM NEW.grading_company_name
WHERE OLD.grading_company_name IS DISTINCT FROM NEW.grading_company_name
UNION
-- Changed grading_score
SELECT NEW.inventory_id, 'grading_score', OLD.grading_score, NEW.grading_score, NEW.change_set_id
WHERE OLD.grading_score IS NOT DISTINCT FROM NEW.grading_score
WHERE OLD.grading_score IS DISTINCT FROM NEW.grading_score
UNION
-- Changed subgrades
SELECT NEW.inventory_id, 'subgrades', OLD.subgrades, NEW.subgrades, NEW.change_set_id
WHERE OLD.subgrades IS NOT DISTINCT FROM NEW.subgrades
WHERE OLD.subgrades IS DISTINCT FROM NEW.subgrades
UNION
-- Changed misprint_errors
SELECT NEW.inventory_id, 'misprint_errors', OLD.misprint_errors, NEW.misprint_errors, NEW.change_set_id
WHERE OLD.misprint_errors IS NOT DISTINCT FROM NEW.misprint_errors
WHERE OLD.misprint_errors IS DISTINCT FROM NEW.misprint_errors
UNION
-- Changed miscut_errors
SELECT NEW.inventory_id, 'miscut_errors', OLD.miscut_errors, NEW.miscut_errors, NEW.change_set_id
WHERE OLD.miscut_errors IS NOT DISTINCT FROM NEW.miscut_errors
WHERE OLD.miscut_errors IS DISTINCT FROM NEW.miscut_errors
UNION
-- Changed playability
SELECT NEW.inventory_id, 'playability', OLD.playability, NEW.playability, NEW.change_set_id
WHERE OLD.playability IS NOT DISTINCT FROM NEW.playability
WHERE OLD.playability IS DISTINCT FROM NEW.playability
UNION
-- Changed owner_user_id
SELECT NEW.inventory_id, 'owner_user_id', OLD.owner_user_id::TEXT, NEW.owner_user_id::TEXT, NEW.change_set_id
WHERE OLD.owner_user_id IS NOT DISTINCT FROM NEW.owner_user_id
WHERE OLD.owner_user_id IS DISTINCT FROM NEW.owner_user_id
UNION
-- Changed ownership_status_name
SELECT NEW.inventory_id, 'ownership_status_name', OLD.ownership_status_name, NEW.ownership_status_name, NEW.change_set_id
WHERE OLD.ownership_status_name IS NOT DISTINCT FROM NEW.ownership_status_name
WHERE OLD.ownership_status_name IS DISTINCT FROM NEW.ownership_status_name
UNION
-- Changed trading_status_name
SELECT NEW.inventory_id, 'trading_status_name', OLD.trading_status_name, NEW.trading_status_name, NEW.change_set_id
WHERE OLD.trading_status_name IS NOT DISTINCT FROM NEW.trading_status_name
WHERE OLD.trading_status_name IS DISTINCT FROM NEW.trading_status_name
UNION
-- Changed loaned_to_user_id
SELECT NEW.inventory_id, 'loaned_to_user_id', OLD.loaned_to_user_id::TEXT, NEW.loaned_to_user_id::TEXT, NEW.change_set_id
WHERE OLD.loaned_to_user_id IS NOT DISTINCT FROM NEW.loaned_to_user_id
WHERE OLD.loaned_to_user_id IS DISTINCT FROM NEW.loaned_to_user_id
UNION
-- Changed acquired_on
SELECT NEW.inventory_id, 'acquired_on', TO_CHAR(OLD.acquired_on, 'YYYY-MM-DD'), TO_CHAR(NEW.acquired_on, 'YYYY-MM-DD'), NEW.change_set_id
WHERE OLD.acquired_on IS NOT DISTINCT FROM NEW.acquired_on
WHERE OLD.acquired_on IS DISTINCT FROM NEW.acquired_on
UNION
-- Changed acquired_on
SELECT NEW.inventory_id, 'acquired_on', TO_CHAR(OLD.acquired_on, 'YYYY-MM-DD'), TO_CHAR(NEW.acquired_on, 'YYYY-MM-DD'), NEW.change_set_id
WHERE OLD.acquired_on IS NOT DISTINCT FROM NEW.acquired_on
WHERE OLD.acquired_on IS DISTINCT FROM NEW.acquired_on
UNION
-- Changed provenance
SELECT NEW.inventory_id, 'provenance', OLD.provenance, NEW.provenance, NEW.change_set_id
WHERE OLD.provenance IS NOT DISTINCT FROM NEW.provenance
WHERE OLD.provenance IS DISTINCT FROM NEW.provenance
UNION
-- Changed signed_by_names
SELECT NEW.inventory_id, 'signed_by_names', OLD.signed_by_names, NEW.signed_by_names, NEW.change_set_id
WHERE OLD.signed_by_names IS NOT DISTINCT FROM NEW.signed_by_names
WHERE OLD.signed_by_names IS DISTINCT FROM NEW.signed_by_names
UNION
-- Changed signature_condition_name
SELECT NEW.inventory_id, 'signature_condition_name', OLD.signature_condition_name, NEW.signature_condition_name, NEW.change_set_id
WHERE OLD.signature_condition_name IS NOT DISTINCT FROM NEW.signature_condition_name
WHERE OLD.signature_condition_name IS DISTINCT FROM NEW.signature_condition_name
UNION
-- Changed token_rear_side_card_id
SELECT NEW.inventory_id, 'token_rear_side_card_id', OLD.token_rear_side_card_id::TEXT, NEW.token_rear_side_card_id::TEXT, NEW.change_set_id
WHERE OLD.token_rear_side_card_id IS NOT DISTINCT FROM NEW.token_rear_side_card_id
WHERE OLD.token_rear_side_card_id IS DISTINCT FROM NEW.token_rear_side_card_id
UNION
-- Changed front_name
SELECT NEW.inventory_id, 'front_name', OLD.front_name, NEW.front_name, NEW.change_set_id
WHERE OLD.front_name IS NOT DISTINCT FROM NEW.front_name
WHERE OLD.front_name IS DISTINCT FROM NEW.front_name
UNION
-- Changed rear_name
SELECT NEW.inventory_id, 'rear_name', OLD.rear_name, NEW.rear_name, NEW.change_set_id
WHERE OLD.rear_name IS NOT DISTINCT FROM NEW.rear_name
WHERE OLD.rear_name IS DISTINCT FROM NEW.rear_name
UNION
-- Changed display_order
SELECT NEW.inventory_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.inventory_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,19 +48,19 @@ BEGIN
)
-- Changed name
SELECT NEW.commander_bracket_id, 'name', OLD.name::TEXT, NEW.name::TEXT, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed description
SELECT NEW.commander_bracket_id, 'description', OLD.description::TEXT, NEW.description::TEXT, NEW.change_set_id
WHERE OLD.description IS NOT DISTINCT FROM NEW.description
WHERE OLD.description IS DISTINCT FROM NEW.description
UNION
-- Changed display_order
SELECT NEW.commander_bracket_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.commander_bracket_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,19 +48,19 @@ BEGIN
)
-- Changed name
SELECT NEW.deck_id, 'name', OLD.name::TEXT, NEW.name::TEXT, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed is_commander
SELECT NEW.deck_id, 'is_commander', OLD.is_commander::TEXT, NEW.is_commander::TEXT, NEW.change_set_id
WHERE OLD.is_commander IS NOT DISTINCT FROM NEW.is_commander
WHERE OLD.is_commander IS DISTINCT FROM NEW.is_commander
UNION
-- Changed commander_bracket_id
SELECT NEW.deck_id, 'commander_bracket_id', OLD.commander_bracket_id::TEXT, NEW.commander_bracket_id::TEXT, NEW.change_set_id
WHERE OLD.commander_bracket_id IS NOT DISTINCT FROM NEW.commander_bracket_id
WHERE OLD.commander_bracket_id IS DISTINCT FROM NEW.commander_bracket_id
UNION
-- Changed active
SELECT NEW.deck_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,19 +48,19 @@ BEGIN
)
-- Changed deck_id
SELECT NEW.link_id, 'deck_id', OLD.deck_id::TEXT, NEW.deck_id::TEXT, NEW.change_set_id
WHERE OLD.deck_id IS NOT DISTINCT FROM NEW.deck_id
WHERE OLD.deck_id IS DISTINCT FROM NEW.deck_id
UNION
-- Changed inventory_id
SELECT NEW.link_id, 'inventory_id', OLD.inventory_id::TEXT, NEW.inventory_id::TEXT, NEW.change_set_id
WHERE OLD.inventory_id IS NOT DISTINCT FROM NEW.inventory_id
WHERE OLD.inventory_id IS DISTINCT FROM NEW.inventory_id
UNION
-- Changed display_order
SELECT NEW.link_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.link_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,39 +48,39 @@ BEGIN
)
-- Changed notes
SELECT NEW.game_id, 'notes', OLD.notes::TEXT, NEW.notes::TEXT, NEW.change_set_id
WHERE OLD.notes IS NOT DISTINCT FROM NEW.notes
WHERE OLD.notes IS DISTINCT FROM NEW.notes
UNION
-- Changed is_commander
SELECT NEW.game_id, 'is_commander', OLD.is_commander::TEXT, NEW.is_commander::TEXT, NEW.change_set_id
WHERE OLD.is_commander IS NOT DISTINCT FROM NEW.is_commander
WHERE OLD.is_commander IS DISTINCT FROM NEW.is_commander
UNION
-- Changed is_draft
SELECT NEW.game_id, 'is_draft', OLD.is_draft::TEXT, NEW.is_draft::TEXT, NEW.change_set_id
WHERE OLD.is_draft IS NOT DISTINCT FROM NEW.is_draft
WHERE OLD.is_draft IS DISTINCT FROM NEW.is_draft
UNION
-- Changed is_sealed
SELECT NEW.game_id, 'is_sealed', OLD.is_sealed::TEXT, NEW.is_sealed::TEXT, NEW.change_set_id
WHERE OLD.is_sealed IS NOT DISTINCT FROM NEW.is_sealed
WHERE OLD.is_sealed IS DISTINCT FROM NEW.is_sealed
UNION
-- Changed location_name
SELECT NEW.game_id, 'location_name', OLD.location_name, NEW.location_name, NEW.change_set_id
WHERE OLD.location_name IS NOT DISTINCT FROM NEW.location_name
WHERE OLD.location_name IS DISTINCT FROM NEW.location_name
UNION
-- Changed start_on
SELECT NEW.game_id, 'start_on', OLD.start_on::TEXT, NEW.start_on::TEXT, NEW.change_set_id
WHERE OLD.start_on IS NOT DISTINCT FROM NEW.start_on
WHERE OLD.start_on IS DISTINCT FROM NEW.start_on
UNION
-- Changed end_on
SELECT NEW.game_id, 'end_on', OLD.end_on::TEXT, NEW.end_on::TEXT, NEW.change_set_id
WHERE OLD.end_on IS NOT DISTINCT FROM NEW.end_on
WHERE OLD.end_on IS DISTINCT FROM NEW.end_on
UNION
-- Changed starting_life
SELECT NEW.game_id, 'starting_life', OLD.starting_life::TEXT, NEW.starting_life::TEXT, NEW.change_set_id
WHERE OLD.starting_life IS NOT DISTINCT FROM NEW.starting_life
WHERE OLD.starting_life IS DISTINCT FROM NEW.starting_life
UNION
-- Changed active
SELECT NEW.game_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,31 +48,31 @@ BEGIN
)
-- Changed game_id
SELECT NEW.player_id, 'game_id', OLD.game_id::TEXT, NEW.game_id::TEXT, NEW.change_set_id
WHERE OLD.game_id IS NOT DISTINCT FROM NEW.game_id
WHERE OLD.game_id IS DISTINCT FROM NEW.game_id
UNION
-- Changed user_id
SELECT NEW.player_id, 'user_id', OLD.user_id::TEXT, NEW.user_id::TEXT, NEW.change_set_id
WHERE OLD.user_id IS NOT DISTINCT FROM NEW.user_id
WHERE OLD.user_id IS DISTINCT FROM NEW.user_id
UNION
-- Changed deck_id
SELECT NEW.player_id, 'deck_id', OLD.deck_id::TEXT, NEW.deck_id::TEXT, NEW.change_set_id
WHERE OLD.deck_id IS NOT DISTINCT FROM NEW.deck_id
WHERE OLD.deck_id IS DISTINCT FROM NEW.deck_id
UNION
-- Changed name
SELECT NEW.player_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed notes
SELECT NEW.player_id, 'notes', OLD.notes, NEW.notes, NEW.change_set_id
WHERE OLD.notes IS NOT DISTINCT FROM NEW.notes
WHERE OLD.notes IS DISTINCT FROM NEW.notes
UNION
-- Changed display_order
SELECT NEW.player_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.player_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,19 +48,19 @@ BEGIN
)
-- Changed game_id
SELECT NEW.round_id, 'game_id', OLD.game_id::TEXT, NEW.game_id::TEXT, NEW.change_set_id
WHERE OLD.game_id IS NOT DISTINCT FROM NEW.game_id
WHERE OLD.game_id IS DISTINCT FROM NEW.game_id
UNION
-- Changed notes
SELECT NEW.round_id, 'notes', OLD.notes::TEXT, NEW.notes::TEXT, NEW.change_set_id
WHERE OLD.notes IS NOT DISTINCT FROM NEW.notes
WHERE OLD.notes IS DISTINCT FROM NEW.notes
UNION
-- Changed display_order
SELECT NEW.round_id, 'display_order', OLD.display_order::TEXT, NEW.display_order::TEXT, NEW.change_set_id
WHERE OLD.display_order IS NOT DISTINCT FROM NEW.display_order
WHERE OLD.display_order IS DISTINCT FROM NEW.display_order
UNION
-- Changed active
SELECT NEW.round_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,35 +48,35 @@ BEGIN
)
-- Changed round_id
SELECT NEW.damage_id, 'round_id', OLD.round_id::TEXT, NEW.round_id::TEXT, NEW.change_set_id
WHERE OLD.round_id IS NOT DISTINCT FROM NEW.round_id
WHERE OLD.round_id IS DISTINCT FROM NEW.round_id
UNION
-- Changed player_id
SELECT NEW.damage_id, 'player_id', OLD.player_id::TEXT, NEW.player_id::TEXT, NEW.change_set_id
WHERE OLD.player_id IS NOT DISTINCT FROM NEW.player_id
WHERE OLD.player_id IS DISTINCT FROM NEW.player_id
UNION
-- Changed received_from_commander_player_id
SELECT NEW.damage_id, 'received_from_commander_player_id', OLD.received_from_commander_player_id::TEXT, NEW.received_from_commander_player_id::TEXT, NEW.change_set_id
WHERE OLD.received_from_commander_player_id IS NOT DISTINCT FROM NEW.received_from_commander_player_id
WHERE OLD.received_from_commander_player_id IS DISTINCT FROM NEW.received_from_commander_player_id
UNION
-- Changed life_gain
SELECT NEW.damage_id, 'life_gain', OLD.life_gain::TEXT, NEW.life_gain::TEXT, NEW.change_set_id
WHERE OLD.life_gain IS NOT DISTINCT FROM NEW.life_gain
WHERE OLD.life_gain IS DISTINCT FROM NEW.life_gain
UNION
-- Changed life_loss
SELECT NEW.damage_id, 'life_loss', OLD.life_loss::TEXT, NEW.life_loss::TEXT, NEW.change_set_id
WHERE OLD.life_loss IS NOT DISTINCT FROM NEW.life_loss
WHERE OLD.life_loss IS DISTINCT FROM NEW.life_loss
UNION
-- Changed commander_deaths
SELECT NEW.damage_id, 'commander_deaths', OLD.commander_deaths::TEXT, NEW.commander_deaths::TEXT, NEW.change_set_id
WHERE OLD.commander_deaths IS NOT DISTINCT FROM NEW.commander_deaths
WHERE OLD.commander_deaths IS DISTINCT FROM NEW.commander_deaths
UNION
-- Changed is_eliminated
SELECT NEW.damage_id, 'is_eliminated', OLD.is_eliminated::TEXT, NEW.is_eliminated::TEXT, NEW.change_set_id
WHERE OLD.is_eliminated IS NOT DISTINCT FROM NEW.is_eliminated
WHERE OLD.is_eliminated IS DISTINCT FROM NEW.is_eliminated
UNION
-- Changed active
SELECT NEW.damage_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,15 +48,15 @@ BEGIN
)
-- Changed user_id
SELECT NEW.member_id, 'user_id', OLD.user_id::TEXT, NEW.user_id::TEXT, NEW.change_set_id
WHERE OLD.user_id IS NOT DISTINCT FROM NEW.user_id
WHERE OLD.user_id IS DISTINCT FROM NEW.user_id
UNION
-- Changed is_permitted
SELECT NEW.member_id, 'is_permitted', OLD.is_permitted::TEXT, NEW.is_permitted::TEXT, NEW.change_set_id
WHERE OLD.is_permitted IS NOT DISTINCT FROM NEW.is_permitted
WHERE OLD.is_permitted IS DISTINCT FROM NEW.is_permitted
UNION
-- Changed active
SELECT NEW.member_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -48,35 +48,35 @@ BEGIN
)
-- Changed entity_type_code
SELECT NEW.statistic_id, 'entity_type_code', OLD.entity_type_code, NEW.entity_type_code, NEW.change_set_id
WHERE OLD.entity_type_code IS NOT DISTINCT FROM NEW.entity_type_code
WHERE OLD.entity_type_code IS DISTINCT FROM NEW.entity_type_code
UNION
-- Changed entity_record_id
SELECT NEW.statistic_id, 'entity_record_id', OLD.entity_record_id::TEXT, NEW.entity_record_id::TEXT, NEW.change_set_id
WHERE OLD.entity_record_id IS NOT DISTINCT FROM NEW.entity_record_id
WHERE OLD.entity_record_id IS DISTINCT FROM NEW.entity_record_id
UNION
-- Changed name
SELECT NEW.statistic_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed value_bool
SELECT NEW.statistic_id, 'value_bool', OLD.value_bool::TEXT, NEW.value_bool::TEXT, NEW.change_set_id
WHERE OLD.value_bool IS NOT DISTINCT FROM NEW.value_bool
WHERE OLD.value_bool IS DISTINCT FROM NEW.value_bool
UNION
-- Changed value_float
SELECT NEW.statistic_id, 'value_float', OLD.value_float::TEXT, NEW.value_float::TEXT, NEW.change_set_id
WHERE OLD.value_float IS NOT DISTINCT FROM NEW.value_float
WHERE OLD.value_float IS DISTINCT FROM NEW.value_float
UNION
-- Changed value_text
SELECT NEW.statistic_id, 'value_text', OLD.value_text, NEW.value_text, NEW.change_set_id
WHERE OLD.value_text IS NOT DISTINCT FROM NEW.value_text
WHERE OLD.value_text IS DISTINCT FROM NEW.value_text
UNION
-- Changed value_timestamp
SELECT NEW.statistic_id, 'value_timestamp', OLD.value_timestamp::TEXT, NEW.value_timestamp::TEXT, NEW.change_set_id
WHERE OLD.value_timestamp IS NOT DISTINCT FROM NEW.value_timestamp
WHERE OLD.value_timestamp IS DISTINCT FROM NEW.value_timestamp
UNION
-- Changed active
SELECT NEW.statistic_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_User_Get_Many (
a_get_all_user BOOLEAN
a_access_user_id INT
, a_get_all_user BOOLEAN
, a_get_inactive_user BOOLEAN
, a_user_ids TEXT
, a_require_all_id_filters_met BOOLEAN
@@ -24,20 +25,30 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_user BOOLEAN;
v_get_inactive_user BOOLEAN;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
v_user_ids TEXT;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_user := COALESCE(a_get_all_user, FALSE);
v_get_inactive_user := COALESCE(a_get_inactive_user, FALSE);
v_user_ids := TRIM(COALESCE(a_user_ids, ''));
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
RETURN QUERY
SELECT
TCG_USER.user_id
, TCG_USER.user_auth0_id
, TCG_USER.firstname
@@ -86,7 +97,8 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_User_Get_Many (
a_get_all_user := TRUE
a_access_user_id := 3
, a_get_all_user := TRUE
, a_get_inactive_user := FALSE
, a_user_ids := ''
, a_require_all_id_filters_met := TRUE

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_User_Relationship_Get_Many (
a_get_inactive_user_relationship BOOLEAN
a_access_user_id INT
, a_get_inactive_user_relationship BOOLEAN
, a_get_all_user_follower BOOLEAN
, a_user_follower_ids TEXT
, a_get_all_user_following BOOLEAN
@@ -25,6 +26,8 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_inactive_user_relationship BOOLEAN;
v_get_all_user_follower BOOLEAN;
v_user_follower_ids TEXT;
@@ -34,6 +37,7 @@ DECLARE
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_inactive_user_relationship := COALESCE(a_get_inactive_user_relationship, FALSE);
v_get_all_user_follower := COALESCE(a_get_all_user_follower, FALSE);
v_user_follower_ids := TRIM(COALESCE(a_user_follower_ids, ''));
@@ -43,8 +47,31 @@ BEGIN
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
RETURN QUERY
WITH Access_Relationship AS (
SELECT DISTINCT
RELATIONSHIP.relationship_id
FROM tcg.public.TCG_User_Relationship RELATIONSHIP
WHERE
(
v_can_admin
OR RELATIONSHIP.follower_user_id = v_access_user_id
OR RELATIONSHIP.following_user_id = v_access_user_id
)
AND (
v_get_inactive_user_relationship
OR RELATIONSHIP.active
)
)
SELECT DISTINCT
RELATIONSHIP.relationship_id
, RELATIONSHIP.follower_user_id
, RELATIONSHIP.following_user_id
@@ -57,6 +84,7 @@ BEGIN
, RELATIONSHIP.updated_last_by_user_id
, RELATIONSHIP.change_set_id
FROM tcg.public.TCG_User_Relationship RELATIONSHIP
INNER JOIN Access_Relationship ACCESS_RELATIONSHIP ON RELATIONSHIP.relationship_id = ACCESS_RELATIONSHIP.relationship_id
INNER JOIN tcg.public.TCG_User USER_FOLLOWER ON RELATIONSHIP.follower_user_id = USER_FOLLOWER.user_id
INNER JOIN tcg.public.TCG_User USER_FOLLOWING ON RELATIONSHIP.following_user_id = USER_FOLLOWING.user_id
WHERE
@@ -91,10 +119,6 @@ BEGIN
)
)
)
AND (
v_get_inactive_user_relationship
OR RELATIONSHIP.active
)
AND (
v_get_inactive_user
OR (
@@ -104,8 +128,8 @@ BEGIN
)
ORDER BY
RELATIONSHIP.follower_user_id
, NOT RELATIONSHIP.is_following
, NOT RELATIONSHIP.is_blocked
, RELATIONSHIP.is_following DESC
, RELATIONSHIP.is_blocked DESC
, RELATIONSHIP.following_user_id
;
END;
@@ -114,7 +138,8 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_User_Relationship_Get_Many (
a_get_inactive_user_relationship := FALSE
a_access_user_id := 3
, a_get_inactive_user_relationship := FALSE
, a_get_all_user_follower := TRUE
, a_user_follower_ids := ''
, a_get_all_user_following := TRUE

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Deck_Commander_Bracket_Get_Many (
a_get_all_commander_bracket BOOLEAN
a_access_user_id INT
, a_get_all_commander_bracket BOOLEAN
, a_get_inactive_commander_bracket BOOLEAN
, a_commander_bracket_ids TEXT
, a_commander_bracket_names TEXT
@@ -24,6 +25,8 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_commander_bracket BOOLEAN;
v_get_inactive_commander_bracket BOOLEAN;
v_commander_bracket_ids TEXT;
@@ -33,6 +36,7 @@ DECLARE
v_require_all_non_id_filters_met BOOLEAN;
v_require_any_non_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_commander_bracket := COALESCE(a_get_all_commander_bracket, TRUE);
v_get_inactive_commander_bracket := COALESCE(a_get_inactive_commander_bracket, FALSE);
v_commander_bracket_ids := TRIM(COALESCE(a_commander_bracket_ids, ''));
@@ -42,6 +46,12 @@ BEGIN
v_require_all_non_id_filters_met := COALESCE(a_require_all_non_id_filters_met, FALSE);
v_require_any_non_id_filters_met := COALESCE(a_require_any_non_id_filters_met, TRUE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
COMMANDER_BRACKET.commander_bracket_id
@@ -110,7 +120,8 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Deck_Commander_Bracket_Get_Many (
a_get_all_commander_bracket := TRUE
a_access_user_id := 3
, a_get_all_commander_bracket := TRUE
, a_get_inactive_commander_bracket := FALSE
, a_commander_bracket_ids := CAST(NULL AS TEXT)
, a_commander_bracket_names := CAST(NULL AS TEXT)

View File

@@ -1,16 +1,20 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Deck_Get_Many (
a_get_all_deck BOOLEAN
a_access_user_id INT
, a_get_all_deck BOOLEAN
, a_get_inactive_deck BOOLEAN
, a_deck_ids TEXT
, a_deck_names TEXT
, a_commander_bracket_ids TEXT
, a_created_by_user_ids TEXT
-- , a_created_by_user_ids TEXT
, a_include_commander_option BOOLEAN
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
, a_filter_by_game_session_not_player BOOLEAN
, a_get_all_user BOOLEAN
, a_get_inactive_user BOOLEAN
, a_user_ids TEXT
-- , a_filter_by_game_session_not_player BOOLEAN
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
, a_require_all_non_id_filters_met BOOLEAN
@@ -31,38 +35,109 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_deck BOOLEAN;
v_get_inactive_deck BOOLEAN;
v_deck_ids TEXT;
v_deck_names TEXT;
v_created_by_user_ids TEXT;
v_include_commander_option BOOLEAN;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
v_game_ids TEXT;
v_filter_by_game_session_not_player BOOLEAN;
v_get_all_user BOOLEAN;
v_get_inactive_user BOOLEAN;
v_user_ids TEXT;
-- v_filter_by_game_session_not_player BOOLEAN;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
v_require_all_non_id_filters_met BOOLEAN;
v_require_any_non_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_deck := COALESCE(a_get_all_deck, FALSE);
v_get_inactive_deck := COALESCE(a_get_inactive_deck, FALSE);
v_deck_ids := TRIM(COALESCE(a_deck_ids, ''));
v_deck_names := TRIM(COALESCE(a_deck_names, ''));
v_include_commander_option := COALESCE(a_include_commander_option, TRUE);
v_created_by_user_ids := TRIM(COALESCE(a_created_by_user_ids, ''));
-- v_created_by_user_ids := TRIM(COALESCE(a_created_by_user_ids, ''));
v_get_all_game := COALESCE(a_get_all_game, FALSE);
v_get_inactive_game := COALESCE(a_get_inactive_game, FALSE);
v_game_ids := TRIM(COALESCE(a_game_ids, ''));
v_filter_by_game_session_not_player := COALESCE(a_filter_by_game_session_not_player, TRUE);
v_get_all_user := COALESCE(a_get_all_user, FALSE);
v_get_inactive_user := COALESCE(a_get_inactive_user, FALSE);
v_user_ids := TRIM(COALESCE(a_user_ids, ''));
-- v_filter_by_game_session_not_player := COALESCE(a_filter_by_game_session_not_player, TRUE);
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
v_require_all_non_id_filters_met := COALESCE(a_require_all_non_id_filters_met, FALSE);
v_require_any_non_id_filters_met := COALESCE(a_require_any_non_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY
WITH
Access_Game AS (
SELECT DISTINCT
GAME.game_id
, GAME.active
FROM tcg.public.FN_TCG_MTG_Game_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) GAME
)
, Access_Player AS (
SELECT
PLAYER.player_id
, PLAYER.game_id
, PLAYER.user_id
, PLAYER.deck_id
, PLAYER.active
FROM tcg.public.FN_TCG_MTG_Game_Player_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) PLAYER
)
, Access_User AS (
SELECT DISTINCT TCG_USER.user_id
FROM tcg.public.TCG_User TCG_USER
LEFT JOIN Access_Player ACCESS_PLAYER ON TCG_USER.user_id = ACCESS_PLAYER.user_id
LEFT JOIN tcg.public.TCG_MTG_Game_Session_Member SESSION_MEMBER
ON TCG_USER.user_id = SESSION_MEMBER.user_id
AND SESSION_MEMBER.is_permitted
AND SESSION_MEMBER.active
LEFT JOIN Access_Game GAME ON SESSION_MEMBER.game_id = GAME.game_id
WHERE
(
v_can_admin
OR TCG_USER.user_id = v_access_user_id
OR ACCESS_PLAYER.player_id IS NOT NULL
OR GAME.game_id IS NOT NULL
)
AND (
v_get_inactive_user
OR TCG_USER.active
)
)
SELECT DISTINCT
DECK.deck_id
, DECK.name
@@ -75,7 +150,9 @@ BEGIN
, DECK.updated_last_by_user_id
, DECK.change_set_id
FROM tcg.public.TCG_MTG_Deck DECK
LEFT JOIN tcg.public.TCG_MTG_Game SESSION_GAME ON DECK.game_id = SESSION_GAME.game_id
INNER JOIN Access_User ACCESS_USER ON DECK.created_by_user_id = ACCESS_USER.user_id
LEFT JOIN tcg.public.TCG_MTG_Game_Session_Member SESSION_MEMBER ON DECK.created_by_user_id = SESSION_MEMBER.user_id
LEFT JOIN tcg.public.TCG_MTG_Game SESSION_GAME ON SESSION_MEMBER.game_id = SESSION_GAME.game_id
LEFT JOIN tcg.public.TCG_MTG_Game_Player PLAYER ON DECK.deck_id = PLAYER.deck_id
LEFT JOIN tcg.public.TCG_MTG_Game PLAYER_GAME ON PLAYER.game_id = PLAYER_GAME.game_id
WHERE
@@ -90,17 +167,11 @@ BEGIN
v_get_all_deck
OR (
DECK.deck_id = ANY(string_to_array(v_deck_ids, ',')::INT[])
AND DECK.created_by_user_id = ANY(string_to_array(v_created_by_user_ids, ',')::INT[])
AND DECK.created_by_user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
AND (
v_get_all_game
OR (
v_filter_by_game_session_not_player
AND SESSION_GAME.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
OR (
NOT v_filter_by_game_session_not_player
AND PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
OR SESSION_GAME.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
OR PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
)
)
@@ -111,17 +182,11 @@ BEGIN
AND (
v_get_all_deck
OR DECK.deck_id = ANY(string_to_array(v_deck_ids, ',')::INT[])
OR DECK.created_by_user_id = ANY(string_to_array(v_created_by_user_ids, ',')::INT[])
OR DECK.created_by_user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
OR (
v_get_all_game
OR (
v_filter_by_game_session_not_player
AND SESSION_GAME.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
OR (
NOT v_filter_by_game_session_not_player
AND PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
OR SESSION_GAME.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
OR PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
)
)
@@ -160,14 +225,8 @@ BEGIN
)
AND (
v_get_inactive_game
OR (
v_filter_by_game_session_not_player
AND SESSION_GAME.active
)
OR (
NOT v_filter_by_game_session_not_player
AND PLAYER_GAME.active
)
OR SESSION_GAME.active
OR PLAYER_GAME.active
)
ORDER BY DECK.name
;
@@ -177,17 +236,21 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Deck_Get_Many (
a_get_all_deck := TRUE
a_access_user_id := 5
, a_get_all_deck := TRUE
, a_get_inactive_deck := FALSE
, a_deck_ids := CAST(NULL AS TEXT)
, a_deck_names := CAST(NULL AS TEXT)
, a_commander_bracket_ids := CAST(NULL AS TEXT)
, a_include_commander_option := true
, a_created_by_user_ids := '3'
-- , a_created_by_user_ids := '3'
, a_get_all_game := FALSE
, a_get_inactive_game := FALSE
, a_game_ids := CAST(NULL AS TEXT)
, a_filter_by_game_session_not_player := TRUE
, a_get_all_user := FALSE
, a_get_inactive_user := FALSE
, a_user_ids := CAST(NULL AS TEXT)
-- , a_filter_by_game_session_not_player := TRUE
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
, a_require_all_non_id_filters_met := FALSE

View File

@@ -0,0 +1,511 @@
CREATE OR REPLACE PROCEDURE tcg.public.USP_TCG_MTG_Deck_Save (
a_comment TEXT
, a_guid UUID
, a_user_id INT
, OUT o_success BOOLEAN
)
LANGUAGE plpgsql
AS $$
DECLARE
v_bad_data_error_type_id INT;
v_change_set_id INT;
v_comment TEXT;
-- v_error_message TEXT;
v_guid UUID;
v_time_start TIMESTAMP;
v_user_id INT;
v_warning_error_type_id INT;
BEGIN
v_comment := TRIM(COALESCE(a_comment, ''));
v_guid := a_guid;
v_user_id := a_user_id;
v_bad_data_error_type_id := (SELECT ERROR_TYPE.error_type_id FROM tcg.public.Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = 'BAD_DATA' LIMIT 1);
v_warning_error_type_id := (SELECT ERROR_TYPE.error_type_id FROM tcg.public.Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = 'WARNING' LIMIT 1);
v_time_start := CURRENT_TIMESTAMP;
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Deck;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Commander_Bracket;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Error;
CREATE TEMP TABLE Temp_MTG_Deck_Save_Deck (
temp_id INT NOT NULL
, deck_id INT
, name TEXT
, is_commander BOOLEAN
, commander_bracket_id INT
, active BOOLEAN
, created_on TIMESTAMP
, created_by_user_id INT
, updated_last_on TIMESTAMP
, updated_last_by_user_id INT
, is_new BOOLEAN
, error_name TEXT
, is_duplicate BOOLEAN
);
CREATE TEMP TABLE Temp_MTG_Deck_Save_Commander_Bracket (
commander_bracket_id INT NOT NULL
, name TEXT
, description TEXT
, display_order INT
, active BOOLEAN
, created_on TIMESTAMP
, created_by_user_id INT
, updated_last_on TIMESTAMP
, updated_last_by_user_id INT
, change_set_id INT
);
CREATE TEMP TABLE Temp_MTG_Deck_Save_Error (
temp_id INT GENERATED ALWAYS AS IDENTITY
, error_type_id INT
, message TEXT
);
INSERT INTO Temp_MTG_Deck_Save_Commander_Bracket (
commander_bracket_id
, name
, description
, display_order
, active
, created_on
, created_by_user_id
, updated_last_on
, updated_last_by_user_id
, change_set_id
)
SELECT
COMMANDER_BRACKET.commander_bracket_id
, COMMANDER_BRACKET.name
, COMMANDER_BRACKET.description
, COMMANDER_BRACKET.display_order
, COMMANDER_BRACKET.active
, COMMANDER_BRACKET.created_on
, COMMANDER_BRACKET.created_by_user_id
, COMMANDER_BRACKET.updated_last_on
, COMMANDER_BRACKET.updated_last_by_user_id
, COMMANDER_BRACKET.change_set_id
FROM tcg.public.TCG_MTG_Deck_Commander_Bracket COMMANDER_BRACKET
;
WITH Temp_Deck AS (
SELECT
DECK_T.temp_id
, CASE
WHEN
COALESCE(DECK_T.deck_id, 0) < 1
OR DECK.deck_id IS NULL
THEN DECK.deck_id
ELSE DECK_T.deck_id
END AS deck_id
, TRIM(COALESCE(DECK_T.name, '')) AS name
, COALESCE(DECK_T.is_commander, TRUE) AS is_commander
, DECK_T.commander_bracket_id
, COALESCE(DECK_T.active, TRUE) AS active
, COALESCE(DECK_T.created_on, v_time_start) AS created_on
, COALESCE(DECK_T.created_by_user_id, v_user_id) AS created_by_user_id
, COALESCE(DECK_T.updated_last_on, v_time_start) AS updated_last_on
, COALESCE(DECK_T.updated_last_by_user_id, v_user_id) AS updated_last_by_user_id
FROM tcg.public.TCG_MTG_Deck_Temp DECK_T
LEFT JOIN tcg.public.TCG_MTG_Deck DECK
ON DECK.deck_id = DECK_T.deck_id
AND DECK.created_by_user_id = v_user_id
WHERE DECK_T.guid = v_guid
)
INSERT INTO Temp_MTG_Deck_Save_Deck (
temp_id
, deck_id
, name
, is_commander
, commander_bracket_id
, active
, created_on
, created_by_user_id
, updated_last_on
, updated_last_by_user_id
, is_new
, error_name
)
SELECT
T_DECK.temp_id
, T_DECK.deck_id
, T_DECK.name
, T_DECK.is_commander
, T_DECK.commander_bracket_id
, T_DECK.active
, T_DECK.created_on
, T_DECK.created_by_user_id
, T_DECK.updated_last_on
, T_DECK.updated_last_by_user_id
, CASE WHEN T_DECK.deck_id IS NULL THEN TRUE ELSE FALSE END AS is_new
, CONCAT(
'Deck { id: '
, CAST(T_DECK.deck_id AS VARCHAR)
, ', temp id: '
, CAST(T_DECK.temp_id AS VARCHAR)
, ', name: '
, T_DECK.name
, ' }'
) -- error_name
FROM Temp_Deck T_DECK
LEFT JOIN tcg.public.TCG_MTG_Deck DECK
ON DECK.deck_id = T_DECK.deck_id
AND DECK.created_by_user_id = v_user_id
;
-- Missing fields
WITH Deck_Missing_Field AS (
SELECT
T_DECK.temp_id
, 'name' AS field
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE T_DECK.name = ''
UNION
SELECT
T_DECK.temp_id
, 'commander_bracket_id' AS field
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE
T_DECK.commander_bracket_id IS NULL
AND T_DECK.is_commander
)
INSERT INTO Temp_MTG_Deck_Save_Error (
error_type_id
, message
)
SELECT
v_bad_data_error_type_id -- error_type_id
, CONCAT(
'Missing mandatory field: '
, DECK_MISSING_FIELD.field
, ' on '
, T_DECK.error_name
, '.'
) -- message
FROM Temp_MTG_Deck_Save_Deck T_DECK
INNER JOIN Deck_Missing_Field DECK_MISSING_FIELD ON T_DECK.temp_id = DECK_MISSING_FIELD.temp_id
;
-- Failed join fields
WITH Deck_Failed_Join_Field AS (
SELECT
T_DECK.temp_id
, 'commander_bracket_id' AS field
FROM Temp_MTG_Deck_Save_Deck T_DECK
LEFT JOIN Temp_MTG_Deck_Save_Commander_Bracket T_COMMANDER_BRACKET
ON T_DECK.commander_bracket_id = T_COMMANDER_BRACKET.commander_bracket_id
AND T_COMMANDER_BRACKET.active
WHERE
T_COMMANDER_BRACKET.commander_bracket_id IS NULL
AND T_DECK.commander_bracket_id IS NOT NULL
)
INSERT INTO Temp_MTG_Deck_Save_Error (
error_type_id
, message
)
SELECT
v_bad_data_error_type_id -- error_type_id
, CONCAT(
'Failed relationship: '
, DECK_FAILED_JOIN_FIELD.field
, ' on '
, T_DECK.error_name
, '.'
) -- message
FROM Temp_MTG_Deck_Save_Deck T_DECK
INNER JOIN Deck_Failed_Join_Field DECK_FAILED_JOIN_FIELD ON T_DECK.temp_id = DECK_FAILED_JOIN_FIELD.temp_id
;
-- Duplicate Deck
WITH
All_Deck AS (
SELECT
T_DECK.temp_id
, T_DECK.created_by_user_id
, T_DECK.name
, TRUE AS is_save_record
FROM Temp_MTG_Deck_Save_Deck T_DECK
UNION
SELECT
NULL AS temp_id
, DECK.created_by_user_id
, DECK.name
, FALSE AS is_save_record
FROM tcg.public.TCG_MTG_Deck DECK
LEFT JOIN Temp_MTG_Deck_Save_Deck T_DECK ON DECK.deck_id = T_DECK.deck_id
WHERE T_DECK.deck_id IS NULL
)
, Deck_Name_Count AS (
SELECT
ALL_DECK.created_by_user_id
, ALL_DECK.name
, COUNT(*) AS count_deck
FROM All_Deck ALL_DECK
GROUP BY
ALL_DECK.created_by_user_id
, ALL_DECK.name
)
, Duplicate_Deck AS (
SELECT
ALL_DECK.temp_id
, ALL_DECK.name
, ALL_DECK.created_by_user_id
, CASE WHEN COALESCE(DECK_NAME_COUNT.count_deck, 0) <= 1 THEN TRUE ELSE FALSE END AS is_unique
FROM All_Deck ALL_DECK
INNER JOIN Deck_Name_Count DECK_NAME_COUNT
ON ALL_DECK.name = DECK_NAME_COUNT.name
AND ALL_DECK.created_by_user_id = DECK_NAME_COUNT.created_by_user_id
)
UPDATE Temp_MTG_Deck_Save_Deck T_DECK
SET is_duplicate = NOT DUPLICATE_DECK.is_unique
FROM Duplicate_Deck DUPLICATE_DECK
WHERE T_DECK.temp_id = DUPLICATE_DECK.temp_id
;
IF EXISTS (
SELECT *
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE T_DECK.is_duplicate
LIMIT 1
) THEN
INSERT INTO Temp_MTG_Deck_Save_Error (
error_type_id
, message
)
SELECT
v_bad_data_error_type_id -- error_type_id
, CONCAT(
'Duplicate on '
, T_DECK.error_name
) -- message
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE T_DECK.is_duplicate
;
END IF;
-- Nothing to save
IF NOT EXISTS (SELECT * FROM Temp_MTG_Deck_Save_Deck LIMIT 1) THEN
INSERT INTO Temp_MTG_Deck_Save_Error (
error_type_id
, message
)
VALUES (
v_warning_error_type_id
, 'Nothing to save.'
);
END IF;
/*
INSERT INTO Temp_MTG_Deck_Save_Error (
error_type_id
, message
)
SELECT
v_warning_error_type_id AS error_type_id
, CONCAT(
'Decks: '
, STRING_AGG(T_DECK.error_name, ', ')
) AS message
FROM Temp_MTG_Deck_Save_Deck T_DECK
;
*/
-- Outputs
-- Change Set
INSERT INTO tcg.public.TCG_Change_Set (
comment
, updated_last_by_user_id
)
VALUES (
v_comment
, v_user_id
)
RETURNING change_set_id INTO v_change_set_id
;
IF NOT EXISTS (SELECT * FROM Temp_MTG_Deck_Save_Error T_ERROR WHERE T_ERROR.error_type_id <> v_warning_error_type_id LIMIT 1) THEN
-- Deck
INSERT INTO tcg.public.TCG_MTG_Deck (
name
, is_commander
, commander_bracket_id
, active
, created_on
, created_by_user_id
, updated_last_on
, updated_last_by_user_id
, change_set_id
)
SELECT
T_DECK.name
, T_DECK.is_commander
, T_DECK.commander_bracket_id
, T_DECK.active
, T_DECK.created_on
, T_DECK.created_by_user_id
, T_DECK.updated_last_on
, T_DECK.updated_last_by_user_id
, v_change_set_id -- change_set_id
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE
T_DECK.is_new
AND T_DECK.active
;
UPDATE tcg.public.TCG_MTG_Deck DECK
SET
name = T_DECK.name
, is_commander = T_DECK.is_commander
, commander_bracket_id = T_DECK.commander_bracket_id
, active = T_DECK.active
, updated_last_on = v_time_start
, updated_last_by_user_id = v_user_id
, change_set_id = v_change_set_id
FROM Temp_MTG_Deck_Save_Deck T_DECK
WHERE
DECK.deck_id = T_DECK.deck_id
AND NOT T_DECK.is_new
;
END IF;
-- Error
INSERT INTO tcg.public.Error (
guid
, error_type_id
, message
, display_order
, created_on
, created_by_user_id
, updated_last_on
, updated_last_by_user_id
, change_set_id
)
SELECT
v_guid
, T_ERROR.error_type_id
, T_ERROR.message
, T_ERROR.temp_id
, v_time_start
, v_user_id
, v_time_start
, v_user_id
, v_change_set_id
FROM Temp_MTG_Deck_Save_Error T_ERROR
LEFT JOIN tcg.public.Error_Type ERROR_TYPE ON T_ERROR.error_type_id = ERROR_TYPE.error_type_id
ORDER BY T_ERROR.temp_id
;
COMMIT;
o_success := NOT EXISTS (
SELECT *
FROM Temp_MTG_Deck_Save_Error T_ERROR
WHERE T_ERROR.error_type_id <> v_warning_error_type_id
LIMIT 1
);
DELETE FROM tcg.public.TCG_MTG_Deck_Temp DECK_T WHERE DECK_T.guid = v_guid;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Deck;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Commander_Bracket;
DROP TABLE IF EXISTS Temp_MTG_Deck_Save_Error;
END;
$$;
-- Call it with:
DO $$
DECLARE
v_comment TEXT := 'MTG Deck Save.';
v_guid UUID;
v_user_id INT := 3;
v_success BOOLEAN;
BEGIN
v_guid := gen_random_uuid();
INSERT INTO tcg.public.TCG_MTG_Deck_Temp (
guid
, deck_id
, name
, is_commander
, commander_bracket_id
, active
)
VALUES
(
v_guid
, 1 -- deck_id
, 'Final Fantasy: Counter Blitz' -- name
, TRUE -- is_commander
, 2 -- commander_bracket_id
, TRUE -- active
)
, (
v_guid
, 2 -- deck_id
, 'Tarkir Dragonstorm: Jeskai Striker' -- name
, TRUE -- is_commander
, 2 -- commander_bracket_id
, TRUE -- active
)
, (
v_guid
, 3 -- deck_id
, 'The Lost Caverns of Ixalan: Blood Rites' -- name
, TRUE -- is_commander
, 2 -- commander_bracket_id
, TRUE -- active
)
;
CALL tcg.public.USP_TCG_MTG_Deck_Save (
v_comment -- a_comment
, v_guid -- a_guid
, v_user_id -- a_user_id
, v_success -- o_success
);
RAISE NOTICE 'Success: %', CASE WHEN v_success THEN 'TRUE' ELSE 'FALSE' END;
END;
$$;
SELECT *
-- DELETE
FROM tcg.public.Error ERROR
LEFT JOIN tcg.public.Error_Type ERROR_TYPE ON ERROR.error_type_id = ERROR_TYPE.error_type_id
;
SELECT *
FROM tcg.public.Error_Type ERROR_TYPE
;
SELECT *
FROM tcg.public.TCG_Change_Set CHANGE_SET
ORDER BY CHANGE_SET.change_set_id DESC
;
SELECT *
-- DELETE
FROM tcg.public.TCG_MTG_Deck_Temp
;
SELECT *
-- DELETE
FROM tcg.public.TCG_MTG_Deck DECK
;
SELECT *
-- DELETE
FROM tcg.public.TCG_MTG_Deck_Audit DECK_AUDIT
;
-- 1 - Final Fantasy: Counter Blitz
-- 2 - Tarkir Dragonstorm: Jeskai Striker

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Game_Get_Many (
a_get_all_game BOOLEAN
a_access_user_id INT
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
, a_get_all_user BOOLEAN
@@ -28,7 +29,9 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
-- v_bad_data_error_type_id INT;
v_can_admin BOOLEAN;
-- v_warning_error_type_id INT;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
@@ -41,6 +44,7 @@ DECLARE
-- , v_require_all_non_id_filters_met BOOLEAN
-- , v_require_any_non_id_filters_met BOOLEAN
BEGIN
v_access_user_id := a_access_user_id;
-- v_bad_data_error_type_id := (SELECT ERROR_TYPE.error_type_id FROM tcg.public.Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = 'BAD_DATA' LIMIT 1);
-- v_warning_error_type_id := (SELECT ERROR_TYPE.error_type_id FROM tcg.public.Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = 'WARNING' LIMIT 1);
v_get_all_game := COALESCE(a_get_all_game, FALSE);
@@ -52,9 +56,43 @@ BEGIN
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
-- Outputs
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
RETURN QUERY SELECT
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY
WITH Access_Game AS (
SELECT DISTINCT GAME.game_id
FROM tcg.public.TCG_MTG_Game GAME
LEFT JOIN tcg.public.TCG_MTG_Game_Player PLAYER
ON GAME.game_id = PLAYER.game_id
AND (
v_get_inactive_user
OR PLAYER.active
)
LEFT JOIN tcg.public.TCG_MTG_Game_Session_Member SESSION_MEMBER
ON GAME.game_id = SESSION_MEMBER.game_id
AND SESSION_MEMBER.is_permitted
AND (
v_get_inactive_user
OR SESSION_MEMBER.active
)
WHERE
(
v_can_admin
OR GAME.created_by_user_id = v_access_user_id
OR PLAYER.user_id = v_access_user_id
OR SESSION_MEMBER.user_id = v_access_user_id
)
AND (
v_get_inactive_game
OR GAME.active
)
)
SELECT DISTINCT
GAME.game_id
, GAME.notes
, GAME.is_commander
@@ -70,7 +108,9 @@ BEGIN
, GAME.updated_last_on
, GAME.updated_last_by_user_id
FROM tcg.public.TCG_MTG_Game GAME
INNER JOIN Access_Game ACCESS_GAME ON GAME.game_id = ACCESS_GAME.game_id
INNER JOIN tcg.public.TCG_User CREATOR_USER ON GAME.created_by_user_id = CREATOR_USER.user_id
LEFT JOIN tcg.public.TCG_MTG_Game_Player PLAYER ON GAME.game_id = PLAYER.game_id
WHERE
(
(
@@ -86,6 +126,7 @@ BEGIN
AND (
a_get_all_user
OR CREATOR_USER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
OR PLAYER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
)
)
OR (
@@ -98,17 +139,10 @@ BEGIN
AND (
v_get_all_user
OR CREATOR_USER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
OR PLAYER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
)
)
)
AND (
v_get_inactive_game
OR GAME.active
)
AND (
v_get_inactive_user
OR CREATOR_USER.active
)
ORDER BY GAME.created_on DESC
;
END;
@@ -117,14 +151,15 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Get_Many (
a_get_all_game := TRUE
a_access_user_id := 4
, a_get_all_game := TRUE
, a_get_inactive_game := FALSE
, a_game_ids := ''
, a_get_all_user := TRUE
, a_get_inactive_user := FALSE
, a_user_ids := ''
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
, a_get_all_user := FALSE
, a_get_inactive_user := FALSE
, a_user_ids := '4'
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := TRUE
)
;

View File

@@ -1,8 +1,12 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Game_Player_Get_Many (
a_get_all_game BOOLEAN
a_access_user_id INT
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
, a_get_all_user BOOLEAN
, a_get_inactive_user BOOLEAN
, a_user_ids TEXT
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
)
@@ -24,38 +28,69 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
v_game_ids TEXT;
v_get_all_user BOOLEAN;
v_get_inactive_user BOOLEAN;
v_user_ids TEXT;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_game := COALESCE(a_get_all_game, FALSE);
v_get_inactive_game := COALESCE(a_get_inactive_game, FALSE);
v_game_ids := TRIM(COALESCE(a_game_ids, ''));
v_get_all_user := COALESCE(a_get_all_user, FALSE);
v_get_inactive_user := COALESCE(a_get_inactive_user, FALSE);
v_user_ids := TRIM(COALESCE(a_user_ids, ''));
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
-- Outputs
RETURN QUERY
WITH User_Name AS (
SELECT
TCG_USER.user_id
, CASE
WHEN
TRIM(COALESCE(TCG_USER.firstname, '')) <> ''
AND TRIM(COALESCE(TCG_USER.surname, '')) <> ''
THEN CONCAT(
TRIM(COALESCE(TCG_USER.firstname, ''))
, ' '
, TRIM(COALESCE(TCG_USER.surname, ''))
)
WHEN TRIM(COALESCE(TCG_USER.firstname, '')) <> ''
THEN TRIM(COALESCE(TCG_USER.firstname, ''))
ELSE TRIM(COALESCE(TCG_USER.surname, ''))
END AS name
FROM tcg.public.TCG_User TCG_USER
)
WITH
User_Name AS (
SELECT
TCG_USER.user_id
, CASE
WHEN
TRIM(COALESCE(TCG_USER.firstname, '')) <> ''
AND TRIM(COALESCE(TCG_USER.surname, '')) <> ''
THEN CONCAT(
TRIM(COALESCE(TCG_USER.firstname, ''))
, ' '
, TRIM(COALESCE(TCG_USER.surname, ''))
)
WHEN TRIM(COALESCE(TCG_USER.firstname, '')) <> ''
THEN TRIM(COALESCE(TCG_USER.firstname, ''))
ELSE TRIM(COALESCE(TCG_USER.surname, ''))
END AS name
FROM tcg.public.TCG_User TCG_USER
)
, Access_Game AS (
SELECT
GAME.game_id
, GAME.active
, GAME.created_on
, GAME.created_by_user_id
FROM tcg.public.FN_TCG_MTG_Game_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) GAME
)
SELECT
PLAYER.player_id
, PLAYER.game_id
@@ -86,7 +121,7 @@ BEGIN
, PLAYER.updated_last_by_user_id
, PLAYER.change_set_id
FROM tcg.public.TCG_MTG_Game_Player PLAYER
INNER JOIN tcg.public.TCG_MTG_Game GAME ON PLAYER.game_id = GAME.game_id
INNER JOIN Access_Game GAME ON PLAYER.game_id = GAME.game_id
-- LEFT JOIN tcg.public.TCG_User TCG_USER ON PLAYER.user_id = TCG_USER.user_id
LEFT JOIN User_Name USER_NAME ON PLAYER.user_id = USER_NAME.user_id
LEFT JOIN tcg.public.TCG_MTG_Deck DECK ON PLAYER.deck_id = DECK.deck_id
@@ -102,6 +137,11 @@ BEGIN
v_get_all_game
OR PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
AND (
v_get_all_user
OR GAME.created_by_user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
OR PLAYER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
)
)
OR (
NOT v_require_all_id_filters_met
@@ -110,12 +150,24 @@ BEGIN
v_get_all_game
OR PLAYER.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
AND (
v_get_all_user
OR GAME.created_by_user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
OR PLAYER.user_id = ANY(string_to_array(v_user_ids, ',')::INT[])
)
)
)
AND (
v_get_inactive_game
OR GAME.active
)
AND (
(
v_get_inactive_game
AND v_get_inactive_user
)
OR PLAYER.active
)
ORDER BY
GAME.created_on DESC
, PLAYER.display_order
@@ -126,9 +178,13 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Player_Get_Many (
a_get_all_game := FALSE
a_access_user_id := 5
, a_get_all_game := TRUE
, a_get_inactive_game := FALSE
, a_game_ids := '34'
, a_get_all_user := FALSE
, a_get_inactive_user := FALSE
, a_user_ids := '5'
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
)

View File

@@ -1,8 +1,12 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Game_Round_Get_Many (
a_get_all_game BOOLEAN
a_access_user_id INT
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
, a_get_all_user BOOLEAN
, a_get_inactive_user BOOLEAN
, a_user_ids TEXT
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
)
@@ -21,33 +25,68 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
v_game_ids TEXT;
v_get_all_user BOOLEAN;
v_get_inactive_user BOOLEAN;
v_user_ids TEXT;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_game := COALESCE(a_get_all_game, FALSE);
v_get_inactive_game := COALESCE(a_get_inactive_game, FALSE);
v_game_ids := TRIM(COALESCE(a_game_ids, ''));
v_get_all_user := COALESCE(a_get_all_user, FALSE);
v_get_inactive_user := COALESCE(a_get_inactive_user, FALSE);
v_user_ids := TRIM(COALESCE(a_user_ids, ''));
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
ROUND.round_id
, ROUND.game_id
, ROUND.notes
, ROUND.display_order
, ROUND.active
, ROUND.created_on
, ROUND.created_by_user_id
, ROUND.updated_last_on
, ROUND.updated_last_by_user_id
, ROUND.change_set_id
FROM tcg.public.TCG_MTG_Game_Round ROUND
INNER JOIN tcg.public.TCG_MTG_Game GAME ON ROUND.game_id = GAME.game_id
RETURN QUERY
WITH Access_Game AS (
SELECT
GAME.game_id
, GAME.active
, GAME.created_on
, GAME.created_by_user_id
FROM tcg.public.FN_TCG_MTG_Game_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) GAME
)
SELECT
TCG_ROUND.round_id
, TCG_ROUND.game_id
, TCG_ROUND.notes
, TCG_ROUND.display_order
, TCG_ROUND.active
, TCG_ROUND.created_on
, TCG_ROUND.created_by_user_id
, TCG_ROUND.updated_last_on
, TCG_ROUND.updated_last_by_user_id
, TCG_ROUND.change_set_id
FROM tcg.public.TCG_MTG_Game_Round TCG_ROUND
INNER JOIN Access_Game ACCESS_GAME ON TCG_ROUND.game_id = ACCESS_GAME.game_id
INNER JOIN tcg.public.TCG_MTG_Game GAME ON TCG_ROUND.game_id = GAME.game_id
WHERE
(
(
@@ -58,7 +97,7 @@ BEGIN
v_require_all_id_filters_met
AND (
v_get_all_game
OR ROUND.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
OR TCG_ROUND.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
)
OR (
@@ -66,17 +105,17 @@ BEGIN
AND v_require_any_id_filters_met
AND (
v_get_all_game
OR ROUND.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
OR TCG_ROUND.game_id = ANY(string_to_array(v_game_ids, ',')::INT[])
)
)
)
AND (
v_get_inactive_game
OR ROUND.active
OR TCG_ROUND.active
)
ORDER BY
GAME.created_on DESC
, ROUND.display_order
, TCG_ROUND.display_order
;
END;
$$;
@@ -84,9 +123,13 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Round_Get_Many (
a_get_all_game := FALSE
a_access_user_id := 3
, a_get_all_game := FALSE
, a_get_inactive_game := FALSE
, a_game_ids := '11'
, a_get_all_user := TRUE
, a_get_inactive_user := FALSE
, a_user_ids := ''
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
)

View File

@@ -1,8 +1,12 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Game_Round_Player_Damage_Get_Many (
a_get_all_game BOOLEAN
a_access_user_id INT
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
, a_get_all_user BOOLEAN
, a_get_inactive_user BOOLEAN
, a_user_ids TEXT
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
)
@@ -21,24 +25,62 @@ RETURNS TABLE (
, updated_last_on TIMESTAMP
, updated_last_by_user_id INT
, change_set_id INT
, game_created_on TIMESTAMP
, round_display_order INT
, player_display_order INT
)
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
v_game_ids TEXT;
v_get_all_user BOOLEAN;
v_get_inactive_user BOOLEAN;
v_user_ids TEXT;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_game := COALESCE(a_get_all_game, FALSE);
v_get_inactive_game := COALESCE(a_get_inactive_game, FALSE);
v_game_ids := TRIM(COALESCE(a_game_ids, ''));
v_get_all_user := COALESCE(a_get_all_user, FALSE);
v_get_inactive_user := COALESCE(a_get_inactive_user, FALSE);
v_user_ids := TRIM(COALESCE(a_user_ids, ''));
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
RETURN QUERY
WITH Access_Player AS (
SELECT
PLAYER.player_id
, PLAYER.game_id
, PLAYER.user_id
, PLAYER.deck_id
, PLAYER.active
FROM tcg.public.FN_TCG_MTG_Game_Player_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) PLAYER
)
SELECT DISTINCT
PLAYER_DAMAGE.damage_id
, PLAYER_DAMAGE.round_id
, PLAYER_DAMAGE.player_id
@@ -53,7 +95,11 @@ BEGIN
, PLAYER_DAMAGE.updated_last_on
, PLAYER_DAMAGE.updated_last_by_user_id
, PLAYER_DAMAGE.change_set_id
, GAME.created_on AS game_created_on
, GAME_ROUND.display_order AS round_display_order
, PLAYER.display_order AS player_display_order
FROM tcg.public.TCG_MTG_Game_Round_Player_Damage PLAYER_DAMAGE
INNER JOIN Access_Player ACCESS_PLAYER ON PLAYER_DAMAGE.player_id = ACCESS_PLAYER.player_id
INNER JOIN tcg.public.TCG_MTG_Game_Round GAME_ROUND ON PLAYER_DAMAGE.round_id = GAME_ROUND.round_id
INNER JOIN tcg.public.TCG_MTG_Game GAME ON GAME_ROUND.game_id = GAME.game_id
INNER JOIN tcg.public.TCG_MTG_Game_Player PLAYER ON PLAYER_DAMAGE.player_id = PLAYER.player_id
@@ -95,9 +141,13 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Round_Player_Damage_Get_Many (
a_get_all_game := FALSE
a_access_user_id := 3
, a_get_all_game := FALSE
, a_get_inactive_game := FALSE
, a_game_ids := '30'
, a_get_all_user := TRUE
, a_get_inactive_user := FALSE
, a_user_ids := ''
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
)

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Game_Session_Member_Get_Many (
a_get_inactive_session_member BOOLEAN
a_access_user_id INT
, a_get_inactive_session_member BOOLEAN
, a_get_all_game BOOLEAN
, a_get_inactive_game BOOLEAN
, a_game_ids TEXT
@@ -24,6 +25,8 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_inactive_session_member BOOLEAN;
v_get_all_game BOOLEAN;
v_get_inactive_game BOOLEAN;
@@ -36,6 +39,7 @@ DECLARE
-- , v_require_all_non_id_filters_met BOOLEAN
-- , v_require_any_non_id_filters_met BOOLEAN
BEGIN
v_access_user_id := a_access_user_id;
v_get_inactive_session_member := COALESCE(a_get_inactive_session_member, FALSE);
v_get_all_game := COALESCE(a_get_all_game, FALSE);
v_get_inactive_game := COALESCE(a_get_inactive_game, FALSE);
@@ -46,8 +50,33 @@ BEGIN
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
RETURN QUERY
WITH Access_Game AS (
SELECT
GAME.game_id
, GAME.active
, GAME.created_on
, GAME.created_by_user_id
FROM tcg.public.FN_TCG_MTG_Game_Get_Many (
a_access_user_id := v_access_user_id
, a_get_all_game := v_get_all_game
, a_get_inactive_game := v_get_inactive_game
, a_game_ids := v_game_ids
, a_get_all_user := v_get_all_user
, a_get_inactive_user := v_get_inactive_user
, a_user_ids := v_user_ids
, a_require_all_id_filters_met := v_require_all_id_filters_met
, a_require_any_id_filters_met := v_require_any_id_filters_met
) GAME
)
SELECT
SESSION_MEMBER.member_id
, SESSION_MEMBER.game_id
, SESSION_MEMBER.user_id
@@ -58,6 +87,7 @@ BEGIN
, SESSION_MEMBER.updated_last_on
, SESSION_MEMBER.updated_last_by_user_id
FROM tcg.public.TCG_MTG_Game_Session_Member SESSION_MEMBER
INNER JOIN Access_Game ACCESS_GAME ON SESSION_MEMBER.game_id = ACCESS_GAME.game_id
INNER JOIN tcg.public.TCG_MTG_Game GAME ON SESSION_MEMBER.game_id = GAME.game_id
INNER JOIN tcg.public.TCG_User MEMBER_USER ON SESSION_MEMBER.user_id = MEMBER_USER.user_id
WHERE
@@ -113,7 +143,8 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Session_Member_Get_Many (
a_get_inactive_session_member := FALSE
a_access_user_id := 4
, a_get_inactive_session_member := FALSE
, a_get_all_game := TRUE
, a_get_inactive_game := FALSE
, a_game_ids := ''
@@ -125,11 +156,11 @@ FROM tcg.public.FN_TCG_MTG_Game_Session_Member_Get_Many (
)
;
/*
SELECT *
FROM tcg.public.TCG_MTG_Game_Session_Member
;
/*
SELECT *
FROM tcg.public.TCG_User
;

View File

@@ -1,6 +1,7 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_Statistic_Get_Many (
a_get_all_statistic BOOLEAN
a_access_user_id INT
, a_get_all_statistic BOOLEAN
, a_get_inactive_statistic BOOLEAN
, a_statistic_ids TEXT
, a_entity_type_codes TEXT
@@ -34,7 +35,9 @@ RETURNS TABLE (
LANGUAGE plpgsql
AS $$
DECLARE
v_get_all_statistic BOOLEAN;
v_access_user_id INT;
v_can_admin BOOLEAN;
v_get_all_statistic BOOLEAN;
v_get_inactive_statistic BOOLEAN;
v_statistic_ids TEXT;
v_entity_type_codes TEXT;
@@ -42,6 +45,7 @@ DECLARE
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
v_access_user_id := a_access_user_id;
v_get_all_statistic := COALESCE(a_get_all_statistic, FALSE);
v_get_inactive_statistic := COALESCE(a_get_inactive_statistic, FALSE);
v_statistic_ids := TRIM(COALESCE(a_statistic_ids, ''));
@@ -50,6 +54,12 @@ BEGIN
v_require_all_id_filters_met := COALESCE(a_require_all_id_filters_met, FALSE);
v_require_any_id_filters_met := COALESCE(a_require_any_id_filters_met, FALSE);
IF NOT EXISTS (SELECT * FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1) THEN
RAISE EXCEPTION 'Access User ID required.';
END IF;
v_can_admin := COALESCE((SELECT TCG_USER.is_super_user FROM tcg.public.TCG_User TCG_USER WHERE TCG_USER.user_id = v_access_user_id LIMIT 1), FALSE);
-- Outputs
RETURN QUERY SELECT
STATISTIC.statistic_id
@@ -113,7 +123,8 @@ $$;
SELECT *
FROM tcg.public.FN_TCG_Statistic_Get_Many (
a_get_all_statistic := FALSE
a_access_user_id := 3
, a_get_all_statistic := FALSE
, a_get_inactive_statistic := FALSE
, a_statistic_ids := ''
, a_entity_type_codes := 'deck'

View File

@@ -32,23 +32,23 @@ BEGIN
)
-- Changed name
SELECT NEW.rarity_id, 'name', OLD.name, NEW.name, NEW.change_set_id
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
WHERE OLD.name IS DISTINCT FROM NEW.name
UNION
-- Changed colour_name
SELECT NEW.rarity_id, 'colour_name', OLD.colour_name, NEW.colour_name, NEW.change_set_id
WHERE OLD.colour_name IS NOT DISTINCT FROM NEW.colour_name
WHERE OLD.colour_name IS DISTINCT FROM NEW.colour_name
UNION
-- Changed price_ratio_min
SELECT NEW.rarity_id, 'price_ratio_min', OLD.price_ratio_min::TEXT, NEW.price_ratio_min::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_min IS NOT DISTINCT FROM NEW.price_ratio_min
WHERE OLD.price_ratio_min IS DISTINCT FROM NEW.price_ratio_min
UNION
-- Changed price_ratio_max
SELECT NEW.rarity_id, 'price_ratio_max', OLD.price_ratio_max::TEXT, NEW.price_ratio_max::TEXT, NEW.change_set_id
WHERE OLD.price_ratio_max IS NOT DISTINCT FROM NEW.price_ratio_max
WHERE OLD.price_ratio_max IS DISTINCT FROM NEW.price_ratio_max
UNION
-- Changed active
SELECT NEW.rarity_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
WHERE OLD.active IS DISTINCT FROM NEW.active
;
RETURN NEW;