Feat: Decks page.

This commit is contained in:
2026-02-16 19:30:31 +00:00
parent 1cd9b7c976
commit 5661632540
75 changed files with 11850 additions and 536 deletions

View File

@@ -8,7 +8,7 @@ CREATE TABLE tcg.public.TCG_MTG_Game (
, location_name TEXT
, start_on TIMESTAMP
, end_on TIMESTAMP
, starting_life INT
, starting_life INT NOT NULL
, active BOOLEAN NOT NULL DEFAULT TRUE
, created_on TIMESTAMP NOT NULL
, created_by_user_id INT NOT NULL

View File

@@ -1,3 +1,4 @@
CREATE TABLE tcg.public.TCG_MTG_Game_Round_Player_Damage (
damage_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
, round_id INT NOT NULL
@@ -12,7 +13,8 @@ CREATE TABLE tcg.public.TCG_MTG_Game_Round_Player_Damage (
, CONSTRAINT FK_TCG_MTG_Game_Round_Player_Damage_received_from_commander_player_id
FOREIGN KEY (received_from_commander_player_id)
REFERENCES tcg.public.TCG_MTG_Game_Player(player_id)
, health_change INT NOT NULL
, life_gain INT NOT NULL
, life_loss INT NOT NULL
, commander_deaths INT NOT NULL
, is_eliminated BOOLEAN NOT NULL DEFAULT FALSE
, active BOOLEAN NOT NULL DEFAULT TRUE

View File

@@ -6,8 +6,10 @@ CREATE TABLE tcg.public.TCG_MTG_Game_Round_Player_Damage_Temp (
, round_id INT
, player_id INT
, received_from_commander_player_id INT
, health_change INT
, life_gain INT
, life_loss INT
, commander_deaths INT
, is_eliminated BOOLEAN
, active BOOLEAN
, created_on TIMESTAMP
, created_by_user_id INT

View File

@@ -0,0 +1,32 @@
CREATE TABLE tcg.public.TCG_Statistic (
statistic_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
, entity_type_code TEXT NOT NULL
, entity_record_id TEXT NOT NULL
, name TEXT NOT NULL
, value_bool BOOLEAN
, value_float DOUBLE PRECISION
, value_interval INTERVAL
, value_text TEXT
, value_timestamp TIMESTAMP
, is_bool BOOLEAN
, is_float BOOLEAN
, is_interval BOOLEAN
, is_text BOOLEAN
, is_timestamp BOOLEAN
, display_order INT NOT NULL
, active BOOLEAN NOT NULL DEFAULT TRUE
, created_on TIMESTAMP NOT NULL
, created_by_user_id INT NOT NULL
, CONSTRAINT FK_TCG_Statistic_created_by_user_id
FOREIGN KEY (created_by_user_id)
REFERENCES tcg.public.TCG_User(user_id)
, updated_last_on TIMESTAMP NOT NULL
, updated_last_by_user_id INT NOT NULL
, CONSTRAINT FK_TCG_Statistic_updated_last_by_user_id
FOREIGN KEY (updated_last_by_user_id)
REFERENCES tcg.public.TCG_User(user_id)
, change_set_id INT NOT NULL
, CONSTRAINT FK_TCG_Statistic_change_set_id
FOREIGN KEY (change_set_id)
REFERENCES tcg.public.TCG_Change_Set(change_set_id)
);

View File

@@ -0,0 +1,15 @@
CREATE TABLE tcg.public.TCG_Statistic_Audit (
audit_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY
, statistic_id INT NOT NULL
, CONSTRAINT FK_TCG_Statistic_Audit_statistic_id
FOREIGN KEY (statistic_id)
REFERENCES tcg.public.TCG_Statistic(statistic_id)
, name_field TEXT NOT NULL
, value_prev TEXT
, value_new TEXT
, change_set_id INT NOT NULL
, CONSTRAINT FK_TCG_Statistic_Audit_change_set_id
FOREIGN KEY (change_set_id)
REFERENCES tcg.public.TCG_Change_Set(change_set_id)
);

View File

@@ -58,9 +58,13 @@ BEGIN
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
UNION
-- Changed health_change
SELECT NEW.damage_id, 'health_change', OLD.health_change::TEXT, NEW.health_change::TEXT, NEW.change_set_id
WHERE OLD.health_change IS NOT DISTINCT FROM NEW.health_change
-- 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
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
UNION
-- Changed commander_deaths
SELECT NEW.damage_id, 'commander_deaths', OLD.commander_deaths::TEXT, NEW.commander_deaths::TEXT, NEW.change_set_id

View File

@@ -0,0 +1,96 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_before_insert_TCG_Statistic()
RETURNS TRIGGER AS $$
DECLARE
r_change_set RECORD;
BEGIN
NEW.created_on = COALESCE(NEW.created_on, CURRENT_TIMESTAMP);
NEW.updated_last_on = COALESCE(NEW.updated_last_on, CURRENT_TIMESTAMP);
IF NEW.change_set_id IS NULL THEN
RAISE EXCEPTION 'Change Set ID must be provided.';
END IF;
SELECT *
INTO r_change_set
FROM tcg.public.TCG_Change_Set CHANGE_SET
WHERE NEW.change_set_id = CHANGE_SET.change_set_id
;
IF FOUND THEN
NEW.created_by_user_id := COALESCE(NEW.created_by_user_id, r_change_set.updated_last_by_user_id);
NEW.updated_last_by_user_id := COALESCE(NEW.updated_last_by_user_id, r_change_set.updated_last_by_user_id);
NEW.created_on := COALESCE(NEW.created_on, r_change_set.updated_last_on);
ELSE
RAISE EXCEPTION 'Change Set % not found.', NEW.change_set_id;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql
;
CREATE OR REPLACE FUNCTION tcg.public.FN_before_update_TCG_Statistic()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_last_on = CURRENT_TIMESTAMP;
IF OLD.change_set_id IS NOT DISTINCT FROM NEW.change_set_id THEN
RAISE EXCEPTION 'New Change Set ID must be provided.';
END IF;
INSERT INTO tcg.public.TCG_Statistic_Audit (
statistic_id
, name_field
, value_prev
, value_new
, change_set_id
)
-- 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
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
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
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
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
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
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
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
;
RETURN NEW;
END;
$$ LANGUAGE plpgsql
;
CREATE TRIGGER TRI_before_insert_TCG_Statistic
BEFORE INSERT ON tcg.public.TCG_Statistic
FOR EACH ROW
EXECUTE FUNCTION tcg.public.FN_before_insert_TCG_Statistic()
;
CREATE TRIGGER TRI_before_update_TCG_Statistic
BEFORE UPDATE ON tcg.public.TCG_Statistic
FOR EACH ROW
EXECUTE FUNCTION tcg.public.FN_before_update_TCG_Statistic()
;

View File

@@ -35,7 +35,7 @@ BEGIN
DROP TABLE IF EXISTS Temp_User_Save_User;
DROP TABLE IF EXISTS Temp_User_Save_Error;
CREATE TABLE Temp_User_Save_User (
CREATE TEMP TABLE Temp_User_Save_User (
user_id INT NOT NULL
, user_auth0_id TEXT
, firstname TEXT

View File

@@ -0,0 +1,128 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_MTG_Deck_Commander_Bracket_Get_Many (
a_get_all_commander_bracket BOOLEAN
, a_get_inactive_commander_bracket BOOLEAN
, a_commander_bracket_ids TEXT
, a_commander_bracket_names TEXT
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
, a_require_all_non_id_filters_met BOOLEAN
, a_require_any_non_id_filters_met BOOLEAN
)
RETURNS TABLE (
commander_bracket_id INT
, 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
)
LANGUAGE plpgsql
AS $$
DECLARE
v_get_all_commander_bracket BOOLEAN;
v_get_inactive_commander_bracket BOOLEAN;
v_commander_bracket_ids TEXT;
v_commander_bracket_names TEXT;
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_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, ''));
v_commander_bracket_names := TRIM(COALESCE(a_commander_bracket_names, ''));
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, TRUE);
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);
-- Outputs
RETURN QUERY 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
WHERE
(
(
NOT v_require_all_id_filters_met
AND NOT v_require_any_id_filters_met
)
OR (
v_require_all_id_filters_met
AND (
v_get_all_commander_bracket
OR COMMANDER_BRACKET.commander_bracket_id = ANY(string_to_array(v_commander_bracket_ids, ',')::INT[])
)
)
OR (
NOT v_require_all_id_filters_met
AND v_require_any_id_filters_met
AND (
v_get_all_commander_bracket
OR COMMANDER_BRACKET.commander_bracket_id = ANY(string_to_array(v_commander_bracket_ids, ',')::INT[])
)
)
)
AND (
(
NOT v_require_all_non_id_filters_met
AND NOT v_require_any_non_id_filters_met
)
OR (
v_require_all_non_id_filters_met
AND (
v_get_all_commander_bracket
OR COMMANDER_BRACKET.name LIKE ANY (SELECT '%' || TRIM(s) || '%' FROM unnest(string_to_array(v_commander_bracket_names, ',')) s)
)
)
OR (
NOT v_require_all_non_id_filters_met
AND v_require_any_non_id_filters_met
AND (
v_get_all_commander_bracket
OR COMMANDER_BRACKET.name LIKE ANY (SELECT '%' || TRIM(s) || '%' FROM unnest(string_to_array(v_commander_bracket_names, ',')) s)
)
)
)
AND (
v_get_inactive_commander_bracket
OR COMMANDER_BRACKET.active
)
ORDER BY COMMANDER_BRACKET.display_order
;
END;
$$;
SELECT *
FROM tcg.public.FN_TCG_MTG_Deck_Commander_Bracket_Get_Many (
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)
, a_require_all_id_filters_met := FALSE
, a_require_any_id_filters_met := FALSE
, a_require_all_non_id_filters_met := FALSE
, a_require_any_non_id_filters_met := FALSE
)
;
SELECT *
FROM tcg.public.TCG_MTG_Deck_Commander_Bracket
;

View File

@@ -11,7 +11,8 @@ RETURNS TABLE (
, round_id INT
, player_id INT
, received_from_commander_player_id INT
, health_change INT
, life_gain INT
, life_loss INT
, commander_deaths INT
, is_eliminated BOOLEAN
, active BOOLEAN
@@ -42,7 +43,8 @@ BEGIN
, PLAYER_DAMAGE.round_id
, PLAYER_DAMAGE.player_id
, PLAYER_DAMAGE.received_from_commander_player_id
, PLAYER_DAMAGE.health_change
, PLAYER_DAMAGE.life_gain
, PLAYER_DAMAGE.life_loss
, PLAYER_DAMAGE.commander_deaths
, PLAYER_DAMAGE.is_eliminated
, PLAYER_DAMAGE.active
@@ -95,7 +97,7 @@ SELECT *
FROM tcg.public.FN_TCG_MTG_Game_Round_Player_Damage_Get_Many (
a_get_all_game := FALSE
, a_get_inactive_game := FALSE
, a_game_ids := '11'
, a_game_ids := '30'
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := FALSE
)

View File

@@ -84,7 +84,8 @@ BEGIN
, round_id INT
, player_id INT
, received_from_commander_player_id INT
, health_change INT
, life_gain INT
, life_loss INT
, commander_deaths INT
, is_eliminated BOOLEAN
, active BOOLEAN
@@ -177,7 +178,8 @@ BEGIN
, round_id
, player_id
, received_from_commander_player_id
, health_change
, life_gain
, life_loss
, commander_deaths
, is_eliminated
, active
@@ -199,7 +201,8 @@ BEGIN
, PLAYER_DAMAGE_T.round_id
, PLAYER_DAMAGE_T.player_id
, PLAYER_DAMAGE_T.received_from_commander_player_id
, COALESCE(PLAYER_DAMAGE_T.health_change, 0) -- health_change
, ABS(COALESCE(PLAYER_DAMAGE_T.life_gain, 0)) -- life_gain
, ABS(COALESCE(PLAYER_DAMAGE_T.life_loss, 0)) -- life_loss
, COALESCE(PLAYER_DAMAGE_T.commander_deaths, 0) -- commander_deaths
, COALESCE(PLAYER_DAMAGE_T.is_eliminated, FALSE) -- is_eliminated
, COALESCE(PLAYER_DAMAGE_T.active, TRUE) -- active
@@ -220,8 +223,10 @@ BEGIN
, CAST(PLAYER_DAMAGE_T.player_id AS VARCHAR)
, ', received from commander player id: '
, CAST(PLAYER_DAMAGE_T.received_from_commander_player_id AS VARCHAR)
, ', health change: '
, CAST(PLAYER_DAMAGE_T.health_change AS VARCHAR)
, ', life gain: '
, CAST(PLAYER_DAMAGE_T.life_gain AS VARCHAR)
, ', life loss: '
, CAST(PLAYER_DAMAGE_T.life_loss AS VARCHAR)
, ' }'
) -- error_name
FROM tcg.public.TCG_MTG_Game_Round_Player_Damage_Temp PLAYER_DAMAGE_T
@@ -625,18 +630,32 @@ BEGIN
, 'player_id' AS field
FROM Temp_MTG_Round_Damage_Save_Round_Player_Damage T_PLAYER_DAMAGE
WHERE T_PLAYER_DAMAGE.player_id IS NULL
/*
UNION
SELECT
T_PLAYER_DAMAGE.temp_id
, 'health_change' AS field
FROM Temp_MTG_Round_Damage_Save_Round_Player_Damage T_PLAYER_DAMAGE
WHERE T_PLAYER_DAMAGE.health_change IS NULL
UNION
SELECT
T_PLAYER_DAMAGE.temp_id
, 'life_gain' AS field
FROM Temp_MTG_Round_Damage_Save_Round_Player_Damage T_PLAYER_DAMAGE
WHERE T_PLAYER_DAMAGE.life_gain IS NULL
UNION
SELECT
T_PLAYER_DAMAGE.temp_id
, 'life_loss' AS field
FROM Temp_MTG_Round_Damage_Save_Round_Player_Damage T_PLAYER_DAMAGE
WHERE T_PLAYER_DAMAGE.life_loss IS NULL
UNION
SELECT
T_PLAYER_DAMAGE.temp_id
, 'commander_deaths' AS field
FROM Temp_MTG_Round_Damage_Save_Round_Player_Damage T_PLAYER_DAMAGE
WHERE T_PLAYER_DAMAGE.commander_deaths IS NULL
*/
)
INSERT INTO Temp_MTG_Round_Damage_Save_Error (
error_type_id
@@ -910,7 +929,8 @@ BEGIN
round_id
, player_id
, received_from_commander_player_id
, health_change
, life_gain
, life_loss
, commander_deaths
, is_eliminated
, active
@@ -924,7 +944,8 @@ BEGIN
T_ROUND.round_id
, T_PLAYER_DAMAGE.player_id
, T_PLAYER_DAMAGE.received_from_commander_player_id
, T_PLAYER_DAMAGE.health_change
, T_PLAYER_DAMAGE.life_gain
, T_PLAYER_DAMAGE.life_loss
, T_PLAYER_DAMAGE.commander_deaths
, T_PLAYER_DAMAGE.is_eliminated
, T_PLAYER_DAMAGE.active
@@ -951,7 +972,8 @@ BEGIN
round_id = T_ROUND.round_id
, player_id = T_PLAYER_DAMAGE.player_id
, received_from_commander_player_id = T_PLAYER_DAMAGE.received_from_commander_player_id
, health_change = T_PLAYER_DAMAGE.health_change
, life_gain = T_PLAYER_DAMAGE.life_gain
, life_loss = T_PLAYER_DAMAGE.life_loss
, commander_deaths = T_PLAYER_DAMAGE.commander_deaths
, is_eliminated = T_PLAYER_DAMAGE.is_eliminated
, active = T_PLAYER_DAMAGE.active
@@ -1098,7 +1120,9 @@ LEFT JOIN tcg.public.TCG_MTG_Game GAME ON TCG_ROUND.game_id = GAME.game_id
, round_id
, player_id
, received_from_commander_player_id
, health_change
-- , health_change
, life_gain
, life_loss
, commander_deaths
, active
)
@@ -1109,7 +1133,9 @@ LEFT JOIN tcg.public.TCG_MTG_Game GAME ON TCG_ROUND.game_id = GAME.game_id
, -1 -- round_id
, 3 -- player_id
, NULL -- received_from_commander_player_id
, -4 -- health_change
-- , -4 -- health_change
, 0 -- life_gain
, 4 -- life_loss
, 1 -- commander_deaths
, TRUE -- active
)
@@ -1119,7 +1145,9 @@ LEFT JOIN tcg.public.TCG_MTG_Game GAME ON TCG_ROUND.game_id = GAME.game_id
, -1 -- round_id
, 3 -- player_id
, 2 -- received_from_commander_player_id
, -5 -- health_change
-- , -5 -- health_change
, 0 -- life_gain
, 5 -- life_loss
, NULL -- commander_deaths
, TRUE -- active
)
@@ -1129,7 +1157,9 @@ LEFT JOIN tcg.public.TCG_MTG_Game GAME ON TCG_ROUND.game_id = GAME.game_id
, -1 -- round_id
, 3 -- player_id
, 5 -- received_from_commander_player_id
, -6 -- health_change
-- , -6 -- health_change
, 0 -- life_gain
, 6 -- life_loss
, NULL -- commander_deaths
, TRUE -- active
)

