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

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: Initialisation

4
app.py
View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: App General
Feature: App

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Module Initialisation
Feature: Business Objects

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: Base Business Object

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: Base Business Object

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: Database Base Business Objects

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: SQL Error Business Object
@@ -23,6 +23,7 @@ from datetime import datetime, timedelta
import locale
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Uuid
from sqlalchemy.types import Integer
from typing import ClassVar
# db = SQLAlchemy()
@@ -126,22 +127,22 @@ class Parameters_SQL_Error(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, guid):
return cls(
guid = guid
guid = guid
)
@classmethod
def from_json(cls, json):
return cls(
guid = json.get('a_guid', None)
guid = json.get('a_guid', None)
)
def to_json(self):
return {
'a_guid': self.guid
'a_guid': self.guid
}
@staticmethod
def get_type_hints():
return {
'a_guid': Uuid
'a_guid': Uuid
}

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Deck Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class MTG_Deck(SQLAlchemy_ABC, Base):
@@ -108,36 +108,40 @@ class MTG_Deck(SQLAlchemy_ABC, Base):
class Parameters_MTG_Deck(Get_Many_Parameters_Base):
access_user_id: int
get_all_deck: bool
get_inactive_deck: bool
deck_ids: str
deck_names: str
commander_bracket_ids: str
include_commander_option: bool
created_by_user_ids: str
get_all_game: bool
get_inactive_game: bool
game_ids: str
filter_by_game_session_not_player: bool
get_all_user: bool
get_inactive_user: bool
user_ids: str
require_all_id_filters_met: bool
require_any_id_filters_met: bool
require_all_non_id_filters_met: bool
require_any_non_id_filters_met: bool
@classmethod
def get_default(cls, user_id):
def get_default(cls, user_id_session):
return cls(
get_all_deck = False
access_user_id = user_id_session
, get_all_deck = False
, get_inactive_deck = False
, deck_ids = ''
, deck_names = ''
, commander_bracket_ids = ''
, include_commander_option = True
, created_by_user_ids = str(user_id)
, get_all_game = False
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
, filter_by_game_session_not_player = False
, get_all_user = True
, get_inactive_user = False
, user_ids = ''
, require_all_id_filters_met = False
, require_any_id_filters_met = True
, require_all_non_id_filters_met = False
@@ -147,17 +151,19 @@ class Parameters_MTG_Deck(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_deck = json.get('a_get_all_deck', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_deck = json.get('a_get_all_deck', False)
, get_inactive_deck = json.get('a_get_inactive_deck', False)
, deck_ids = json.get('a_deck_ids', '')
, deck_names = json.get('a_deck_names', '')
, commander_bracket_ids = json.get('a_commander_bracket_ids', '')
, include_commander_option = json.get('a_include_commander_option', True)
, created_by_user_ids = json.get('a_created_by_user_ids', '')
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
, filter_by_game_session_not_player = json.get('a_filter_by_game_session_not_player', True)
, get_all_user = json.get('a_get_all_user', False)
, get_inactive_user = json.get('a_get_inactive_user', False)
, user_ids = json.get('a_user_ids', '')
, require_all_id_filters_met = json.get('a_require_all_id_filters_met', True)
, require_any_id_filters_met = json.get('a_require_any_id_filters_met', True)
, require_all_non_id_filters_met = json.get('a_require_all_non_id_filters_met', False)
@@ -166,17 +172,19 @@ class Parameters_MTG_Deck(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_deck': self.get_all_deck
'a_access_user_id': self.access_user_id
, 'a_get_all_deck': self.get_all_deck
, 'a_get_inactive_deck': self.get_inactive_deck
, 'a_deck_ids': self.deck_ids
, 'a_deck_names': self.deck_names
, 'a_commander_bracket_ids': self.commander_bracket_ids
, 'a_include_commander_option': self.include_commander_option
, 'a_created_by_user_ids': self.created_by_user_ids
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': self.game_ids
, 'a_filter_by_game_session_not_player': self.filter_by_game_session_not_player
, 'a_get_all_user': self.get_all_user
, 'a_get_inactive_user': self.get_inactive_user
, 'a_user_ids': self.user_ids
, 'a_require_all_id_filters_met': self.require_all_id_filters_met
, 'a_require_any_id_filters_met': self.require_any_id_filters_met
, 'a_require_all_non_id_filters_met': self.require_all_non_id_filters_met
@@ -186,17 +194,19 @@ class Parameters_MTG_Deck(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_deck': Boolean
'a_access_user_id': Integer
, 'a_get_all_deck': Boolean
, 'a_get_inactive_deck': Boolean
, 'a_deck_ids': Text
, 'a_deck_names': Text
, 'a_commander_bracket_ids': Text
, 'a_include_commander_option': Boolean
, 'a_created_by_user_ids': Text
, '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_require_all_id_filters_met': Boolean
, 'a_require_any_id_filters_met': Boolean
, 'a_require_all_non_id_filters_met': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Deck Commander Bracket Business Object
@@ -16,6 +16,7 @@ from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy.types import Text, Boolean, Integer
class MTG_Deck_Commander_Bracket(SQLAlchemy_ABC, Base):
@@ -100,6 +101,7 @@ class MTG_Deck_Commander_Bracket(SQLAlchemy_ABC, Base):
class Parameters_MTG_Deck_Commander_Bracket(Get_Many_Parameters_Base):
access_user_id: int
get_all_commander_bracket: bool
get_inactive_commander_bracket: bool
commander_bracket_ids: str
@@ -110,9 +112,10 @@ class Parameters_MTG_Deck_Commander_Bracket(Get_Many_Parameters_Base):
require_any_non_id_filters_met: bool
@classmethod
def get_default(cls):
def get_default(cls, user_id_session):
return cls(
get_all_commander_bracket = True
access_user_id = user_id_session
, get_all_commander_bracket = True
, get_inactive_commander_bracket = False
, commander_bracket_ids = ''
, commander_bracket_names = ''
@@ -125,7 +128,8 @@ class Parameters_MTG_Deck_Commander_Bracket(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_commander_bracket = json.get('a_get_all_commander_bracket', True)
access_user_id = json.get('a_access_user_id', None)
, get_all_commander_bracket = json.get('a_get_all_commander_bracket', True)
, get_inactive_commander_bracket = json.get('a_get_inactive_commander_bracket', False)
, commander_bracket_ids = json.get('a_commander_bracket_ids', '')
, commander_bracket_names = json.get('a_commander_bracket_names', '')
@@ -137,7 +141,8 @@ class Parameters_MTG_Deck_Commander_Bracket(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_commander_bracket': self.get_all_commander_bracket
'a_access_user_id': self.access_user_id
, 'a_get_all_commander_bracket': self.get_all_commander_bracket
, 'a_get_inactive_commander_bracket': self.get_inactive_commander_bracket
, 'a_commander_bracket_ids': self.commander_bracket_ids
, 'a_commander_bracket_names': self.commander_bracket_names
@@ -146,3 +151,17 @@ class Parameters_MTG_Deck_Commander_Bracket(Get_Many_Parameters_Base):
, 'a_require_all_non_id_filters_met': self.require_all_non_id_filters_met
, 'a_require_any_non_id_filters_met': self.require_any_non_id_filters_met
}
@staticmethod
def get_type_hints():
return {
'a_access_user_id': Integer
, '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
}

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Game Business Object
@@ -18,7 +18,7 @@ from datetime import datetime
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import bindparam
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class MTG_Game(SQLAlchemy_ABC, Base):
@@ -147,6 +147,7 @@ class MTG_Game(SQLAlchemy_ABC, Base):
'''
class Parameters_MTG_Game(Get_Many_Parameters_Base):
access_user_id: int
get_all_game: bool
get_inactive_game: bool
game_ids: str
@@ -159,7 +160,8 @@ class Parameters_MTG_Game(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_all_game = True
access_user_id = user_id_session
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
, get_all_user = False
@@ -172,7 +174,8 @@ class Parameters_MTG_Game(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_game = json.get('a_get_all_game', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
, get_all_user = json.get('a_get_all_user', False)
@@ -184,7 +187,8 @@ class Parameters_MTG_Game(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_game': self.get_all_game
'a_access_user_id': self.access_user_id
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': str(self.game_ids)
, 'a_get_all_user': self.get_all_user
@@ -196,7 +200,8 @@ class Parameters_MTG_Game(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_game': Boolean
'a_access_user_id': Integer
, 'a_get_all_game': Boolean
, 'a_get_inactive_game': Boolean
, 'a_game_ids': Text
, 'a_get_all_user': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Game Player Business Object
@@ -19,7 +19,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
# import uuid
class MTG_Game_Player(SQLAlchemy_ABC, Base):
@@ -151,6 +151,7 @@ class MTG_Game_Player_Temp(db.Model, Base):
class Parameters_MTG_Game_Player(Get_Many_Parameters_Base):
access_user_id: int
get_all_game: bool
get_inactive_game: bool
game_ids: str
@@ -160,7 +161,8 @@ class Parameters_MTG_Game_Player(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_all_game = True
access_user_id = user_id_session
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
, require_all_id_filters_met = True
@@ -170,7 +172,8 @@ class Parameters_MTG_Game_Player(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_game = json.get('a_get_all_game', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
, require_all_id_filters_met = json.get('a_require_all_id_filters_met', True)
@@ -179,7 +182,8 @@ class Parameters_MTG_Game_Player(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_game': self.get_all_game
'a_access_user_id': self.access_user_id
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': self.game_ids
, 'a_require_all_id_filters_met': self.require_all_id_filters_met
@@ -189,7 +193,8 @@ class Parameters_MTG_Game_Player(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_game': Boolean
'a_access_user_id': Integer
, 'a_get_all_game': Boolean
, 'a_get_inactive_game': Boolean
, 'a_game_ids': Text
, 'a_require_all_id_filters_met': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Game Round Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class MTG_Game_Round(SQLAlchemy_ABC, Base):
@@ -130,6 +130,7 @@ class MTG_Game_Round_Temp(db.Model, Base):
class Parameters_MTG_Game_Round(Get_Many_Parameters_Base):
access_user_id: int
get_all_game: bool
get_inactive_game: bool
game_ids: str
@@ -139,7 +140,8 @@ class Parameters_MTG_Game_Round(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_all_game = True
access_user_id = user_id_session
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
, require_all_id_filters_met = True
@@ -149,7 +151,8 @@ class Parameters_MTG_Game_Round(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_game = json.get('a_get_all_game', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
, require_all_id_filters_met = json.get('a_require_all_id_filters_met', True)
@@ -158,7 +161,8 @@ class Parameters_MTG_Game_Round(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_game': self.get_all_game
'a_access_user_id': self.access_user_id
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': self.game_ids
, 'a_require_all_id_filters_met': self.require_all_id_filters_met
@@ -168,7 +172,8 @@ class Parameters_MTG_Game_Round(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_game': Boolean
'a_access_user_id': Integer
, 'a_get_all_game': Boolean
, 'a_get_inactive_game': Boolean
, 'a_game_ids': Text
, 'a_require_all_id_filters_met': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Game Round Player Damage Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class MTG_Game_Round_Player_Damage(SQLAlchemy_ABC, Base):
@@ -163,6 +163,7 @@ class MTG_Game_Round_Player_Damage_Temp(db.Model, Base):
class Parameters_MTG_Game_Round_Player_Damage(Get_Many_Parameters_Base):
access_user_id: int
get_all_game: bool
get_inactive_game: bool
game_ids: str
@@ -172,7 +173,8 @@ class Parameters_MTG_Game_Round_Player_Damage(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_all_game = True
access_user_id = user_id_session
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
, require_all_id_filters_met = True
@@ -182,7 +184,8 @@ class Parameters_MTG_Game_Round_Player_Damage(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_game = json.get('a_get_all_game', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
, require_all_id_filters_met = json.get('a_require_all_id_filters_met', True)
@@ -191,7 +194,8 @@ class Parameters_MTG_Game_Round_Player_Damage(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_game': self.get_all_game
'a_access_user_id': self.access_user_id
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': self.game_ids
, 'a_require_all_id_filters_met': self.require_all_id_filters_met
@@ -201,7 +205,8 @@ class Parameters_MTG_Game_Round_Player_Damage(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_game': Boolean
'a_access_user_id': Integer
, 'a_get_all_game': Boolean
, 'a_get_inactive_game': Boolean
, 'a_game_ids': Text
, 'a_require_all_id_filters_met': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: MTG Game Session Member Business Object
@@ -19,7 +19,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
# import uuid
class MTG_Game_Session_Member(SQLAlchemy_ABC, Base):
@@ -128,6 +128,7 @@ class MTG_Game_Session_Member_Temp(db.Model, Base):
class Parameters_MTG_Game_Session_Member(Get_Many_Parameters_Base):
access_user_id: int
get_inactive_session_member: bool
get_all_game: bool
get_inactive_game: bool
@@ -141,7 +142,8 @@ class Parameters_MTG_Game_Session_Member(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_inactive_session_member = False
access_user_id = user_id_session
, get_inactive_session_member = False
, get_all_game = True
, get_inactive_game = False
, game_ids = ''
@@ -155,7 +157,8 @@ class Parameters_MTG_Game_Session_Member(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_inactive_session_member = json.get('a_get_inactive_session_member', False)
access_user_id = json.get('a_access_user_id', None)
, get_inactive_session_member = json.get('a_get_inactive_session_member', False)
, get_all_game = json.get('a_get_all_game', False)
, get_inactive_game = json.get('a_get_inactive_game', False)
, game_ids = json.get('a_game_ids', '')
@@ -168,7 +171,8 @@ class Parameters_MTG_Game_Session_Member(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_inactive_session_member': self.get_inactive_session_member
'a_access_user_id': self.access_user_id
, 'a_get_inactive_session_member': self.get_inactive_session_member
, 'a_get_all_game': self.get_all_game
, 'a_get_inactive_game': self.get_inactive_game
, 'a_game_ids': self.game_ids
@@ -182,7 +186,8 @@ class Parameters_MTG_Game_Session_Member(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_inactive_session_member': Boolean
'a_access_user_id': Integer
, 'a_get_inactive_session_member': Boolean
, 'a_get_all_game': Boolean
, 'a_get_inactive_game': Boolean
, 'a_game_ids': Text

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: Statistic Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid, Interval
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class Statistic(SQLAlchemy_ABC, Base):
@@ -231,6 +231,7 @@ class Statistic_Temp(db.Model, Base):
class Parameters_Statistic(Get_Many_Parameters_Base):
access_user_id: int
get_all_statistic: bool
get_inactive_statistic: bool
statistic_ids: str
@@ -240,9 +241,10 @@ class Parameters_Statistic(Get_Many_Parameters_Base):
require_any_id_filters_met: bool
@classmethod
def get_default(cls):
def get_default(cls, user_id_session):
return cls(
get_all_statistic = True
access_user_id = user_id_session
, get_all_statistic = True
, get_inactive_statistic = False
, statistic_ids = ''
, entity_type_codes = ''
@@ -254,7 +256,8 @@ class Parameters_Statistic(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_all_statistic = json.get('a_get_all_statistic', False)
access_user_id = json.get('a_access_user_id', None)
, get_all_statistic = json.get('a_get_all_statistic', False)
, get_inactive_statistic = json.get('a_get_inactive_statistic', False)
, statistic_ids = json.get('a_statistic_ids', '')
, entity_type_codes = json.get('a_entity_type_codes', '')
@@ -265,7 +268,8 @@ class Parameters_Statistic(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_all_statistic': self.get_all_statistic
'a_access_user_id': self.access_user_id
, 'a_get_all_statistic': self.get_all_statistic
, 'a_get_inactive_statistic': self.get_inactive_statistic
, 'a_statistic_ids': self.statistic_ids
, 'a_entity_type_codes': self.entity_type_codes
@@ -277,7 +281,8 @@ class Parameters_Statistic(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_statistic': Boolean
'a_access_user_id': Integer
, 'a_get_all_statistic': Boolean
, 'a_get_inactive_statistic': Boolean
, 'a_statistic_ids': Text
, 'a_entity_type_codes': Text

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: User Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
# external
from dataclasses import dataclass
from typing import ClassVar, Optional
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
class User(SQLAlchemy_ABC, Base):
@@ -138,6 +138,7 @@ User (
class Parameters_User(Get_Many_Parameters_Base):
access_user_id: int
# user_id: Optional[int]
# auth0_user_id: str
get_all_user: bool
@@ -155,12 +156,12 @@ class Parameters_User(Get_Many_Parameters_Base):
@classmethod
def from_form_filters_user(cls, form):
def from_form_filters_user(cls, form, user_id_session):
_m = f'{cls.__qualname__}.from_form_filters_user'
av.val_instance(form, 'form', _m, Filters_User)
get_inactive = not av.input_bool(form.active_only.data, "active", _m)
# user_id = '' if form.user_id.data is None else form.user_id.data
filters = cls.get_default()
filters = cls.get_default(user_id_session)
filters.get_all_user = True # (user_id == '')
filters.get_inactive_user = get_inactive
filters.user_ids = '' # user_id
@@ -170,11 +171,11 @@ class Parameters_User(Get_Many_Parameters_Base):
# filters.require_all_non_id_filters_met = False
# filters.require_any_non_id_filters_met = True
return filters
@classmethod
def from_user(cls, user):
def from_user(cls, user, user_id_session):
av.val_instance(user, 'user', 'Parameters_User.from_user', User)
filters = cls.get_default()
filters = cls.get_default(user_id_session)
filters.get_all_user = ((user.user_id is None or user.user_id == 0) and user.user_auth0_id is None)
filters.get_inactive_user = False
filters.user_ids = '' if user.user_id is None else str(user.user_id)
@@ -182,13 +183,14 @@ class Parameters_User(Get_Many_Parameters_Base):
# filters.names_user = user.get_name()
# filters.emails_user = user.email
return filters
@classmethod
def get_default(cls):
def get_default(cls, user_id_session):
return cls(
# user_id = None
access_user_id = user_id_session
# , user_id = None
# , auth0_user_id = ''
get_all_user = False
, get_all_user = False
, get_inactive_user = False
, user_ids = ''
# , user_auth0_ids = ''
@@ -205,9 +207,10 @@ class Parameters_User(Get_Many_Parameters_Base):
pass
def to_json(self):
return {
# 'a_user_id': self.user_id
'a_access_user_id': self.access_user_id
# , 'a_user_id': self.user_id
# , 'a_auth0_user_id': self.auth0_user_id
'a_get_all_user': self.get_all_user
, 'a_get_all_user': self.get_all_user
, 'a_get_inactive_user': self.get_inactive_user
, 'a_user_ids': self.user_ids
# , 'a_user_auth0_ids': self.user_auth0_ids
@@ -221,7 +224,8 @@ class Parameters_User(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_all_user': Boolean
'a_access_user_id': Integer
, 'a_get_all_user': Boolean
, 'a_get_inactive_user': Boolean
, 'a_user_ids': Text
, 'a_require_all_id_filters_met': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Business Objects
Feature: User Relationship Business Object
@@ -17,7 +17,7 @@ from helpers.helper_app import Helper_App
from dataclasses import dataclass
from typing import ClassVar
from sqlalchemy import Uuid
from sqlalchemy.types import Text, Boolean
from sqlalchemy.types import Text, Boolean, Integer
# import uuid
class User_Relationship(SQLAlchemy_ABC, Base):
@@ -136,6 +136,7 @@ class User_Relationship_Temp(db.Model, Base):
class Parameters_User_Relationship(Get_Many_Parameters_Base):
access_user_id: int
get_inactive_user_relationship: bool
get_all_user_follower: bool
follower_user_ids: str
@@ -148,7 +149,8 @@ class Parameters_User_Relationship(Get_Many_Parameters_Base):
@classmethod
def get_default(cls, user_id_session):
return cls(
get_inactive_user_relationship = True
access_user_id = user_id_session
, get_inactive_user_relationship = True
, get_all_user_follower = False
, follower_user_ids = ''
, get_all_user_following = True
@@ -161,7 +163,8 @@ class Parameters_User_Relationship(Get_Many_Parameters_Base):
@classmethod
def from_json(cls, json):
return cls(
get_inactive_user_relationship = json.get('a_get_inactive_user_relationship', False)
access_user_id = json.get('a_access_user_id', None)
, get_inactive_user_relationship = json.get('a_get_inactive_user_relationship', False)
, get_all_user_follower = json.get('a_get_all_user_follower', False)
, follower_user_ids = json.get('a_follower_user_ids', '')
, get_all_user_following = json.get('a_get_all_user_following', False)
@@ -173,7 +176,8 @@ class Parameters_User_Relationship(Get_Many_Parameters_Base):
def to_json(self):
return {
'a_get_inactive_user_relationship': self.get_inactive_user_relationship
'a_access_user_id': self.access_user_id
, 'a_get_inactive_user_relationship': self.get_inactive_user_relationship
, 'a_get_all_user_follower': self.get_all_user_follower
, 'a_follower_user_ids': self.follower_user_ids
, 'a_get_all_user_following': self.get_all_user_following
@@ -186,7 +190,8 @@ class Parameters_User_Relationship(Get_Many_Parameters_Base):
@staticmethod
def get_type_hints():
return {
'a_get_inactive_user_relationship': Boolean
'a_access_user_id': Integer
, 'a_get_inactive_user_relationship': Boolean
, 'a_get_all_user_follower': Boolean
, 'a_follower_user_ids': Text
, 'a_get_all_user_following': Boolean

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: Configuration

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: App Routing
Feature: Legal Routes

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: App Routing
Feature: TCG - MTG Game Routes
@@ -451,7 +451,7 @@ def decks():
if not user_session.get_is_logged_in():
return redirect(url_for('routes_mtg_game.home'))
parameters_deck = form_filters.to_parameters()
parameters_deck = form_filters.to_parameters(user_id_session = user_session.user_id)
model = Model_View_MTG_Decks(parameters_deck = parameters_deck)
model.form_filters = form_filters

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: App Routing
Feature: User Routes

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Module Initialisation
Feature: DataStores

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: DataStores
Feature: Base DataStore

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: DataStores
Feature: MTG DataStore
@@ -348,7 +348,7 @@ class DataStore_MTG(DataStore_Base):
def get_many_mtg_deck_commander_bracket(cls, parameters_commander_bracket):
_m = f'{cls.__qualname__}.get_many_mtg_deck_commander_bracket'
argument_dict = parameters_commander_bracket.to_json()
argument_types = Parameters_MTG_Deck.get_type_hints()
argument_types = Parameters_MTG_Deck_Commander_Bracket.get_type_hints()
# Helper_App.console_log(f'{_m}\nargument_dict: {argument_dict}')
commander_brackets = []
@@ -374,7 +374,7 @@ class DataStore_MTG(DataStore_Base):
def get_many_statistic(cls, parameters_statistic):
_m = f'{cls.__qualname__}.get_many_statistic'
argument_dict = parameters_statistic.to_json()
argument_types = Parameters_MTG_Deck.get_type_hints()
argument_types = Parameters_Statistic.get_type_hints()
# Helper_App.console_log(f'{_m}\nargument_dict: {argument_dict}')
statistics = []
@@ -393,7 +393,7 @@ class DataStore_MTG(DataStore_Base):
error.msg = str(e)
errors.append(error)
return statistics,
return statistics, errors
@classmethod
def get_many_mtg_game_session_member(cls, member_filters):

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: DataStores
Feature: User DataStore

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: Form Base and Meta Classes - data input

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: MTG Game Form
@@ -87,7 +87,8 @@ class Filters_MTG_Game(Form_Base):
def to_parameters(self, user_id_session):
return Parameters_MTG_Game (
get_all_game = True
access_user_id = user_id_session
, get_all_game = True
, get_inactive_game = not self.active_only.data
, game_ids = ''
, get_all_user = False
@@ -95,8 +96,6 @@ class Filters_MTG_Game(Form_Base):
, user_ids = '' if user_id_session is None else str(user_id_session)
, require_all_id_filters_met = True
, require_any_id_filters_met = True
, require_all_non_id_filters_met = False
, require_any_non_id_filters_met = True
)
@@ -126,7 +125,8 @@ class Filters_MTG_Game_Player(Form_Base):
def to_parameters(self, user_id_session, game_id=None):
params = Parameters_MTG_Game_Player(
get_all_player = True
access_user_id = user_id_session
, get_all_player = True
, get_inactive_player = not self.active_only.data
, player_ids = ''
, game_ids = str(game_id) if game_id else ''
@@ -170,14 +170,21 @@ class Filters_MTG_Deck(Form_Base):
, MTG_Deck.FLAG_IS_COMMANDER: self.is_commander.data
}
def to_parameters(self):
def to_parameters(self, user_id_session):
return Parameters_MTG_Deck(
get_all_deck = True
access_user_id = user_id_session
, get_all_deck = True
, get_inactive_deck = not self.active_only.data
, deck_ids = ''
, deck_names = self.search.data
, include_commander_option = True
, include_commander_option = self.is_commander.data
, commander_bracket_ids = ''
, get_all_game = False
, get_inactive_game = not self.active_only.data
, game_ids = ''
, get_all_user = False
, get_inactive_user = False
, user_ids = str(user_id_session)
, require_all_id_filters_met = False
, require_any_id_filters_met = True
, require_all_non_id_filters_met = False

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: User Form

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Module Initialisation
Feature: Helpers

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Helpers
Feature: App Helper

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Helpers
Feature: MySQL Database Helper

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Module Initialisation
Feature: Library

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Module Initialisation
Feature: Models

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Legal View Models
Feature: Accessibility Report View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Legal View Models
Feature: Accessibility Statement View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: Base View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Legal View Models
Feature: License View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: MTG Parent View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: MTG Decks View Model
@@ -45,7 +45,7 @@ class Model_View_MTG_Decks(Model_View_MTG_Base):
# Helper_App.console_log(f'Decks IDs: {self.decks}')
# Get all commander brackets
parameters_commander_bracket = Parameters_MTG_Deck_Commander_Bracket.get_default()
parameters_commander_bracket = Parameters_MTG_Deck_Commander_Bracket.get_default(self.user.user_id)
parameters_commander_bracket.get_all_commander_bracket = True
parameters_commander_bracket.require_all_id_filters_met = False
parameters_commander_bracket.require_any_id_filters_met = False
@@ -65,7 +65,7 @@ class Model_View_MTG_Decks(Model_View_MTG_Base):
deck_index[self.decks[index_deck].deck_id] = self.decks[index_deck]
# Get all statistics
parameters_statistic = Parameters_Statistic.get_default()
parameters_statistic = Parameters_Statistic.get_default(self.user.user_id)
parameters_statistic.get_all_statistic = False
parameters_statistic.entity_type_codes = Model_View_MTG_Decks.DECK_ENTITY_TYPE_CODE
parameters_statistic.entity_record_ids = ','.join([str(d.deck_id) for d in self.decks])

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: MTG Games View Model
@@ -79,7 +79,7 @@ class Model_View_MTG_Game(Model_View_MTG_Base):
self.decks, errors = datastore.get_many_mtg_deck(parameters_deck)
# Get all users
parameters_user = Parameters_User.get_default()
parameters_user = Parameters_User.get_default(self.user.user_id)
parameters_user.get_all_user = True
parameters_user.require_all_id_filters_met = False
parameters_user.require_any_id_filters_met = False

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: MTG Games View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: MTG Games View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Legal View Models
Feature: Privacy Policy View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Legal View Models
Feature: Retention Schedule View Model

View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: View Models
Feature: User View Model

4
run.py
View File

@@ -1,7 +1,7 @@
"""
Project: PARTS Website
Project: Magic Tracker
Author: Edward Middleton-Smith
Precision And Research Technology Systems Limited
Shuffle & Skirmish
Technology: Backend
Feature: Launcher

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;

View File

@@ -17,7 +17,7 @@
td:not([class]):last-child {
padding: 0 1em;
}
</style></head><body><div><main> <h1>Report</h1> <div><h2>About the Evaluation</h2> <dl><dt>Report Creator </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation Commissioner </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation date </dt><dd>Tue Apr 30 2024</dd></dl> </div> <div><h2>Executive Summary</h2> <div><span>Not provided</span></div> </div> <div><h2>Scope of the Evaluation</h2> <dl><dt>Website name </dt><dd>Public Website of Precision And Research Technology Systems Limited </dd><dt>Scope of the website </dt><dd>'All web content of the public mobile and desktop website of Precision And Research Technology Systems Limited located at https://commander.mtg.teddy.org.uk/ </dd><dt>WCAG Version </dt><dd>2.2 </dd><dt>Conformance target </dt><dd>AA </dd><dt>Accessibility support baseline </dt><dd>Google Chrome with NVDA, FireFox with NVDA, Ecosia mobile browser with TalkBack. </dd><dt>Additional evaluation requirements </dt><dd><span>Not provided</span></dd></dl> </div> <h2>Detailed Audit Results</h2> <h3>Summary</h3> <p>Reported on 55 of 55 WCAG 2.2 AA
</style></head><body><div><main> <h1>Report</h1> <div><h2>About the Evaluation</h2> <dl><dt>Report Creator </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation Commissioner </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation date </dt><dd>Tue Apr 30 2024</dd></dl> </div> <div><h2>Executive Summary</h2> <div><span>Not provided</span></div> </div> <div><h2>Scope of the Evaluation</h2> <dl><dt>Website name </dt><dd>Public Website of Shuffle & Skirmish </dd><dt>Scope of the website </dt><dd>'All web content of the public mobile and desktop website of Shuffle & Skirmish located at https://commander.mtg.teddy.org.uk/ </dd><dt>WCAG Version </dt><dd>2.2 </dd><dt>Conformance target </dt><dd>AA </dd><dt>Accessibility support baseline </dt><dd>Google Chrome with NVDA, FireFox with NVDA, Ecosia mobile browser with TalkBack. </dd><dt>Additional evaluation requirements </dt><dd><span>Not provided</span></dd></dl> </div> <h2>Detailed Audit Results</h2> <h3>Summary</h3> <p>Reported on 55 of 55 WCAG 2.2 AA
Success Criteria.</p> <ul><li><span>41</span> <span>Passed</span></li><li><span>0</span> <span>Failed</span></li><li><span>0</span> <span>Cannot tell</span></li><li><span>14</span> <span>Not present</span></li><li><span>0</span> <span>Not checked</span></li></ul> <h3>All Results</h3> <h4>1 Perceivable</h4> <h5 id="guideline-11">1.1 Text Alternatives</h5> <table aria-labelledby="guideline-11"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-111">1.1.1: Non-text Content</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>All user input controls have descriptive names and v2 Google reCaptcha used with text label to identify to user that they must check the box to prove they are not a bot.</p>
</td> </tr></tbody> </table><h5 id="guideline-12">1.2 Time-based Media</h5> <table aria-labelledby="guideline-12"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-121">1.2.1: Audio-only and Video-only (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-122">1.2.2: Captions (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-123">1.2.3: Audio Description or Media Alternative (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-124">1.2.4: Captions (Live)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-125">1.2.5: Audio Description (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr></tbody> </table><h5 id="guideline-13">1.3 Adaptable</h5> <table aria-labelledby="guideline-13"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-131">1.3.1: Info and Relationships</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>Elements change in response to zoom and viewport dimensions properly. Aria-label provided for all images.</p>
</td> </tr><tr><th scope="row" id="criterion-132">1.3.2: Meaningful Sequence</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>Flow layout keeps associated sections together but allows dynamic structure depending on size of elements relative to screen.</p>

View File

@@ -11,7 +11,7 @@
<!-- HTML content -->
<div class="{{ model.FLAG_CARD }} {{ model.FLAG_COLUMN }}">
<p>Copyright &copy; 2024 Precision And Research Technology Systems Limited
<p>Copyright &copy; 2024 Shuffle & Skirmish
</p>
<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
</p>

View File

@@ -17,7 +17,7 @@
td:not([class]):last-child {
padding: 0 1em;
}
</style></head><body><div><main> <h1>Report</h1> <div><h2>About the Evaluation</h2> <dl><dt>Report Creator </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation Commissioner </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation date </dt><dd>Tue Apr 30 2024</dd></dl> </div> <div><h2>Executive Summary</h2> <div><span>Not provided</span></div> </div> <div><h2>Scope of the Evaluation</h2> <dl><dt>Website name </dt><dd>Public Website of Precision And Research Technology Systems Limited </dd><dt>Scope of the website </dt><dd>'All web content of the public mobile and desktop website of Precision And Research Technology Systems Limited located at https://commander.mtg.teddy.org.uk/ </dd><dt>WCAG Version </dt><dd>2.2 </dd><dt>Conformance target </dt><dd>AA </dd><dt>Accessibility support baseline </dt><dd>Google Chrome with NVDA, FireFox with NVDA, Ecosia mobile browser with TalkBack. </dd><dt>Additional evaluation requirements </dt><dd><span>Not provided</span></dd></dl> </div> <h2>Detailed Audit Results</h2> <h3>Summary</h3> <p>Reported on 55 of 55 WCAG 2.2 AA
</style></head><body><div><main> <h1>Report</h1> <div><h2>About the Evaluation</h2> <dl><dt>Report Creator </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation Commissioner </dt><dd>Lord Edward Middleton-Smith </dd><dt>Evaluation date </dt><dd>Tue Apr 30 2024</dd></dl> </div> <div><h2>Executive Summary</h2> <div><span>Not provided</span></div> </div> <div><h2>Scope of the Evaluation</h2> <dl><dt>Website name </dt><dd>Public Website of Shuffle & Skirmish </dd><dt>Scope of the website </dt><dd>'All web content of the public mobile and desktop website of Shuffle & Skirmish located at https://commander.mtg.teddy.org.uk/ </dd><dt>WCAG Version </dt><dd>2.2 </dd><dt>Conformance target </dt><dd>AA </dd><dt>Accessibility support baseline </dt><dd>Google Chrome with NVDA, FireFox with NVDA, Ecosia mobile browser with TalkBack. </dd><dt>Additional evaluation requirements </dt><dd><span>Not provided</span></dd></dl> </div> <h2>Detailed Audit Results</h2> <h3>Summary</h3> <p>Reported on 55 of 55 WCAG 2.2 AA
Success Criteria.</p> <ul><li><span>41</span> <span>Passed</span></li><li><span>0</span> <span>Failed</span></li><li><span>0</span> <span>Cannot tell</span></li><li><span>14</span> <span>Not present</span></li><li><span>0</span> <span>Not checked</span></li></ul> <h3>All Results</h3> <h4>1 Perceivable</h4> <h5 id="guideline-11">1.1 Text Alternatives</h5> <table aria-labelledby="guideline-11"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-111">1.1.1: Non-text Content</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>All user input controls have descriptive names and v2 Google reCaptcha used with text label to identify to user that they must check the box to prove they are not a bot.</p>
</td> </tr></tbody> </table><h5 id="guideline-12">1.2 Time-based Media</h5> <table aria-labelledby="guideline-12"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-121">1.2.1: Audio-only and Video-only (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-122">1.2.2: Captions (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-123">1.2.3: Audio Description or Media Alternative (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-124">1.2.4: Captions (Live)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr><tr><th scope="row" id="criterion-125">1.2.5: Audio Description (Prerecorded)</th> <td> <p><span>Result:</span> Not present</p> </td> <td> </td> </tr></tbody> </table><h5 id="guideline-13">1.3 Adaptable</h5> <table aria-labelledby="guideline-13"><tbody><tr><th scope="col">Success Criterion</th> <th scope="col">Result</th> <th scope="col">Observations</th> </tr> <tr><th scope="row" id="criterion-131">1.3.1: Info and Relationships</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>Elements change in response to zoom and viewport dimensions properly. Aria-label provided for all images.</p>
</td> </tr><tr><th scope="row" id="criterion-132">1.3.2: Meaningful Sequence</th> <td> <p><span>Result:</span> Passed</p> </td> <td> <p>Observations:</p> <p>Flow layout keeps associated sections together but allows dynamic structure depending on size of elements relative to screen.</p>