Feat: Decks page.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
32
static/PostgreSQL/11300_tbl_TCG_Statistic.sql
Normal file
32
static/PostgreSQL/11300_tbl_TCG_Statistic.sql
Normal 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)
|
||||
);
|
||||
15
static/PostgreSQL/11301_tbl_TCG_Statistic_Audit.sql
Normal file
15
static/PostgreSQL/11301_tbl_TCG_Statistic_Audit.sql
Normal 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)
|
||||
);
|
||||
@@ -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
|
||||
|
||||
96
static/PostgreSQL/31300_tri_TCG_Statistic.sql
Normal file
96
static/PostgreSQL/31300_tri_TCG_Statistic.sql
Normal 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()
|
||||
;
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
;
|
||||
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
144
static/PostgreSQL/71300_fn_TCG_Statistic_Get_Many.sql
Normal file
144
static/PostgreSQL/71300_fn_TCG_Statistic_Get_Many.sql
Normal 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'
|
||||
;
|
||||
9521
static/PostgreSQL/71301_usp_TCG_Statistic_Calc.sql
Normal file
9521
static/PostgreSQL/71301_usp_TCG_Statistic_Calc.sql
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user