View File

@@ -0,0 +1,144 @@
CREATE OR REPLACE FUNCTION tcg.public.FN_TCG_Statistic_Get_Many (
a_get_all_statistic BOOLEAN
, a_get_inactive_statistic BOOLEAN
, a_statistic_ids TEXT
, a_entity_type_codes TEXT
, a_entity_record_ids TEXT
, a_require_all_id_filters_met BOOLEAN
, a_require_any_id_filters_met BOOLEAN
)
RETURNS TABLE (
statistic_id INT
, entity_type_code TEXT
, entity_record_id TEXT
, name TEXT
, value_bool BOOLEAN
, value_float DOUBLE PRECISION
, value_interval INTERVAL
, value_text TEXT
, value_timestamp TIMESTAMP
, is_bool BOOLEAN
, is_float BOOLEAN
, is_interval BOOLEAN
, is_text BOOLEAN
, is_timestamp BOOLEAN
, 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
)
LANGUAGE plpgsql
AS $$
DECLARE
v_get_all_statistic BOOLEAN;
v_get_inactive_statistic BOOLEAN;
v_statistic_ids TEXT;
v_entity_type_codes TEXT;
v_entity_record_ids TEXT;
v_require_all_id_filters_met BOOLEAN;
v_require_any_id_filters_met BOOLEAN;
BEGIN
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, ''));
v_entity_type_codes := TRIM(COALESCE(a_entity_type_codes, ''));
v_entity_record_ids := TRIM(COALESCE(a_entity_record_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);
-- Outputs
RETURN QUERY SELECT
STATISTIC.statistic_id
, STATISTIC.entity_type_code
, STATISTIC.entity_record_id
, STATISTIC.name
, STATISTIC.value_bool
, STATISTIC.value_float
, STATISTIC.value_interval
, STATISTIC.value_text
, STATISTIC.value_timestamp
, STATISTIC.is_bool
, STATISTIC.is_float
, STATISTIC.is_interval
, STATISTIC.is_text
, STATISTIC.is_timestamp
, STATISTIC.display_order
, STATISTIC.active
, STATISTIC.created_on
, STATISTIC.created_by_user_id
, STATISTIC.updated_last_on
, STATISTIC.updated_last_by_user_id
, STATISTIC.change_set_id
FROM tcg.public.TCG_Statistic STATISTIC
WHERE
(
(
NOT v_require_all_id_filters_met
AND NOT v_require_any_id_filters_met
)
OR (
v_require_all_id_filters_met
AND (v_get_all_statistic OR v_statistic_ids = '' OR STATISTIC.statistic_id = ANY(string_to_array(v_statistic_ids, ',')::INT[]))
AND (v_get_all_statistic OR v_entity_type_codes = '' OR STATISTIC.entity_type_code = ANY(string_to_array(v_entity_type_codes, ',')))
AND (v_get_all_statistic OR v_entity_record_ids = '' OR STATISTIC.entity_record_id = ANY(string_to_array(v_entity_record_ids, ',')))
)
OR (
NOT v_require_all_id_filters_met
AND v_require_any_id_filters_met
AND (
v_get_all_statistic
OR STATISTIC.statistic_id = ANY(string_to_array(v_statistic_ids, ',')::INT[])
OR STATISTIC.entity_type_code = ANY(string_to_array(v_entity_type_codes, ','))
OR STATISTIC.entity_record_id = ANY(string_to_array(v_entity_record_ids, ','))
)
)
)
AND (
v_get_inactive_statistic
OR STATISTIC.active
)
ORDER BY
STATISTIC.entity_type_code
, STATISTIC.entity_record_id
, STATISTIC.display_order
, STATISTIC.statistic_id
;
END;
$$;
SELECT *
FROM tcg.public.FN_TCG_Statistic_Get_Many (
a_get_all_statistic := FALSE
, a_get_inactive_statistic := FALSE
, a_statistic_ids := ''
, a_entity_type_codes := 'deck'
, a_entity_record_ids := '1,2'
, a_require_all_id_filters_met := TRUE
, a_require_any_id_filters_met := TRUE
)
;
SELECT *
FROM tcg.public.TCG_Statistic
;
SELECT COUNT(*)
FROM tcg.public.TCG_Statistic S
WHERE S.entity_type_code = 'deck'
;
SELECT COUNT(*)
FROM tcg.public.TCG_Statistic S
WHERE S.entity_type_code = 'user'
;
SELECT COUNT(*)
FROM tcg.public.TCG_Statistic S
WHERE S.entity_type_code = 'user_deck_link'
;

File diff suppressed because it is too large Load Diff