From ab50a81a0eaca544ecb4bfc64945f895c1c49ed7 Mon Sep 17 00:00:00 2001 From: Teddy Middleton-Smith Date: Tue, 24 Jun 2025 19:49:39 +0100 Subject: [PATCH] Feat(Python): Main business objects for Dog Command Link page created. --- business_objects/base.py | 1 + business_objects/dog/command.py | 99 +- business_objects/dog/command_category.py | 104 + business_objects/dog/dog.py | 34 +- business_objects/dog/dog_command_link.py | 149 + business_objects/dog/obedience_level.py | 104 + business_objects/dog/understanding_level.py | 104 + static/MySQL/0000_combined.sql | 5217 +---------------- .../MySQL/7203_p_dog_get_many_dog_command.sql | 21 +- templates/pages/dog/_dog_command_link.html | 0 templates/pages/dog/_dog_home.html | 0 11 files changed, 606 insertions(+), 5227 deletions(-) create mode 100644 business_objects/dog/command_category.py create mode 100644 business_objects/dog/dog_command_link.py create mode 100644 business_objects/dog/obedience_level.py create mode 100644 business_objects/dog/understanding_level.py create mode 100644 templates/pages/dog/_dog_command_link.html create mode 100644 templates/pages/dog/_dog_home.html diff --git a/business_objects/base.py b/business_objects/base.py index dcf4464..061445d 100644 --- a/business_objects/base.py +++ b/business_objects/base.py @@ -56,6 +56,7 @@ class Base(): FLAG_NAME_ATTR_OPTION_VALUE: ClassVar[str] = 'NAME_ATTR_OPTION_VALUE' FLAG_NAME_SINGULAR: ClassVar[str] = 'name_singular' FLAG_NAME_PLURAL: ClassVar[str] = 'name_plural' + FLAG_NOTES: ClassVar[str] = "notes" FLAG_PHONE_NUMBER: ClassVar[str] = 'phone_number' FLAG_POSTCODE: ClassVar[str] = 'postcode' FLAG_PRIORITY: ClassVar[str] = 'priority' diff --git a/business_objects/dog/command.py b/business_objects/dog/command.py index 085faeb..ade6bad 100644 --- a/business_objects/dog/command.py +++ b/business_objects/dog/command.py @@ -9,6 +9,7 @@ Feature: Command Business Object # internal from business_objects.base import Base +from business_objects.dog.command_category import Command_Category from business_objects.db_base import SQLAlchemy_ABC import lib.argument_validation as av from extensions import db @@ -19,43 +20,42 @@ from typing import ClassVar class Command(SQLAlchemy_ABC, Base): - FLAG_ALTCHA: ClassVar[str] = 'altcha' FLAG_COMMAND: ClassVar[str] = 'command' - FLAG_NAME_COMPANY: ClassVar[str] = 'name-company' - FLAG_NAME_CONTACT: ClassVar[str] = 'name-contact' - FLAG_MESSAGE: ClassVar[str] = 'message' - FLAG_RECEIVE_MARKETING_COMMUNICATIONS: ClassVar[str] = 'receive-marketing-communications' + FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION: ClassVar[str] = 'hand-signal-default-description' + FLAG_CAN_HAVE_BUTTON: ClassVar[str] = 'can-have-button' NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_COMMAND - NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_EMAIL + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME - __tablename__ = 'PH_Command' + __tablename__ = 'DOG_Command' __table_args__ = { 'extend_existing': True } id_command = db.Column(db.Integer, primary_key=True) - email = db.Column(db.String(250)) - name_contact = db.Column(db.String(250)) - name_company = db.Column(db.String(250)) - message = db.Column(db.Text) - receive_marketing_communications = db.Column(db.Boolean) + id_command_category = db.Column(db.Integer) + name = db.Column(db.String(250)) + hand_signal_default_description = db.Column(db.Text) + can_have_button = db.Column(db.Boolean) + notes = db.Column(db.Text) active = db.Column(db.Boolean) created_on = db.Column(db.DateTime) def __init__(self): self.id_command = 0 self.is_new = False + self.has_button = False super().__init__() - def from_DB_Command(query_row): - _m = 'Command.from_DB_Command' + def from_DB_Dog_Command(query_row): + _m = 'Command.from_DB_Dog_Command' command = Command() - command.id_command = query_row[0] - command.email = query_row[1] - command.name_contact = query_row[2] - command.name_company = query_row[3] - command.message = query_row[4] - command.receive_marketing_communications = av.input_bool(query_row[5], 'receive_marketing_communications', _m) - command.active = av.input_bool(query_row[6], 'active', _m) - command.created_on = query_row[7] + command.id_command = query_row[5] + command.id_command_category = query_row[3] + command.name = query_row[7] + # command.hand_signal_default_description = query_row[2] + # command.can_have_button = av.input_bool(query_row[5], 'can_have_button', _m) + command.has_button = av.input_bool(query_row[7], 'has_button', _m) + # command.notes = query_row[4] + command.active = av.input_bool(True, 'active', _m) + # command.created_on = query_row[7] return command @classmethod @@ -65,25 +65,24 @@ class Command(SQLAlchemy_ABC, Base): if json is None: return Command Helper_App.console_log(f'{_m}\njson: {json}') command.id_command = -1 - command.email = json[cls.FLAG_EMAIL] - command.name_contact = json[cls.FLAG_NAME_CONTACT] - command.name_company = json[cls.FLAG_NAME_COMPANY] - command.message = json[cls.FLAG_MESSAGE] - command.receive_marketing_communications = json[cls.FLAG_RECEIVE_MARKETING_COMMUNICATIONS] + command.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY] + command.name = json[cls.FLAG_NAME] + command.hand_signal_default_description = json[cls.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION] + command.can_have_button = json[cls.FLAG_CAN_HAVE_BUTTON] + command.notes = json[cls.FLAG_NOTES] command.active = json[cls.FLAG_ACTIVE] command.created_on = json.get(cls.FLAG_CREATED_ON, None) Helper_App.console_log(f'Command: {command}') return command - def to_json(self): as_json = { self.FLAG_COMMAND: self.id_command - , self.FLAG_EMAIL: self.email - , self.FLAG_NAME_CONTACT: self.name_contact - , self.FLAG_NAME_COMPANY: self.name_company - , self.FLAG_MESSAGE: self.message - , self.FLAG_RECEIVE_MARKETING_COMMUNICATIONS: self.receive_marketing_communications + , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category + , self.FLAG_NAME: self.name + , self.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION: self.hand_signal_default_description + , self.FLAG_CAN_HAVE_BUTTON: self.can_have_button + , self.FLAG_NOTES: self.notes , self.FLAG_ACTIVE: self.active , self.FLAG_CREATED_ON: self.created_on } @@ -94,26 +93,26 @@ class Command(SQLAlchemy_ABC, Base): return f''' {self.__class__.__name__}( {self.FLAG_COMMAND}: {self.id_command} - {self.FLAG_EMAIL}: {self.email} - {self.FLAG_NAME_CONTACT}: {self.name_contact} - {self.FLAG_NAME_COMPANY}: {self.name_company} - {self.FLAG_MESSAGE}: {self.message} - {self.FLAG_RECEIVE_MARKETING_COMMUNICATIONS}: {self.receive_marketing_communications} + {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category} + {self.FLAG_NAME}: {self.name} + {self.FLAG_HAND_SIGNAL_DEFAULT_DESCRIPTION}: {self.hand_signal_default_description} + {self.FLAG_CAN_HAVE_BUTTON}: {self.can_have_button} + {self.FLAG_NOTES}: {self.notes} {self.FLAG_ACTIVE}: {self.active} {self.FLAG_CREATED_ON}: {self.created_on} ) ''' class Command_Temp(db.Model, Base): - __tablename__ = 'PH_Command_Temp' + __tablename__ = 'DOG_Command_Temp' __table_args__ = { 'extend_existing': True } id_temp = db.Column(db.Integer, primary_key=True) id_command = db.Column(db.Integer) - email = db.Column(db.String(250)) - name_contact = db.Column(db.String(250)) - name_company = db.Column(db.String(250)) - message = db.Column(db.Text) - receive_marketing_communications = db.Column(db.Boolean) + id_command_category = db.Column(db.Integer) + name = db.Column(db.String(250)) + hand_signal_default_description = db.Column(db.Text) + can_have_button = db.Column(db.Boolean) + notes = db.Column(db.Text) active = db.Column(db.Boolean) created_on = db.Column(db.DateTime) guid: str = db.Column(db.String(36)) @@ -122,15 +121,15 @@ class Command_Temp(db.Model, Base): super().__init__() @classmethod - def from_command(cls, command): + def from_Command(cls, command): _m = 'Command_Temp.from_Command' temp = cls() temp.id_command = command.id_command - temp.email = command.email - temp.name_contact = command.name_contact - temp.name_company = command.name_company - temp.message = command.message - temp.receive_marketing_communications = command.receive_marketing_communications + temp.id_command_category = command.id_command_category + temp.name = command.name + temp.hand_signal_default_description = command.hand_signal_default_description + temp.can_have_button = command.can_have_button + temp.notes = command.notes temp.active = command.active temp.created_on = command.created_on return temp \ No newline at end of file diff --git a/business_objects/dog/command_category.py b/business_objects/dog/command_category.py new file mode 100644 index 0000000..4f90680 --- /dev/null +++ b/business_objects/dog/command_category.py @@ -0,0 +1,104 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: Business Objects +Feature: Command Category Business Object +""" + +# internal +from business_objects.base import Base +from business_objects.db_base import SQLAlchemy_ABC +import lib.argument_validation as av +from extensions import db +from helpers.helper_app import Helper_App +# external +from dataclasses import dataclass +from typing import ClassVar + + +class Command_Category(SQLAlchemy_ABC, Base): + FLAG_COMMAND_CATEGORY: ClassVar[str] = 'command-category' + NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_COMMAND_CATEGORY + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME + + __tablename__ = 'DOG_Command_Category' + __table_args__ = { 'extend_existing': True } + + id_command_category = db.Column(db.Integer, primary_key=True) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + + def __init__(self): + self.id_command_category = 0 + self.is_new = False + super().__init__() + + def from_DB_Dog_Command(query_row): + _m = 'Command_Category.from_DB_Dog_Command' + level = Command_Category() + level.id_command_category = query_row[5] + level.code = query_row[6] + level.name = query_row[7] + level.active = True + return level + + @classmethod + def from_json(cls, json): + _m = 'Command_Category.from_json' + command_category = cls() + if json is None: return Command_Category + Helper_App.console_log(f'{_m}\njson: {json}') + command_category.id_command_category = -1 + command_category.code = json[cls.FLAG_CODE] + command_category.name = json[cls.FLAG_NAME] + command_category.active = json[cls.FLAG_ACTIVE] + Helper_App.console_log(f'Command_Category: {command_category}') + return command_category + + + def to_json(self): + as_json = { + self.FLAG_COMMAND_CATEGORY: self.id_command_category + , self.FLAG_CODE: self.code + , self.FLAG_NAME: self.name + , self.FLAG_ACTIVE: self.active + } + Helper_App.console_log(f'as_json: {as_json}') + return as_json + + def __repr__(self): + return f''' +{self.__class__.__name__}( + {self.FLAG_COMMAND_CATEGORY}: {self.id_command_category} + {self.FLAG_CODE}: {self.code} + {self.FLAG_NAME}: {self.name} + {self.FLAG_ACTIVE}: {self.active} +) + ''' + + +class Command_Category_Temp(db.Model, Base): + __tablename__ = 'DOG_Command_Category_Temp' + __table_args__ = { 'extend_existing': True } + id_temp = db.Column(db.Integer, primary_key=True) + id_command_category = db.Column(db.Integer) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + guid: str = db.Column(db.String(36)) + + def __init__(self): + super().__init__() + + @classmethod + def from_command_category(cls, command_category): + _m = 'Command_Category_Temp.from_Command_Category' + temp = cls() + temp.id_command_category = command_category.id_command_category + temp.code = command_category.code + temp.name = command_category.name + temp.active = command_category.active + return temp \ No newline at end of file diff --git a/business_objects/dog/dog.py b/business_objects/dog/dog.py index 1245601..e6a4c3b 100644 --- a/business_objects/dog/dog.py +++ b/business_objects/dog/dog.py @@ -26,7 +26,7 @@ class Dog(SQLAlchemy_ABC, Base): NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_DOG NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_EMAIL - __tablename__ = 'PH_Dog' + __tablename__ = 'DOG_Dog' __table_args__ = { 'extend_existing': True } id_dog = db.Column(db.Integer, primary_key=True) @@ -41,15 +41,17 @@ class Dog(SQLAlchemy_ABC, Base): self.is_new = False super().__init__() - def from_DB_Dog(query_row): + def from_DB_Dog_Command(query_row): _m = 'Dog.from_DB_Dog' dog = Dog() - dog.id_dog = query_row[0] - dog.name = query_row[1] + dog.id_dog = query_row[1] + dog.name = query_row[2] + """ dog.appearance = query_row[2] dog.mass_kg = query_row[3] dog.notes = query_row[4] - dog.active = av.input_bool(query_row[5], 'active', _m) + """ + dog.active = av.input_bool(True, 'active', _m) return dog @classmethod @@ -92,17 +94,15 @@ class Dog(SQLAlchemy_ABC, Base): ) ''' -""" class Dog_Temp(db.Model, Base): - __tablename__ = 'PH_Dog_Temp' + __tablename__ = 'DOG_Dog_Temp' __table_args__ = { 'extend_existing': True } id_temp = db.Column(db.Integer, primary_key=True) id_dog = db.Column(db.Integer) - email = db.Column(db.String(250)) - name_contact = db.Column(db.String(250)) - name_company = db.Column(db.String(250)) - message = db.Column(db.Text) - receive_marketing_communications = db.Column(db.Boolean) + name = db.Column(db.String(250)) + appearance = db.Column(db.String(1000)) + mass_kg = db.Column(db.Numeric(precision=7, scale=3)) + notes = db.Column(db.Text) active = db.Column(db.Boolean) created_on = db.Column(db.DateTime) guid: str = db.Column(db.String(36)) @@ -115,12 +115,10 @@ class Dog_Temp(db.Model, Base): _m = 'Dog_Temp.from_Dog' temp = cls() temp.id_dog = dog.id_dog - temp.email = dog.email - temp.name_contact = dog.name_contact - temp.name_company = dog.name_company - temp.message = dog.message - temp.receive_marketing_communications = dog.receive_marketing_communications + temp.name = dog.name + temp.appearance = dog.appearance + temp.mass_kg = dog.mass_kg + temp.notes = dog.notes temp.active = dog.active temp.created_on = dog.created_on return temp -""" \ No newline at end of file diff --git a/business_objects/dog/dog_command_link.py b/business_objects/dog/dog_command_link.py new file mode 100644 index 0000000..32f19d5 --- /dev/null +++ b/business_objects/dog/dog_command_link.py @@ -0,0 +1,149 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: Business Objects +Feature: Dog Command Link Business Object +""" + +# internal +from business_objects.base import Base +from business_objects.dog.command import Command +from business_objects.dog.command_category import Command_Category +from business_objects.db_base import SQLAlchemy_ABC +from business_objects.dog.dog import Dog +from business_objects.dog.obedience_level import Obedience_Level +from business_objects.dog.understanding_level import Understanding_Level +import lib.argument_validation as av +from extensions import db +from helpers.helper_app import Helper_App +# external +from dataclasses import dataclass +from typing import ClassVar + + +class Dog_Command_Link(SQLAlchemy_ABC, Base): + FLAG_DOG_COMMAND_LINK: ClassVar[str] = 'dog_command_link' + FLAG_HAND_SIGNAL_DESCRIPTION: ClassVar[str] = 'hand-signal-description' + FLAG_CAN_HAVE_BUTTON: ClassVar[str] = 'can-have-button' + NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_DOG_COMMAND_LINK + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME + + __tablename__ = 'DOG_Dog_Command_Link' + __table_args__ = { 'extend_existing': True } + + id_dog_command_link = db.Column(db.Integer, primary_key=True) + id_dog = db.Column(db.Integer) + id_command = db.Column(db.Integer) + id_understanding_level = db.Column(db.Integer) + id_obedience_level = db.Column(db.Integer) + hand_signal_description = db.Column(db.Text) + notes = db.Column(db.Text) + active = db.Column(db.Boolean) + created_on = db.Column(db.DateTime) + + def __init__(self): + self.id_dog_command_link = 0 + self.is_new = False + #self.id_command_category = None + super().__init__() + + def from_DB_Dog_Command(query_row): + _m = 'Dog_Command_Link.from_DB_Dog_Command' + dog_command_link = Dog_Command_Link() + dog_command_link.id_dog_command_link = query_row[0] + dog_command_link.id_dog = query_row[1] + #dog_command_link.id_command_category = query_row[3] + dog_command_link.id_command = query_row[5] + dog_command_link.id_understanding_level = query_row[8] + dog_command_link.id_obedience_level = query_row[11] + dog_command_link.hand_signal_description = query_row[14] + dog_command_link.notes = query_row[15] + dog_command_link.active = av.input_bool(query_row[16], 'active', _m) + # dog_command_link.created_on = query_row[7] + return dog_command_link + + @classmethod + def from_json(cls, json): + _m = 'Dog_Command_Link.from_json' + dog_command_link = cls() + if json is None: return dog_command_link + Helper_App.console_log(f'{_m}\njson: {json}') + dog_command_link.id_dog_command_link = -1 + dog_command_link.id_dog = json[Dog.FLAG_DOG] + dog_command_link.id_command = json[Command.FLAG_COMMAND] + dog_command_link.id_understanding_level = json[Understanding_Level.FLAG_UNDERSTANDING_LEVEL] + dog_command_link.id_obedience_level = json[Obedience_Level.FLAG_OBEDIENCE_LEVEL] + dog_command_link.hand_signal_description = json[cls.FLAG_HAND_SIGNAL_DESCRIPTION] + dog_command_link.notes = json[cls.FLAG_NOTES] + dog_command_link.active = json[cls.FLAG_ACTIVE] + dog_command_link.created_on = json.get(cls.FLAG_CREATED_ON, None) + # dog_command_link.id_command_category = json[Command_Category.FLAG_COMMAND_CATEGORY] + Helper_App.console_log(f'Dog Command Link: {dog_command_link}') + return dog_command_link + + def to_json(self): + as_json = { + self.FLAG_DOG_COMMAND_LINK: self.id_dog_command_link + , Dog.FLAG_DOG: self.id_dog + , Command.FLAG_COMMAND: self.id_command + , Understanding_Level.FLAG_UNDERSTANDING_LEVEL: self.id_understanding_level + , Obedience_Level.FLAG_OBEDIENCE_LEVEL: self.id_obedience_level + , self.FLAG_HAND_SIGNAL_DESCRIPTION: self.hand_signal_description + , self.FLAG_NOTES: self.notes + , self.FLAG_ACTIVE: self.active + , self.FLAG_CREATED_ON: self.created_on + } + # , Command_Category.FLAG_COMMAND_CATEGORY: self.id_command_category + Helper_App.console_log(f'as_json: {as_json}') + return as_json + + def __repr__(self): + return f''' +{self.__class__.__name__}( + {self.FLAG_DOG_COMMAND_LINK}: {self.id_dog_command_link} + {Dog.FLAG_DOG}: {self.id_dog} + {Command.FLAG_COMMAND}: {self.id_command} + {Understanding_Level.FLAG_UNDERSTANDING_LEVEL}: {self.id_understanding_level} + {Obedience_Level.FLAG_OBEDIENCE_LEVEL}: {self.id_obedience_level} + {self.FLAG_HAND_SIGNAL_DESCRIPTION}: {self.hand_signal_description} + {self.FLAG_NOTES}: {self.notes} + {self.FLAG_ACTIVE}: {self.active} + {self.FLAG_CREATED_ON}: {self.created_on} +) + ''' +# {Command_Category.FLAG_COMMAND_CATEGORY}: {self.id_command_category} + +class Dog_Command_Link_Temp(db.Model, Base): + __tablename__ = 'DOG_Dog_Command_Link_Temp' + __table_args__ = { 'extend_existing': True } + id_temp = db.Column(db.Integer, primary_key=True) + id_dog_command_link = db.Column(db.Integer) + id_dog = db.Column(db.Integer) + id_command = db.Column(db.Integer) + id_understanding_level = db.Column(db.Integer) + id_obedience_level = db.Column(db.Integer) + hand_signal_description = db.Column(db.Text) + notes = db.Column(db.Text) + active = db.Column(db.Boolean) + created_on = db.Column(db.DateTime) + guid: str = db.Column(db.String(36)) + + def __init__(self): + super().__init__() + + @classmethod + def from_Dog_Command_Link(cls, dog_command_link): + _m = 'Dog_Command_Link_Temp.from_Dog_Command_Link' + temp = cls() + temp.id_dog_command_link = dog_command_link.id_dog_command_link + temp.id_dog = dog_command_link.id_dog + temp.id_command = dog_command_link.id_command + temp.id_understanding_level = dog_command_link.id_understanding_level + temp.id_obedience_level = dog_command_link.id_obedience_level + temp.hand_signal_description = dog_command_link.hand_signal_description + temp.notes = dog_command_link.notes + temp.active = dog_command_link.active + temp.created_on = dog_command_link.created_on + return temp \ No newline at end of file diff --git a/business_objects/dog/obedience_level.py b/business_objects/dog/obedience_level.py new file mode 100644 index 0000000..df36aa8 --- /dev/null +++ b/business_objects/dog/obedience_level.py @@ -0,0 +1,104 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: Business Objects +Feature: Obedience Level Business Object +""" + +# internal +from business_objects.base import Base +from business_objects.db_base import SQLAlchemy_ABC +import lib.argument_validation as av +from extensions import db +from helpers.helper_app import Helper_App +# external +from dataclasses import dataclass +from typing import ClassVar + + +class Obedience_Level(SQLAlchemy_ABC, Base): + FLAG_OBEDIENCE_LEVEL: ClassVar[str] = 'obedience-level' + NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_OBEDIENCE_LEVEL + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME + + __tablename__ = 'DOG_Obedience_Level' + __table_args__ = { 'extend_existing': True } + + id_obedience_level = db.Column(db.Integer, primary_key=True) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + + def __init__(self): + self.id_obedience_level = 0 + self.is_new = False + super().__init__() + + def from_DB_Dog_Command(query_row): + _m = 'Obedience_Level.from_DB_Dog_Command' + level = Obedience_Level() + level.id_obedience_level = query_row[5] + level.code = query_row[6] + level.name = query_row[7] + level.active = True + return level + + @classmethod + def from_json(cls, json): + _m = 'Obedience_Level.from_json' + obedience_level = cls() + if json is None: return Obedience_Level + Helper_App.console_log(f'{_m}\njson: {json}') + obedience_level.id_obedience_level = -1 + obedience_level.code = json[cls.FLAG_CODE] + obedience_level.name = json[cls.FLAG_NAME] + obedience_level.active = json[cls.FLAG_ACTIVE] + Helper_App.console_log(f'Obedience_Level: {obedience_level}') + return obedience_level + + + def to_json(self): + as_json = { + self.FLAG_OBEDIENCE_LEVEL: self.id_obedience_level + , self.FLAG_CODE: self.code + , self.FLAG_NAME: self.name + , self.FLAG_ACTIVE: self.active + } + Helper_App.console_log(f'as_json: {as_json}') + return as_json + + def __repr__(self): + return f''' +{self.__class__.__name__}( + {self.FLAG_OBEDIENCE_LEVEL}: {self.id_obedience_level} + {self.FLAG_CODE}: {self.code} + {self.FLAG_NAME}: {self.name} + {self.FLAG_ACTIVE}: {self.active} +) + ''' + + +class Obedience_Level_Temp(db.Model, Base): + __tablename__ = 'DOG_Obedience_Level_Temp' + __table_args__ = { 'extend_existing': True } + id_temp = db.Column(db.Integer, primary_key=True) + id_obedience_level = db.Column(db.Integer) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + guid: str = db.Column(db.String(36)) + + def __init__(self): + super().__init__() + + @classmethod + def from_obedience_level(cls, obedience_level): + _m = 'Obedience_Level_Temp.from_Obedience_Level' + temp = cls() + temp.id_obedience_level = obedience_level.id_obedience_level + temp.code = obedience_level.code + temp.name = obedience_level.name + temp.active = obedience_level.active + return temp \ No newline at end of file diff --git a/business_objects/dog/understanding_level.py b/business_objects/dog/understanding_level.py new file mode 100644 index 0000000..30167c1 --- /dev/null +++ b/business_objects/dog/understanding_level.py @@ -0,0 +1,104 @@ +""" +Project: PARTS Website +Author: Edward Middleton-Smith + Precision And Research Technology Systems Limited + +Technology: Business Objects +Feature: Understanding Level Business Object +""" + +# internal +from business_objects.base import Base +from business_objects.db_base import SQLAlchemy_ABC +import lib.argument_validation as av +from extensions import db +from helpers.helper_app import Helper_App +# external +from dataclasses import dataclass +from typing import ClassVar + + +class Understanding_Level(SQLAlchemy_ABC, Base): + FLAG_UNDERSTANDING_LEVEL: ClassVar[str] = 'understanding-level' + NAME_ATTR_OPTION_VALUE: ClassVar[str] = FLAG_UNDERSTANDING_LEVEL + NAME_ATTR_OPTION_TEXT: ClassVar[str] = Base.FLAG_NAME + + __tablename__ = 'DOG_Understanding_Level' + __table_args__ = { 'extend_existing': True } + + id_understanding_level = db.Column(db.Integer, primary_key=True) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + + def __init__(self): + self.id_understanding_level = 0 + self.is_new = False + super().__init__() + + def from_DB_Dog_Understanding_Level(query_row): + _m = 'Understanding_Level.from_DB_Dog_Understanding_Level' + level = Understanding_Level() + level.id_understanding_level = query_row[5] + level.code = query_row[6] + level.name = query_row[7] + level.active = True + return level + + @classmethod + def from_json(cls, json): + _m = 'Understanding_Level.from_json' + understanding_level = cls() + if json is None: return Understanding_Level + Helper_App.console_log(f'{_m}\njson: {json}') + understanding_level.id_understanding_level = -1 + understanding_level.code = json[cls.FLAG_CODE] + understanding_level.name = json[cls.FLAG_NAME] + understanding_level.active = json[cls.FLAG_ACTIVE] + Helper_App.console_log(f'Understanding_Level: {understanding_level}') + return understanding_level + + + def to_json(self): + as_json = { + self.FLAG_UNDERSTANDING_LEVEL: self.id_understanding_level + , self.FLAG_CODE: self.code + , self.FLAG_NAME: self.name + , self.FLAG_ACTIVE: self.active + } + Helper_App.console_log(f'as_json: {as_json}') + return as_json + + def __repr__(self): + return f''' +{self.__class__.__name__}( + {self.FLAG_UNDERSTANDING_LEVEL}: {self.id_understanding_level} + {self.FLAG_CODE}: {self.code} + {self.FLAG_NAME}: {self.name} + {self.FLAG_ACTIVE}: {self.active} +) + ''' + + +class Understanding_Level_Temp(db.Model, Base): + __tablename__ = 'DOG_Understanding_Level_Temp' + __table_args__ = { 'extend_existing': True } + id_temp = db.Column(db.Integer, primary_key=True) + id_understanding_level = db.Column(db.Integer) + code = db.Column(db.String(100)) + name = db.Column(db.String(250)) + active = db.Column(db.Boolean) + guid: str = db.Column(db.String(36)) + + def __init__(self): + super().__init__() + + @classmethod + def from_understanding_level(cls, understanding_level): + _m = 'Understanding_Level_Temp.from_Understanding_Level' + temp = cls() + temp.id_understanding_level = understanding_level.id_understanding_level + temp.code = understanding_level.code + temp.name = understanding_level.name + temp.active = understanding_level.active + return temp \ No newline at end of file diff --git a/static/MySQL/0000_combined.sql b/static/MySQL/0000_combined.sql index 6a335d4..060701e 100644 --- a/static/MySQL/0000_combined.sql +++ b/static/MySQL/0000_combined.sql @@ -1,4354 +1,10 @@ - -CREATE DATABASE IF NOT EXISTS parts; - -GRANT ALL PRIVILEGES ON parts.* TO 'teddy'@'%'; -FLUSH PRIVILEGES; - -USE parts; - --- Permanent Temp Tables -DROP TABLE IF EXISTS parts.tmp_DOG_Calc_User; --- DROP TABLE IF EXISTS parts.tmp_core_Msg_Error; -DROP TABLE IF EXISTS parts.tmp_DOG_User; -DROP TABLE IF EXISTS parts.tmp_DOG_User_Role_Link; - - --- Permanent Tables -DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link_Temp; -DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Dog_Drive_Link; - -DROP TABLE IF EXISTS parts.DOG_Drive_Temp; -DROP TABLE IF EXISTS parts.DOG_Drive_Audit; -DROP TABLE IF EXISTS parts.DOG_Drive; - -DROP TABLE IF EXISTS parts.DOG_Command_Button_Link_Temp; -DROP TABLE IF EXISTS parts.DOG_Command_Button_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Command_Button_Link; - -DROP TABLE IF EXISTS parts.DOG_Button_Icon_Temp; -DROP TABLE IF EXISTS parts.DOG_Button_Icon_Audit; -DROP TABLE IF EXISTS parts.DOG_Button_Icon; - -DROP TABLE IF EXISTS parts.DOG_Image_Temp; -DROP TABLE IF EXISTS parts.DOG_Image_Audit; -DROP TABLE IF EXISTS parts.DOG_Image; - -DROP TABLE IF EXISTS parts.DOG_Button_Shape_Temp; -DROP TABLE IF EXISTS parts.DOG_Button_Shape_Audit; -DROP TABLE IF EXISTS parts.DOG_Button_Shape; - -DROP TABLE IF EXISTS parts.DOG_Colour_Temp; -DROP TABLE IF EXISTS parts.DOG_Colour_Audit; -DROP TABLE IF EXISTS parts.DOG_Colour; - -DROP TABLE IF EXISTS parts.DOG_Location_Link_Temp; -DROP TABLE IF EXISTS parts.DOG_Location_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Location_Link; - -DROP TABLE IF EXISTS parts.DOG_Location_Temp; -DROP TABLE IF EXISTS parts.DOG_Location_Audit; -DROP TABLE IF EXISTS parts.DOG_Location; - -DROP TABLE IF EXISTS parts.DOG_Personal_Best_Temp; -DROP TABLE IF EXISTS parts.DOG_Personal_Best_Audit; -DROP TABLE IF EXISTS parts.DOG_Personal_Best; - -DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link_Temp; -DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Dog_Command_Link; - -DROP TABLE IF EXISTS parts.DOG_Command_Temp; -DROP TABLE IF EXISTS parts.DOG_Command_Audit; -DROP TABLE IF EXISTS parts.DOG_Command; - -DROP TABLE IF EXISTS parts.DOG_Command_Category_Temp; -DROP TABLE IF EXISTS parts.DOG_Command_Category_Audit; -DROP TABLE IF EXISTS parts.DOG_Command_Category; - -DROP TABLE IF EXISTS parts.DOG_Obedience_Level_Temp; -DROP TABLE IF EXISTS parts.DOG_Obedience_Level_Audit; -DROP TABLE IF EXISTS parts.DOG_Obedience_Level; - -DROP TABLE IF EXISTS parts.DOG_Understanding_Level_Temp; -DROP TABLE IF EXISTS parts.DOG_Understanding_Level_Audit; -DROP TABLE IF EXISTS parts.DOG_Understanding_Level; - -DROP TABLE IF EXISTS parts.DOG_Competency_Level_Temp; -DROP TABLE IF EXISTS parts.DOG_Competency_Level_Audit; -DROP TABLE IF EXISTS parts.DOG_Competency_Level; - -DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link_Temp; -DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Dog_Breed_Link; - -DROP TABLE IF EXISTS parts.DOG_Breed_Temp; -DROP TABLE IF EXISTS parts.DOG_Breed_Audit; -DROP TABLE IF EXISTS parts.DOG_Breed; - -DROP TABLE IF EXISTS parts.DOG_Dog_Temp; -DROP TABLE IF EXISTS parts.DOG_Dog_Audit; -DROP TABLE IF EXISTS parts.DOG_Dog; - -DROP TABLE IF EXISTS parts.DOG_Dog_Change_Set; - -DROP TABLE IF EXISTS parts.DOG_Calc_User_Temp; - -DROP TABLE IF EXISTS parts.DOG_User_Role_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_User_Role_Link; - -DROP TABLE IF EXISTS parts.DOG_Role_Permission_Link_Audit; -DROP TABLE IF EXISTS parts.DOG_Role_Permission_Link; - -DROP TABLE IF EXISTS parts.DOG_Role_Audit; -DROP TABLE IF EXISTS parts.DOG_Role; - -DROP TABLE IF EXISTS parts.DOG_User_Temp; -DROP TABLE IF EXISTS parts.DOG_User_Audit; -DROP TABLE IF EXISTS parts.DOG_User; - -DROP TABLE IF EXISTS parts.DOG_Permission_Audit; -DROP TABLE IF EXISTS parts.DOG_Permission; - -DROP TABLE IF EXISTS parts.DOG_Permission_Group_Audit; -DROP TABLE IF EXISTS parts.DOG_Permission_Group; - -DROP TABLE IF EXISTS parts.DOG_Access_Level_Audit; -DROP TABLE IF EXISTS parts.DOG_Access_Level; - -DROP TABLE IF EXISTS parts.DOG_User_Change_Set; - -/* -DROP TABLE IF EXISTS parts.CORE_Split_Key_Value_Pair_Csv_Temp; -DROP TABLE IF EXISTS parts.CORE_Split_Temp; - -*/ -DROP TABLE IF EXISTS parts.CORE_File_Type; -DROP TABLE IF EXISTS parts.CORE_Msg_Error_Type; - --- Stored Procedures -DROP PROCEDURE IF EXISTS parts.p_DOG_test_get_many_dog_command; -DROP PROCEDURE IF EXISTS parts.p_DOG_test_get_many_command; -DROP PROCEDURE IF EXISTS parts.p_DOG_get_many_command; -DROP PROCEDURE IF EXISTS parts.p_DOG_test_save_command; -DROP PROCEDURE IF EXISTS parts.p_DOG_save_command; - -DROP PROCEDURE IF EXISTS parts.p_DOG_clear_calc_user; -DROP PROCEDURE IF EXISTS parts.p_DOG_calc_user; - -/* -DROP PROCEDURE IF EXISTS parts.p_core_clear_split_key_value_pair_csv; -DROP PROCEDURE IF EXISTS parts.p_core_split_key_value_pair_csv; -DROP PROCEDURE IF EXISTS parts.p_core_clear_split; -DROP PROCEDURE IF EXISTS parts.p_core_split; -DROP PROCEDURE IF EXISTS parts.p_clear_split_key_value_pair_csv; -DROP PROCEDURE IF EXISTS parts.p_split_key_value_pair_csv; -DROP PROCEDURE IF EXISTS parts.p_clear_split; -DROP PROCEDURE IF EXISTS parts.p_split; - -DROP PROCEDURE IF EXISTS parts.p_core_debug_timing_reporting; -DROP PROCEDURE IF EXISTS parts.p_debug_timing_reporting; -DROP PROCEDURE IF EXISTS parts.p_core_validate_guid; -DROP PROCEDURE IF EXISTS parts.p_core_validate_guid_test; -*/ -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'CORE_Msg_Error_Type' -; - -CREATE TABLE IF NOT EXISTS parts.CORE_Msg_Error_Type ( - id_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(500) NOT NULL - , description VARCHAR(1000) - , is_breaking_error BIT NOT NULL - , background_colour VARCHAR(32) NOT NULL DEFAULT '#111111' - , text_colour VARCHAR(32) NOT NULL DEFAULT '#110000' -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'CORE_File_Type' -; - -CREATE TABLE IF NOT EXISTS parts.CORE_File_Type ( - id_file_type INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , is_image BIT NOT NULL DEFAULT 0 - , active BIT NOT NULL DEFAULT 1 -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'CORE_Split_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.CORE_Split_Temp ( - guid BINARY(36) NOT NULL - , display_order INT NOT NULL - , substring VARCHAR(4000) NOT NULL -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'CORE_Split_Key_Value_Pair_Csv_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.CORE_Split_Key_Value_Pair_Csv_Temp ( - guid BINARY(36) NOT NULL - , id INT NOT NULL - , key_column VARCHAR(4000) NULL - , value_column VARCHAR(4000) NULL -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User_Change_Set' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User_Change_Set ( - id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , comment VARCHAR(500) - , updated_last_on DATETIME - , id_user_updated_last_by INT -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Access_Level' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Access_Level ( - id_access_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) - , name VARCHAR(250) - , priority INT NOT NULL - , display_order INT NOT NULL - , active BIT NOT NULL DEFAULT 1 -); - - - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Permission_Group' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Permission_Group ( - id_group INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) - , name VARCHAR(250) - , display_order INT NOT NULL - , active BIT NOT NULL DEFAULT 1 -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Permission' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Permission ( - id_permission INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) - , name VARCHAR(250) - , id_permission_group INT NOT NULL - , CONSTRAINT FK_DOG_Permission_id_permission_group - FOREIGN KEY (id_permission_group) - REFERENCES parts.DOG_Permission_Group(id_group) - , id_access_level_required INT NOT NULL - , CONSTRAINT FK_DOG_Permission_id_access_level_required - FOREIGN KEY (id_access_level_required) - REFERENCES parts.DOG_Access_Level(id_access_level) - , display_order INT NOT NULL - , active BIT NOT NULL DEFAULT 1 -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User ( - id_user INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_user_auth0 VARCHAR(200) - , firstname VARCHAR(250) - , surname VARCHAR(250) - , email VARCHAR(254) - , is_email_verified BIT NOT NULL DEFAULT 0 - , is_super_user BIT NOT NULL DEFAULT 0 - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_User_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_User_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_user INT NOT NULL - , CONSTRAINT FK_DOG_User_Audit_id_user - FOREIGN KEY (id_user) - REFERENCES parts.DOG_User(id_user) - , name_field VARCHAR(100) NOT NULL - , value_prev VARCHAR(500) - , value_new VARCHAR(500) - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_User_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User_Temp ( - id_temp INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_user INT NOT NULL - , id_user_auth0 VARCHAR(200) - , firstname VARCHAR(250) - , surname VARCHAR(250) - , email VARCHAR(254) - , is_email_verified BIT - , is_super_user BIT - , active BIT - , guid BINARY(36) NOT NULL -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Role' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Role ( - id_role INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) - , name VARCHAR(250) - , display_order INT NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Role_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Role_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Role_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Role_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_role INT NOT NULL - , CONSTRAINT FK_DOG_Role_Audit_id_role - FOREIGN KEY (id_role) - REFERENCES parts.DOG_Role(id_role) - , name_field VARCHAR(100) NOT NULL - , value_prev VARCHAR(500) - , value_new VARCHAR(500) - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Role_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Role_Permission_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Role_Permission_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_role INT NOT NULL - , CONSTRAINT FK_DOG_Role_Permission_Link_id_role - FOREIGN KEY (id_role) - REFERENCES parts.DOG_Role(id_role) - , id_permission INT NOT NULL - , CONSTRAINT FK_DOG_Role_Permission_Link_id_permission - FOREIGN KEY (id_permission) - REFERENCES parts.DOG_Permission(id_permission) - , id_access_level INT NOT NULL - , CONSTRAINT FK_DOG_Role_Permission_Link_id_access_level - FOREIGN KEY (id_access_level) - REFERENCES parts.DOG_Access_Level(id_access_level) - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Role_Permission_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Role_Permission_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Role_Permission_Link_Audit'; - -CREATE TABLE IF NOT EXISTS parts.DOG_Role_Permission_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Role_Permission_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Role_Permission_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev VARCHAR(500) - , value_new VARCHAR(500) - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Role_Permission_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User_Role_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User_Role_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_user INT NOT NULL - , CONSTRAINT FK_DOG_User_Role_Link_id_user - FOREIGN KEY (id_user) - REFERENCES parts.DOG_User(id_user) - , id_role INT NOT NULL - , CONSTRAINT FK_DOG_User_Role_Link_id_role - FOREIGN KEY (id_role) - REFERENCES parts.DOG_Role(id_role) - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_User_Role_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_User_Role_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_User_Role_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_User_Role_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_User_Role_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_User_Role_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev VARCHAR(500) - , value_new VARCHAR(500) - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_User_Role_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_User_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Calc_User_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Calc_User_Temp ( - guid BINARY(36) NOT NULL - , id_user INT - , id_permission_required INT NOT NULL - , CONSTRAINT FK_DOG_Calc_User_Temp_id_permission_required - FOREIGN KEY (id_permission_required) - REFERENCES parts.DOG_Permission (id_permission) - , priority_access_level_required INT NOT NULL - , is_super_user BIT - , priority_access_level_user INT - , has_access BIT -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Change_Set' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Change_Set ( - id_change_set INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , comment VARCHAR(500) - , updated_last_on DATETIME - , id_user_updated_last_by INT - , CONSTRAINT FK_DOG_Role_id_user_updated_last_by - FOREIGN KEY (id_user_updated_last_by) - REFERENCES parts.DOG_User(id_user) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog ( - id_dog INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , name VARCHAR(250) NOT NULL - , appearance VARCHAR(1000) - , mass_kg DECIMAL(7, 3) - , notes TEXT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Dog_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Dog_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_dog INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Audit_id_dog - FOREIGN KEY (id_dog) - REFERENCES parts.DOG_Dog(id_dog) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_dog INT - , name VARCHAR(250) - , appearance VARCHAR(1000) - , mass_kg DECIMAL(7, 3) - , notes TEXT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Breed' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Breed ( - id_breed INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Breed_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Breed_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Breed_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Breed_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_breed INT NOT NULL - , CONSTRAINT FK_DOG_Breed_Audit_id_breed - FOREIGN KEY (id_breed) - REFERENCES parts.DOG_Breed(id_breed) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Breed_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Breed_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Breed_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_breed INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Breed_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_dog INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Breed_Link_id_dog - FOREIGN KEY (id_dog) - REFERENCES parts.DOG_Dog(id_dog) - , id_breed INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Breed_Link_id_breed - FOREIGN KEY (id_breed) - REFERENCES parts.DOG_Breed(id_breed) - , lineage_ratio DECIMAL(5, 4) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Dog_Breed_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Dog_Breed_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Breed_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Breed_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Dog_Breed_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Breed_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Breed_Link_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Breed_Link_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_link INT - , id_dog INT - , id_breed INT - , lineage_ratio DECIMAL(5, 4) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Understanding_Level' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level ( - id_understanding_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Understanding_Level_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Understanding_Level_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Understanding_Level_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_understanding_level INT NOT NULL - , CONSTRAINT FK_DOG_Understanding_Level_Audit_id_understanding_level - FOREIGN KEY (id_understanding_level) - REFERENCES parts.DOG_Understanding_Level(id_understanding_level) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Understanding_Level_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Understanding_Level_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Understanding_Level_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_understanding_level INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Obedience_Level' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level ( - id_obedience_level INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Obedience_Level_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Obedience_Level_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Obedience_Level_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_obedience_level INT NOT NULL - , CONSTRAINT FK_DOG_Obedience_Level_Audit_id_obedience_level - FOREIGN KEY (id_obedience_level) - REFERENCES parts.DOG_Obedience_Level(id_obedience_level) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Obedience_Level_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Obedience_Level_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Obedience_Level_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_obedience_level INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Category' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category ( - id_command_category INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Command_Category_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Command_Category_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Category_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_command_category INT NOT NULL - , CONSTRAINT FK_DOG_Command_Category_Audit_id_command_category - FOREIGN KEY (id_command_category) - REFERENCES parts.DOG_Command_Category(id_command_category) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Command_Category_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Category_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Category_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_command_category INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command ( - id_command INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_command_category INT NOT NULL - , CONSTRAINT FK_DOG_Command_id_command_category - FOREIGN KEY (id_command_category) - REFERENCES parts.DOG_Command_Category(id_command_category) - , name VARCHAR(250) NOT NULL - , hand_signal_default_description TEXT - , can_have_button BIT NOT NULL DEFAULT 0 - , notes TEXT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Command_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Command_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_command INT NOT NULL - , CONSTRAINT FK_DOG_Command_Audit_id_command - FOREIGN KEY (id_command) - REFERENCES parts.DOG_Command(id_command) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Command_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_command INT - , id_command_category INT - , name VARCHAR(250) - , hand_signal_default_description TEXT - , can_have_button BIT - , notes TEXT - , active BIT - , guid BINARY(36) - - , name_command_category VARCHAR(250) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Command_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_dog INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_id_dog - FOREIGN KEY (id_dog) - REFERENCES parts.DOG_Dog(id_dog) - , id_command INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_id_command - FOREIGN KEY (id_command) - REFERENCES parts.DOG_Command(id_command) - , id_understanding_level INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_id_understanding_level - FOREIGN KEY (id_understanding_level) - REFERENCES parts.DOG_Understanding_Level(id_understanding_level) - , id_obedience_level INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_id_obedience_level - FOREIGN KEY (id_obedience_level) - REFERENCES parts.DOG_Obedience_Level(id_obedience_level) - , hand_signal_description TEXT - , notes TEXT --- , has_button BIT NOT NULL DEFAULT 0 - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Dog_Command_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Dog_Command_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Command_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Dog_Command_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Command_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Command_Link_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Command_Link_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_link INT - , id_dog INT - , id_command INT - , id_understanding_level INT - , id_obedience_level INT - , hand_signal_description TEXT - , notes TEXT --- , has_button BIT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Personal_Best' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best ( - id_personal_best INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_dog_command_link INT NOT NULL - , CONSTRAINT FK_DOG_Personal_Best_id_dog_command_link - FOREIGN KEY (id_dog_command_link) - REFERENCES parts.DOG_Dog_Command_Link(id_link) - , is_achieved_using_button BIT NOT NULL DEFAULT 0 - , situation TEXT NOT NULL - , duration_seconds INT - , quantity INT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Personal_Best_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Personal_Best_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Personal_Best_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_personal_best INT NOT NULL - , CONSTRAINT FK_DOG_Personal_Best_Audit_id_personal_best - FOREIGN KEY (id_personal_best) - REFERENCES parts.DOG_Personal_Best(id_personal_best) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Personal_Best_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Personal_Best_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Personal_Best_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_personal_best INT - , id_dog_command_link INT - , is_achieved_using_button BIT - , situation TEXT - , duration_seconds INT - , quantity INT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location ( - id_location INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Location_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Location_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_location INT NOT NULL - , CONSTRAINT FK_DOG_Location_Audit_id_location - FOREIGN KEY (id_location) - REFERENCES parts.DOG_Location(id_location) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Location_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_location INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_location_parent INT - , CONSTRAINT FK_DOG_Location_Link_id_location_parent - FOREIGN KEY (id_location_parent) - REFERENCES parts.DOG_Location(id_location) - , id_location_child INT - , CONSTRAINT FK_DOG_Location_Link_id_location_child - FOREIGN KEY (id_location_child) - REFERENCES parts.DOG_Location(id_location) - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Location_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Location_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Location_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Location_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Location_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Location_Link_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Location_Link_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_link INT - , id_location_parent INT - , id_location_child INT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Colour' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Colour ( - id_colour INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Colour_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Colour_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Colour_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Colour_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_colour INT NOT NULL - , CONSTRAINT FK_DOG_Colour_Audit_id_colour - FOREIGN KEY (id_colour) - REFERENCES parts.DOG_Colour(id_colour) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Colour_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Colour_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Colour_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_colour INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Shape' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape ( - id_button_shape INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , description TEXT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Button_Shape_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Button_Shape_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Shape_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_button_shape INT NOT NULL - , CONSTRAINT FK_DOG_Button_Shape_Audit_id_button_shape - FOREIGN KEY (id_button_shape) - REFERENCES parts.DOG_Button_Shape(id_button_shape) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Button_Shape_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Shape_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Shape_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_button_shape INT - , code VARCHAR(100) - , name VARCHAR(250) - , description TEXT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Image' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Image ( - id_image INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_file_type INT NOT NULL - , CONSTRAINT FK_DOG_Image_id_file_type - FOREIGN KEY (id_file_type) - REFERENCES parts.CORE_File_Type(id_file_type) - , id_dog INT - , CONSTRAINT FK_DOG_Image_id_dog - FOREIGN KEY (id_dog) - REFERENCES parts.DOG_Dog(id_dog) - , path VARCHAR(1024) NOT NULL - , display_order INT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Image_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Image_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Image_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Image_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_image INT NOT NULL - , CONSTRAINT FK_DOG_Image_Audit_id_image - FOREIGN KEY (id_image) - REFERENCES parts.DOG_Image(id_image) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Image_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Image_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Image_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_image INT - , id_file_type INT NOT NULL - , id_dog INT - , path VARCHAR(1024) NOT NULL - , display_order INT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Icon' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon ( - id_button_icon INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_image INT - , CONSTRAINT FK_DOG_Button_Icon_id_image - FOREIGN KEY (id_image) - REFERENCES parts.DOG_Image(id_image) - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , description TEXT - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Button_Icon_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Button_Icon_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Icon_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_button_icon INT NOT NULL - , CONSTRAINT FK_DOG_Button_Icon_Audit_id_button_icon - FOREIGN KEY (id_button_icon) - REFERENCES parts.DOG_Button_Icon(id_button_icon) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Button_Icon_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Button_Icon_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Button_Icon_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_button_icon INT - , id_image INT - , code VARCHAR(100) - , name VARCHAR(250) - , description TEXT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Button_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_command INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_id_command - FOREIGN KEY (id_command) - REFERENCES parts.DOG_Command(id_command) - , id_button_shape INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_id_button_shape - FOREIGN KEY (id_button_shape) - REFERENCES parts.DOG_Button_Shape(id_button_shape) - , id_button_colour INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_id_button_colour - FOREIGN KEY (id_button_colour) - REFERENCES parts.DOG_Colour(id_colour) - , id_button_icon INT - , CONSTRAINT FK_DOG_Command_Button_Link_id_button_icon - FOREIGN KEY (id_button_icon) - REFERENCES parts.DOG_Button_Icon(id_button_icon) - , id_location INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_id_location - FOREIGN KEY (id_location) - REFERENCES parts.DOG_Location(id_location) - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Command_Button_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Command_Button_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Button_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Command_Button_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Command_Button_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Command_Button_Link_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Command_Button_Link_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_link INT - , id_command INT - , id_button_shape INT - , id_button_colour INT - , id_button_icon INT - , id_location INT - , has_button BIT - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Drive' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Drive ( - id_drive INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , code VARCHAR(100) NOT NULL - , name VARCHAR(250) NOT NULL - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Drive_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Drive_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Drive_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Drive_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_drive INT NOT NULL - , CONSTRAINT FK_DOG_Drive_Audit_id_drive - FOREIGN KEY (id_drive) - REFERENCES parts.DOG_Drive(id_drive) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Drive_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Drive_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Drive_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_drive INT - , code VARCHAR(100) - , name VARCHAR(250) - , active BIT - , guid BINARY(36) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Drive_Link' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link ( - id_link INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_dog INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Drive_Link_id_dog - FOREIGN KEY (id_dog) - REFERENCES parts.DOG_Dog(id_dog) - , id_drive INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Drive_Link_id_drive - FOREIGN KEY (id_drive) - REFERENCES parts.DOG_Drive(id_drive) - , dominance_ratio DECIMAL(5, 4) - , active BIT NOT NULL DEFAULT 1 - , created_on DATETIME - , id_user_created_by INT - , CONSTRAINT FK_DOG_Dog_Drive_Link_id_user_created_by - FOREIGN KEY (id_user_created_by) - REFERENCES parts.DOG_User(id_user) - , id_change_set INT - , CONSTRAINT FK_DOG_Dog_Drive_Link_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Drive_Link_Audit' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link_Audit ( - id_audit INT NOT NULL AUTO_INCREMENT PRIMARY KEY - , id_link INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Drive_Link_Audit_id_link - FOREIGN KEY (id_link) - REFERENCES parts.DOG_Dog_Drive_Link(id_link) - , name_field VARCHAR(100) NOT NULL - , value_prev TEXT - , value_new TEXT - , id_change_set INT NOT NULL - , CONSTRAINT FK_DOG_Dog_Drive_Link_Audit_id_change_set - FOREIGN KEY (id_change_set) - REFERENCES parts.DOG_Dog_Change_Set(id_change_set) -); - -USE parts; - -SELECT CONCAT('WARNING: Table ', TABLE_SCHEMA, '.', TABLE_NAME, ' already exists.') AS msg_warning -FROM INFORMATION_SCHEMA.TABLES -WHERE - TABLE_SCHEMA = 'parts' - AND TABLE_NAME = 'DOG_Dog_Drive_Link_Temp' -; - -CREATE TABLE IF NOT EXISTS parts.DOG_Dog_Drive_Link_Temp ( - id_temp INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_link INT - , id_dog INT - , id_drive INT - , dominance_ratio DECIMAL(5, 4) - , active BIT - , guid BINARY(36) -); -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_User_Change_Set; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_User_Change_Set -BEFORE INSERT ON parts.DOG_User_Change_Set -FOR EACH ROW -BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; -END // -DELIMITER ; - - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_User_Change_Set -BEFORE UPDATE ON parts.DOG_User_Change_Set -FOR EACH ROW -BEGIN - IF NOT EXISTS(SELECT * FROM parts.DOG_User WHERE id_user = NEW.id_user_updated_last_by) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New Updated-Last-By User ID must be provided.'; - END IF; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_User; -DROP TRIGGER IF EXISTS parts.before_update_DOG_User; - - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_User -BEFORE INSERT ON parts.DOG_User -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_User -BEFORE UPDATE ON parts.DOG_User -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_User_Audit ( - id_user, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_user_auth0 - SELECT NEW.id_user, 'id_user_auth0', OLD.id_user_auth0, NEW.id_user_auth0, NEW.id_change_set - WHERE NOT (OLD.id_user_auth0 <=> NEW.id_user_auth0) - UNION - -- Changed firstname - SELECT NEW.id_user, 'firstname', OLD.firstname, NEW.firstname, NEW.id_change_set - WHERE NOT (OLD.firstname <=> NEW.firstname) - UNION - -- Changed surname - SELECT NEW.id_user, 'surname', OLD.surname, NEW.surname, NEW.id_change_set - WHERE NOT (OLD.surname <=> NEW.surname) - UNION - -- Changed email - SELECT NEW.id_user, 'email', OLD.email, NEW.email, NEW.id_change_set - WHERE NOT (OLD.email <=> NEW.email) - UNION - -- Changed is_email_verified - SELECT NEW.id_user, 'is_email_verified', CONVERT(CONVERT(OLD.is_email_verified, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_email_verified, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_email_verified <=> NEW.is_email_verified) - UNION - -- Changed is_super_user - SELECT NEW.id_user, 'is_super_user', CONVERT(CONVERT(OLD.is_super_user, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_super_user, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_super_user <=> NEW.is_super_user) - UNION - -- Changed active - SELECT NEW.id_user, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Role; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Role; - - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Role -BEFORE INSERT ON parts.DOG_Role -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Role -BEFORE UPDATE ON parts.DOG_Role -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Role_Audit ( - id_role, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed code - SELECT NEW.id_role, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_role, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_role, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - UNION - -- Changed display_order - SELECT NEW.id_role, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT OLD.display_order <=> NEW.display_order - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Role_Permission_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Role_Permission_Link; - - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Role_Permission_Link -BEFORE INSERT ON parts.DOG_Role_Permission_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Role_Permission_Link -BEFORE UPDATE ON parts.DOG_Role_Permission_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Role_Permission_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - -- Changed id_permission - SELECT NEW.id_link, 'id_permission', CONVERT(OLD.id_permission, CHAR), CONVERT(NEW.id_permission, CHAR), NEW.id_change_set - WHERE NOT OLD.id_permission <=> NEW.id_permission - UNION - -- Changed id_access_level - SELECT NEW.id_link, 'id_access_level', CONVERT(OLD.id_access_level, CHAR), CONVERT(NEW.id_access_level, CHAR), NEW.id_change_set - WHERE NOT OLD.id_access_level <=> NEW.id_access_level - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_User_Role_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_User_Role_Link; - - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_User_Role_Link -BEFORE INSERT ON parts.DOG_User_Role_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_User_Role_Link -BEFORE UPDATE ON parts.DOG_User_Role_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_User_Role_Link_Audit ( - id_link, - name_field, - value_prev, - value_new, - id_change_set - ) - -- Changed id_user - SELECT NEW.id_link, 'id_user', CONVERT(OLD.id_user, CHAR), CONVERT(NEW.id_user, CHAR), NEW.id_change_set - WHERE NOT OLD.id_user <=> NEW.id_user - UNION - -- Changed id_role - SELECT NEW.id_link, 'id_role', CONVERT(OLD.id_role, CHAR), CONVERT(NEW.id_role, CHAR), NEW.id_change_set - WHERE NOT OLD.id_role <=> NEW.id_role - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ;USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Change_Set; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Dog_Change_Set -BEFORE INSERT ON parts.DOG_Dog_Change_Set -FOR EACH ROW -BEGIN - IF NEW.updated_last_on <=> NULL THEN - SET NEW.updated_last_on = NOW(); - END IF; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Dog -BEFORE INSERT ON parts.DOG_Dog -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Dog -BEFORE UPDATE ON parts.DOG_Dog -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Dog_Audit ( - id_dog - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed name - SELECT NEW.id_dog, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed appearance - SELECT NEW.id_dog, 'appearance', OLD.appearance, NEW.appearance, NEW.id_change_set - WHERE NOT OLD.appearance <=> NEW.appearance - UNION - -- Changed mass_kg - SELECT NEW.id_dog, 'mass_kg', CONVERT(OLD.mass_kg, CHAR), CONVERT(NEW.mass_kg, CHAR), NEW.id_change_set - WHERE NOT (OLD.mass_kg <=> NEW.mass_kg) - UNION - -- Changed active - SELECT NEW.id_dog, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Breed; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Breed; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Breed -BEFORE INSERT ON parts.DOG_Breed -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Breed -BEFORE UPDATE ON parts.DOG_Breed -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Breed_Audit ( - id_breed - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_breed, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_breed, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_breed, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Breed_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Breed_Link; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Dog_Breed_Link -BEFORE INSERT ON parts.DOG_Dog_Breed_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Dog_Breed_Link -BEFORE UPDATE ON parts.DOG_Dog_Breed_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Dog_Breed_Link_Audit ( - id_link - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_dog - SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_dog <=> NEW.id_dog) - UNION - -- Changed id_breed - SELECT NEW.id_link, 'id_breed', CONVERT(OLD.id_breed, CHAR), CONVERT(NEW.id_breed, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_breed <=> NEW.id_breed) - UNION - -- Changed lineage_ratio - SELECT NEW.id_link, 'lineage_ratio', CONVERT(OLD.lineage_ratio, CHAR), CONVERT(NEW.lineage_ratio, CHAR), NEW.id_change_set - WHERE NOT (OLD.lineage_ratio <=> NEW.lineage_ratio) - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Understanding_Level; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Understanding_Level; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Understanding_Level -BEFORE INSERT ON parts.DOG_Understanding_Level -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Understanding_Level -BEFORE UPDATE ON parts.DOG_Understanding_Level -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Understanding_Level_Audit ( - id_understanding_level - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_understanding_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_understanding_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_understanding_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Obedience_Level; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Obedience_Level; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Obedience_Level -BEFORE INSERT ON parts.DOG_Obedience_Level -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Obedience_Level -BEFORE UPDATE ON parts.DOG_Obedience_Level -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Obedience_Level_Audit ( - id_obedience_level - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_obedience_level, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_obedience_level, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_obedience_level, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command_Category; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Command_Category; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Command_Category -BEFORE INSERT ON parts.DOG_Command_Category -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Command_Category -BEFORE UPDATE ON parts.DOG_Command_Category -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Command_Category_Audit ( - id_command_category - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_command_category, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT OLD.code <=> NEW.code - UNION - -- Changed name - SELECT NEW.id_command_category, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed active - SELECT NEW.id_command_category, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Command; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Command -BEFORE INSERT ON parts.DOG_Command -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Command -BEFORE UPDATE ON parts.DOG_Command -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Command_Audit ( - id_command - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_command_category - SELECT NEW.id_command, 'id_command_category', CONVERT(OLD.id_command_category, CHAR), CONVERT(NEW.id_command_category, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_command_category <=> NEW.id_command_category) - UNION - -- Changed name - SELECT NEW.id_command, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT OLD.name <=> NEW.name - UNION - -- Changed hand_signal_default_description - SELECT NEW.id_command, 'hand_signal_default_description', OLD.hand_signal_default_description, NEW.hand_signal_default_description, NEW.id_change_set - WHERE NOT OLD.hand_signal_default_description <=> NEW.hand_signal_default_description - UNION - -- Changed can_have_button - SELECT NEW.id_command, 'can_have_button', CONVERT(CONVERT(OLD.can_have_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.can_have_button, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.can_have_button <=> NEW.can_have_button) - UNION - -- Changed notes - SELECT NEW.id_command, 'notes', OLD.notes, NEW.notes, NEW.id_change_set - WHERE NOT OLD.notes <=> NEW.notes - UNION - -- Changed active - SELECT NEW.id_command, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Command_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Command_Link; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Dog_Command_Link -BEFORE INSERT ON parts.DOG_Dog_Command_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Dog_Command_Link -BEFORE UPDATE ON parts.DOG_Dog_Command_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Dog_Command_Link_Audit ( - id_link - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_dog - SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_dog <=> NEW.id_dog) - UNION - -- Changed id_command - SELECT NEW.id_link, 'id_command', CONVERT(OLD.id_command, CHAR), CONVERT(NEW.id_command, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_command <=> NEW.id_command) - UNION - -- Changed id_understanding_level - SELECT NEW.id_link, 'id_understanding_level', CONVERT(OLD.id_understanding_level, CHAR), CONVERT(NEW.id_understanding_level, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_understanding_level <=> NEW.id_understanding_level) - UNION - -- Changed id_obedience_level - SELECT NEW.id_link, 'id_obedience_level', CONVERT(OLD.id_obedience_level, CHAR), CONVERT(NEW.id_obedience_level, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_obedience_level <=> NEW.id_obedience_level) - UNION - -- Changed hand_signal_description - SELECT NEW.id_link, 'hand_signal_description', OLD.hand_signal_description, NEW.hand_signal_description, NEW.id_change_set - WHERE NOT OLD.hand_signal_description <=> NEW.hand_signal_description - UNION - -- Changed notes - SELECT NEW.id_link, 'notes', OLD.notes, NEW.notes, NEW.id_change_set - WHERE NOT OLD.notes <=> NEW.notes - UNION - /* - -- Changed has_button - SELECT NEW.id_link, 'has_button', CONVERT(CONVERT(OLD.has_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.has_button, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.has_button <=> NEW.has_button) - UNION - */ - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Personal_Best; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Personal_Best; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Personal_Best -BEFORE INSERT ON parts.DOG_Personal_Best -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Personal_Best -BEFORE UPDATE ON parts.DOG_Personal_Best -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Personal_Best_Audit ( - id_personal_best - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_dog_command_link - SELECT NEW.id_personal_best, 'id_dog_command_link', CONVERT(OLD.id_dog_command_link, CHAR), CONVERT(NEW.id_dog_command_link, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_dog_command_link <=> NEW.id_dog_command_link) - UNION - -- Changed is_achieved_using_button - SELECT NEW.id_personal_best, 'is_achieved_using_button', CONVERT(CONVERT(OLD.is_achieved_using_button, SIGNED), CHAR), CONVERT(CONVERT(NEW.is_achieved_using_button, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.is_achieved_using_button <=> NEW.is_achieved_using_button) - UNION - -- Changed situation - SELECT NEW.id_personal_best, 'situation', OLD.situation, NEW.situation, NEW.id_change_set - WHERE NOT OLD.situation <=> NEW.situation - UNION - -- Changed quantity - SELECT NEW.id_personal_best, 'quantity', CONVERT(OLD.quantity, CHAR), CONVERT(NEW.quantity, CHAR), NEW.id_change_set - WHERE NOT (OLD.quantity <=> NEW.quantity) - UNION - -- Changed duration_seconds - SELECT NEW.id_personal_best, 'duration_seconds', CONVERT(OLD.duration_seconds, CHAR), CONVERT(NEW.duration_seconds, CHAR), NEW.id_change_set - WHERE NOT (OLD.duration_seconds <=> NEW.duration_seconds) - UNION - -- Changed active - SELECT NEW.id_personal_best, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Location; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Location; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Location -BEFORE INSERT ON parts.DOG_Location -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Location -BEFORE UPDATE ON parts.DOG_Location -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Location_Audit ( - id_location - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_location, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_location, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed active - SELECT NEW.id_location, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Location_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Location_Link; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Location_Link -BEFORE INSERT ON parts.DOG_Location_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Location_Link -BEFORE UPDATE ON parts.DOG_Location_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Location_Link_Audit ( - id_link - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_location_parent - SELECT NEW.id_link, 'id_location_parent', CONVERT(OLD.id_location_parent, CHAR), CONVERT(NEW.id_location_parent, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_location_parent <=> NEW.id_location_parent) - UNION - -- Changed id_location_child - SELECT NEW.id_link, 'id_location_child', CONVERT(OLD.id_location_child, CHAR), CONVERT(NEW.id_location_child, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_location_child <=> NEW.id_location_child) - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Colour; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Colour; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Colour -BEFORE INSERT ON parts.DOG_Colour -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Colour -BEFORE UPDATE ON parts.DOG_Colour -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Colour_Audit ( - id_colour - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_colour, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_colour, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed active - SELECT NEW.id_colour, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Button_Shape; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Button_Shape; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Button_Shape -BEFORE INSERT ON parts.DOG_Button_Shape -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Button_Shape -BEFORE UPDATE ON parts.DOG_Button_Shape -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Button_Shape_Audit ( - id_button_shape - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_button_shape, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_button_shape, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed description - SELECT NEW.id_button_shape, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - -- Changed active - SELECT NEW.id_button_shape, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Image; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Image; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Image -BEFORE INSERT ON parts.DOG_Image -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Image -BEFORE UPDATE ON parts.DOG_Image -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Image_Audit ( - id_image - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_file_type - SELECT NEW.id_image, 'id_file_type', CONVERT(OLD.id_file_type, CHAR), CONVERT(NEW.id_file_type, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_file_type <=> NEW.id_file_type) - UNION - -- Changed id_dog - SELECT NEW.id_image, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_dog <=> NEW.id_dog) - UNION - -- Changed path - SELECT NEW.id_image, 'path', OLD.path, NEW.path, NEW.id_change_set - WHERE NOT (OLD.path <=> NEW.path) - UNION - -- Changed display_order - SELECT NEW.id_image, 'display_order', CONVERT(OLD.display_order, CHAR), CONVERT(NEW.display_order, CHAR), NEW.id_change_set - WHERE NOT (OLD.display_order <=> NEW.display_order) - UNION - -- Changed active - SELECT NEW.id_image, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Button_Icon; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Button_Icon; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Button_Icon -BEFORE INSERT ON parts.DOG_Button_Icon -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Button_Icon -BEFORE UPDATE ON parts.DOG_Button_Icon -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Button_Icon_Audit ( - id_button_icon - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_image - SELECT NEW.id_button_icon, 'id_image', CONVERT(OLD.id_image, CHAR), CONVERT(NEW.id_image, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_image <=> NEW.id_image) - UNION - -- Changed code - SELECT NEW.id_button_icon, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_button_icon, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed description - SELECT NEW.id_button_icon, 'description', OLD.description, NEW.description, NEW.id_change_set - WHERE NOT (OLD.description <=> NEW.description) - UNION - -- Changed active - SELECT NEW.id_button_icon, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Command_Button_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Command_Button_Link; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Command_Button_Link -BEFORE INSERT ON parts.DOG_Command_Button_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Command_Button_Link -BEFORE UPDATE ON parts.DOG_Command_Button_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Command_Button_Link_Audit ( - id_link - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_command - SELECT NEW.id_link, 'id_command', CONVERT(OLD.id_command, CHAR), CONVERT(NEW.id_command, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_command <=> NEW.id_command) - UNION - -- Changed id_button_shape - SELECT NEW.id_link, 'id_button_shape', CONVERT(OLD.id_button_shape, CHAR), CONVERT(NEW.id_button_shape, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_button_shape <=> NEW.id_button_shape) - UNION - -- Changed id_button_colour - SELECT NEW.id_link, 'id_button_colour', CONVERT(OLD.id_button_colour, CHAR), CONVERT(NEW.id_button_colour, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_button_colour <=> NEW.id_button_colour) - UNION - -- Changed id_button_icon - SELECT NEW.id_link, 'id_button_icon', CONVERT(OLD.id_button_icon, CHAR), CONVERT(NEW.id_button_icon, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_button_icon <=> NEW.id_button_icon) - UNION - -- Changed id_location - SELECT NEW.id_link, 'id_location', CONVERT(OLD.id_location, CHAR), CONVERT(NEW.id_location, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_location <=> NEW.id_location) - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Drive; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Drive; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Drive -BEFORE INSERT ON parts.DOG_Drive -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Drive -BEFORE UPDATE ON parts.DOG_Drive -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Drive_Audit ( - id_drive - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed code - SELECT NEW.id_drive, 'code', OLD.code, NEW.code, NEW.id_change_set - WHERE NOT (OLD.code <=> NEW.code) - UNION - -- Changed name - SELECT NEW.id_drive, 'name', OLD.name, NEW.name, NEW.id_change_set - WHERE NOT (OLD.name <=> NEW.name) - UNION - -- Changed active - SELECT NEW.id_drive, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP TRIGGER IF EXISTS parts.before_insert_DOG_Dog_Drive_Link; -DROP TRIGGER IF EXISTS parts.before_update_DOG_Dog_Drive_Link; - -DELIMITER // -CREATE TRIGGER parts.before_insert_DOG_Dog_Drive_Link -BEFORE INSERT ON parts.DOG_Dog_Drive_Link -FOR EACH ROW -BEGIN - SET NEW.created_on := IFNULL(NEW.created_on, NOW()); -END // -DELIMITER ; - -DELIMITER // -CREATE TRIGGER parts.before_update_DOG_Dog_Drive_Link -BEFORE UPDATE ON parts.DOG_Dog_Drive_Link -FOR EACH ROW -BEGIN - IF OLD.id_change_set <=> NEW.id_change_set THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'New change Set ID must be provided.'; - END IF; - - INSERT INTO parts.DOG_Dog_Drive_Link_Audit ( - id_link - , name_field - , value_prev - , value_new - , id_change_set - ) - -- Changed id_dog - SELECT NEW.id_link, 'id_dog', CONVERT(OLD.id_dog, CHAR), CONVERT(NEW.id_dog, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_dog <=> NEW.id_dog) - UNION - -- Changed id_drive - SELECT NEW.id_link, 'id_drive', CONVERT(OLD.id_drive, CHAR), CONVERT(NEW.id_drive, CHAR), NEW.id_change_set - WHERE NOT (OLD.id_drive <=> NEW.id_drive) - UNION - -- Changed dominance_ratio - SELECT NEW.id_link, 'dominance_ratio', CONVERT(OLD.dominance_ratio, CHAR), CONVERT(NEW.dominance_ratio, CHAR), NEW.id_change_set - WHERE NOT (OLD.dominance_ratio <=> NEW.dominance_ratio) - UNION - -- Changed active - SELECT NEW.id_link, 'active', CONVERT(CONVERT(OLD.active, SIGNED), CHAR), CONVERT(CONVERT(NEW.active, SIGNED), CHAR), NEW.id_change_set - WHERE NOT (OLD.active <=> NEW.active) - ; -END // -DELIMITER ; - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_validate_guid; -DROP PROCEDURE IF EXISTS parts.p_core_validate_guid_test; - -DELIMITER // -CREATE PROCEDURE parts.p_core_validate_guid ( - IN a_guid BINARY(36) -) -BEGIN - IF ISNULL(a_guid) THEN - SIGNAL SQLSTATE '45000' - SET MESSAGE_TEXT = 'GUID is required.' - ; - END IF; -END // -DELIMITER ; - - -DELIMITER // -CREATE PROCEDURE parts.p_core_validate_guid_test () -BEGIN - CALL parts.p_core_validate_guid ( 'nips' ); - CALL parts.p_core_validate_guid ( NULL ); -END // -DELIMITER ; - --- CALL parts.p_core_validate_guid_test(); -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_debug_timing_reporting; - -DELIMITER // -CREATE PROCEDURE parts.p_core_debug_timing_reporting ( - IN a_time_start TIMESTAMP(6) -) -BEGIN -/* - PROCEDURE parts.p_core_debug_timing_reporting - Shared method timing reporting -*/ - DECLARE v_time_end TIMESTAMP(6); - - SET v_time_end := CURRENT_TIMESTAMP(6); - SELECT - a_time_start - , UNIX_TIMESTAMP(a_time_start) - , MICROSECOND(a_time_start) / 1000 - , v_time_end - , UNIX_TIMESTAMP(v_time_end) - , MICROSECOND(v_time_end) / 1000 - , v_time_end - a_time_start AS timestamp_delta - , UNIX_TIMESTAMP(v_time_end - a_time_start) AS UNIX_TIMESTAMP_timestamp_delta - , MICROSECOND(v_time_end - a_time_start) AS MICROSECOND_timestamp_delta - -- , TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H:%i:%s') AS time_difference - , CONCAT( - TIME_FORMAT(TIMEDIFF(v_time_end, a_time_start), '%H hours, %i minutes, %s seconds'), - ', ', - TIMESTAMPDIFF(MICROSECOND, a_time_start, v_time_end) % 1000000 / 1000, ' milliseconds' - ) AS time_difference - ; - -END // -DELIMITER ; - -/* -CALL parts.p_core_debug_timing_reporting ( - CURRENT_TIMESTAMP(6) -); -*/ -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_split; - -DELIMITER // -CREATE PROCEDURE parts.p_core_split ( - IN a_guid BINARY(36) - , IN a_string LONGTEXT - , IN a_separator VARCHAR(1000) - -- IN a_allow_empty BIT - , IN a_debug BIT -) -BEGIN - DECLARE v_has_string BIT; - DECLARE v_has_separator BIT; - DECLARE v_i_separator INT; - DECLARE v_i_start INT; - DECLARE v_i_end INT; - DECLARE v_current_item VARCHAR(4000); - DECLARE v_time_start TIMESTAMP(6); - - SET v_time_start := CURRENT_TIMESTAMP(6); - SET a_string := IFNULL(a_string, ''); - SET a_separator := IFNULL(a_separator, ''); - SET a_debug := IFNULL(a_debug, 0); - - IF a_debug = 1 THEN - SELECT - a_guid - , a_string - , a_separator - , a_debug - ; - END IF; - - CALL parts.p_core_validate_guid ( a_guid ); - - DROP TABLE IF EXISTS tmp_Split_Split; - - CREATE TEMPORARY TABLE tmp_Split_Split ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - substring VARCHAR(4000) NOT NULL - ); - - SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END; - SET v_has_separator = CASE WHEN a_separator = '' THEN 0 ELSE 1 END; - - IF v_has_string THEN - - SET v_i_start = 1; - SET v_i_end = LOCATE(',', a_string); - - WHILE v_i_end > 0 DO - SET v_current_item = SUBSTRING(a_string, v_i_start, v_i_end - v_i_start); - INSERT INTO tmp_Split_Split (substring) VALUES (v_current_item); - - SET v_i_start = v_i_end + 1; - SET v_i_end = LOCATE(',', a_string, v_i_start); - END WHILE; - - SET v_current_item = SUBSTRING(a_string, v_i_start); - INSERT INTO tmp_Split_Split (substring) VALUES (TRIM(v_current_item)); - END IF; - - IF EXISTS (SELECT * FROM tmp_Split_Split LIMIT 1) THEN - START TRANSACTION; - INSERT INTO parts.CORE_Split_Temp ( - guid - , display_order - , substring - ) - SELECT - a_guid - , display_order - , substring - FROM tmp_Split_Split - ; - COMMIT; - END IF; - - DROP TABLE IF EXISTS tmp_Split_Split; - - IF a_debug = 1 THEN - CALL parts.p_core_debug_timing_reporting ( v_time_start ); - END IF; -END // -DELIMITER ; - - -/* -CALL parts.p_core_split ( - 'nips' - , 'noods, cheese ' -- a_string - , ',' -- a_separator - -- '0', -- a_allow_empty - , 1 -); - -SELECT * -FROM parts.CORE_Split_Temp -WHERE GUID = 'nips'; - -CALL parts.p_core_clear_split_temp( 'nips' ); -*/ - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_clear_split; - - -DELIMITER // -CREATE PROCEDURE parts.p_core_clear_split ( - IN a_guid BINARY(36) -) -BEGIN - CALL parts.p_core_validate_guid( a_guid ); - - START TRANSACTION; - - -- DROP TABLE IF EXISTS - DELETE FROM parts.CORE_Split_Temp - WHERE GUID = a_guid - ; - - COMMIT; -END // -DELIMITER ; - -/* - -CALL parts.p_core_clear_split ( 'nips' ); - - -*/ - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_split_key_value_pair_csv; - -DELIMITER // -CREATE PROCEDURE parts.p_core_split_key_value_pair_csv ( - IN a_guid BINARY(36) - , IN a_string LONGTEXT - , IN a_debug BIT -) -BEGIN - DECLARE v_has_string BIT; - DECLARE v_current_item VARCHAR(4000); - DECLARE v_time_start TIMESTAMP(6); - - SET v_time_start := CURRENT_TIMESTAMP(6); - SET a_string := IFNULL(a_string, ''); - SET a_debug := IFNULL(a_debug, 0); - - SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END; - - IF a_debug = 1 THEN - SELECT - a_guid - , a_string - , a_debug - ; - END IF; - - CALL parts.p_core_validate_guid ( a_guid ); - - DROP TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv; - DROP TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv; - - CREATE TEMPORARY TABLE tmp_Input_Split_Key_Value_Pair_Csv ( - input_string TEXT - ); - - CREATE TEMPORARY TABLE tmp_Split_Split_Key_Value_Pair_Csv ( - id INT AUTO_INCREMENT PRIMARY KEY - , key_column VARCHAR(4000) - , value_column VARCHAR(4000) - ); - - INSERT INTO tmp_Input_Split_Key_Value_Pair_Csv ( - input_string - ) - VALUES ( - a_string - ); - - INSERT INTO tmp_Split_Split_Key_Value_Pair_Csv (key_column, value_column) - SELECT - SUBSTRING_INDEX(SUBSTRING_INDEX(t.pair, ':', 1), ',', -1) AS key_column, - SUBSTRING_INDEX(t.pair, ':', -1) AS value_column - FROM ( - SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(input_string, ',', n), ',', -1) pair - FROM temp_input - CROSS JOIN ( - SELECT a.N + b.N * 10 + 1 n - FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a - CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b - ORDER BY n - ) numbers - WHERE n <= 1 + (LENGTH(input_string) - LENGTH(REPLACE(input_string, ',', ''))) - ) t; - - IF EXISTS (SELECT * FROM tmp_Split_Split_Key_Value_Pair_Csv LIMIT 1) THEN - START TRANSACTION; - INSERT INTO parts.CORE_Split_Key_Value_Pair_Csv_Temp ( - guid - , id - , key_column - , value_column - ) - SELECT - a_guid - , id - , key_column - , value_column - FROM tmp_Split_Split_Key_Value_Pair_Csv - ; - COMMIT; - END IF; - - DROP TEMPORARY TABLE IF EXISTS tmp_Input_Split_Key_Value_Pair_Csv; - DROP TEMPORARY TABLE IF EXISTS tmp_Split_Split_Key_Value_Pair_Csv; - - IF a_debug = 1 THEN - CALL parts.p_core_debug_timing_reporting ( v_time_start ); - END IF; -END // -DELIMITER ; - - -/* -CALL parts.p_core_split_key_value_pair_csv ( - 'nipsnipsnipsnipsnipsnipsnipsnipsnips' - , '1:100,2:200,3:300,4:400' -- a_string - , 1 -); - -SELECT * -FROM parts.CORE_Split_key_value_pair_csv_Temp -WHERE GUID = 'nipsnipsnipsnipsnipsnipsnipsnipsnips'; - -CALL parts.p_core_clear_split_key_value_pair_csv_temp( 'nipsnipsnipsnipsnipsnipsnipsnipsnips' ); -*/ - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_core_clear_split_key_value_pair_csv; - - -DELIMITER // -CREATE PROCEDURE parts.p_core_clear_split_key_value_pair_csv ( - IN a_guid BINARY(36) -) -BEGIN - CALL parts.p_core_validate_guid( a_guid ); - - START TRANSACTION; - - -- DROP TABLE IF EXISTS - DELETE FROM parts.CORE_Split_Key_Value_Pair_Csv_Temp - WHERE GUID = a_guid - ; - - COMMIT; -END // -DELIMITER ; - -/* - -CALL parts.p_core_clear_split_key_value_pair_csv ( 'nips' ); - - -*/ - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_DOG_user_eval; -DROP PROCEDURE IF EXISTS parts.p_DOG_calc_user; - -DELIMITER // -CREATE PROCEDURE parts.p_DOG_calc_user ( - IN a_guid BINARY(36) - , IN a_ids_user TEXT - , IN a_get_inactive_user BIT - , IN a_ids_permission VARCHAR(4000) - , IN a_debug BIT -) -BEGIN - DECLARE v_has_filter_permission BIT; - DECLARE v_has_filter_user BIT; - DECLARE v_id_permission INT; - DECLARE v_time_start TIMESTAMP(6); - DECLARE v_ids_row_delete VARCHAR(500); - DECLARE v_code_type_error_bad_data VARCHAR(200); - DECLARE v_id_type_error_bad_data INT; - DECLARE v_code_error_permission VARCHAR(200); - DECLARE v_id_permission_required INT; - DECLARE v_priority_access_level_required INT; - DECLARE v_priority_access_level_view INT; - - SET v_time_start := CURRENT_TIMESTAMP(6); - SET v_code_type_error_bad_data := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE code = 'BAD_DATA'); - SET v_id_type_error_bad_data := (SELECT id_type FROM parts.CORE_Msg_Error_Type WHERE code = v_code_type_error_bad_data); - SET v_code_error_permission := (SELECT code FROM parts.CORE_Msg_Error_Type WHERE id_type = 2); - SET v_priority_access_level_view := (SELECT priority FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1); - - CALL parts.p_core_validate_guid ( a_guid ); - SET a_ids_user := TRIM(IFNULL(a_ids_user, '')); - SET a_get_inactive_user := IFNULL(a_get_inactive_user, 0); - SET a_ids_permission := TRIM(IFNULL(a_ids_permission, '')); - SET a_debug := IFNULL(a_debug, 0); - - IF a_debug = 1 THEN - SELECT - a_guid - , a_ids_user - , a_get_inactive_user - , a_ids_permission - , a_debug - ; - END IF; - - DROP TABLE IF EXISTS tmp_Calc_User; - DROP TABLE IF EXISTS tmp_User_Calc_User; - DROP TABLE IF EXISTS tmp_Split_Calc_User; - - CREATE TEMPORARY TABLE tmp_Calc_User ( - id_row INT PRIMARY KEY AUTO_INCREMENT NOT NULL - , id_user INT NULL - , id_permission_required INT NOT NULL - , priority_access_level_required INT NOT NULL - , is_super_user BIT NULL - , priority_access_level_user INT NULL - , has_access BIT - ); - - CREATE TEMPORARY TABLE tmp_User_Calc_User ( - id_user INT NOT NULL - , is_super_user BIT NOT NULL - -- , id_access_level INT - , priority_access_level INT NOT NULL - ); - - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error_Calc_User ( - display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_type INT NULL - , code VARCHAR(100) NOT NULL - , msg VARCHAR(4000) NOT NULL - ); - - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Split_Calc_User ( - substring VARCHAR(4000) NOT NULL - , as_int INT NULL - ); - DELETE FROM tmp_Split_Calc_User; - - SET v_has_filter_user = CASE WHEN a_ids_user = '' THEN 0 ELSE 1 END; - SET a_ids_permission = REPLACE(a_ids_permission, '|', ','); - SET v_has_filter_permission = CASE WHEN a_ids_permission = '' THEN 0 ELSE 1 END; - -- SET v_id_access_level_view = (SELECT id_access_level FROM parts.DOG_Access_Level WHERE code = 'VIEW' LIMIT 1); - - - -- Permission IDs - IF NOT v_has_filter_permission THEN - INSERT INTO tmp_Msg_Error_Calc_User ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , 'Permission ID required.' - ; - ELSE - CALL parts.p_core_split(a_guid, a_ids_permission, ',', a_debug); - - INSERT INTO tmp_Split_Calc_User ( - substring - , as_int - ) - SELECT - substring - , CONVERT(substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp - WHERE - GUID = a_guid - AND NOT ISNULL(substring) - AND substring != '' - ; - - CALL parts.p_core_clear_split( a_guid ); - - -- Invalid or inactive - IF EXISTS ( - SELECT PERM.id_permission - FROM tmp_Split_Calc_User t_S - LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission - WHERE - ISNULL(t_S.as_int) - OR ISNULL(PERM.id_permission) - OR PERM.active = 0 - ) THEN - INSERT INTO tmp_Msg_Error_Calc_User ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('Invalid or inactive permission IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) - FROM tmp_Split_Calc_User t_S - LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission - WHERE - ISNULL(t_S.as_int) - OR ISNULL(PERM.id_permission) - OR PERM.active = 0 - ; - ELSE - SELECT - PERM.id_permission - , PERM.id_access_level_required - INTO - v_id_permission_required - , v_priority_access_level_required - FROM tmp_Split_Calc_User t_S - LEFT JOIN parts.DOG_Permission PERM ON t_S.as_int = PERM.id_permission - INNER JOIN parts.DOG_Access_Level AL ON PERM.id_access_level_required = AL.id_access_level - ORDER BY AL.priority ASC - LIMIT 1 - ; - - IF ISNULL(v_id_permission_required) THEN - INSERT INTO tmp_Msg_Error_Calc_User ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , 'Valid Permission ID required.' - ; - END IF; - END IF; - END IF; - DELETE FROM tmp_Split_Calc_User; - - -- Users - CALL parts.p_core_split(a_guid, a_ids_user, ',', a_debug); - - INSERT INTO tmp_Split_Calc_User ( - substring - , as_int - ) - SELECT - substring - , CONVERT(substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp - WHERE - GUID = a_guid - AND NOT ISNULL(substring) - AND substring != '' - ; - - CALL parts.p_core_clear_split( a_guid ); - - -- Invalid or inactive - IF EXISTS (SELECT U.id_user FROM tmp_Split_Calc_User t_S LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user WHERE ISNULL(t_S.as_int) OR ISNULL(U.id_user) OR (a_get_inactive_user = 0 AND U.active = 0)) THEN - INSERT INTO tmp_Msg_Error_Calc_User ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('Invalid or inactive user IDs: ', IFNULL(GROUP_CONCAT(t_S.substring SEPARATOR ', '), 'NULL')) - FROM tmp_Split_Calc_User t_S - LEFT JOIN parts.DOG_User U ON t_S.as_int = U.id_user - WHERE - ISNULL(t_S.as_int) - OR ISNULL(U.id_user) - OR ( - a_get_inactive_user = 0 - AND U.active = 0 - ) - ; - ELSE - IF NOT EXISTS (SELECT * FROM tmp_Split_Calc_User) THEN - INSERT INTO tmp_Split_Calc_User (substring, as_int) - VALUES ( '', NULL ); - END IF; - - IF a_debug = 1 THEN - SELECT * - FROM tmp_Split_Calc_User; - END IF; - - INSERT INTO tmp_User_Calc_User ( - id_user - , is_super_user - , priority_access_level - ) - SELECT - U.id_user - , IFNULL(U.is_super_user, 0) AS is_super_user - , IFNULL(MIN(AL_U.priority), v_priority_access_level_view) AS priority_access_level - FROM tmp_Split_Calc_User t_S - INNER JOIN parts.DOG_User U ON t_S.as_int = U.id_user - LEFT JOIN parts.DOG_User_Role_Link URL - ON U.id_user = URL.id_user - AND URL.active - LEFT JOIN parts.DOG_Role_Permission_Link RPL - ON URL.id_role = RPL.id_role - AND RPL.active - LEFT JOIN parts.DOG_Access_Level AL_U - ON RPL.id_access_level = AL_U.id_access_level - AND AL_U.active - GROUP BY U.id_user - ; - - INSERT INTO tmp_Calc_User ( - id_user - , id_permission_required - , priority_access_level_required - , priority_access_level_user - , is_super_user - ) - SELECT - t_UCU.id_user - , v_id_permission_required - , v_priority_access_level_required - , t_UCU.priority_access_level AS priority_access_level_user - , t_UCU.is_super_user AS is_super_user - FROM tmp_User_Calc_User t_UCU - ; - END IF; - DELETE FROM tmp_Split_Calc_User; - - - -- Calculated fields - UPDATE tmp_Calc_User t_CU - SET - t_CU.has_access = ( - (t_CU.is_super_user = 1) - OR (t_CU.priority_access_level_user <= t_CU.priority_access_level_required) - ) - ; - - -- Export data to staging table - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error_Calc_User) THEN - START TRANSACTION; - INSERT INTO parts.DOG_Calc_User_Temp ( - guid - , id_user - , id_permission_required - , priority_access_level_required - , priority_access_level_user - , is_super_user - , has_access - ) - SELECT - a_guid - , t_CU.id_user - , t_CU.id_permission_required - , t_CU.priority_access_level_required - , t_CU.priority_access_level_user - , t_CU.is_super_user - , t_CU.has_access - FROM tmp_Calc_User t_CU - ; - COMMIT; - END IF; - - IF a_debug = 1 THEN - SELECT * FROM tmp_Msg_Error_Calc_User; - SELECT * FROM tmp_Calc_User; - SELECT * FROM tmp_User_Calc_User; - SELECT * FROM parts.DOG_Calc_User_Temp WHERE GUID = a_guid; - CALL parts.p_DOG_clear_calc_user ( a_guid, a_debug ); - END IF; - - -- Clean up - DROP TABLE IF EXISTS tmp_Calc_User; - DROP TABLE IF EXISTS tmp_User_Calc_User; - DELETE FROM tmp_Split_Calc_User; - - IF a_debug = 1 THEN - CALL parts.p_debug_timing_reporting( v_time_start ); - END IF; -END // -DELIMITER ; - -/* - -CALL parts.p_DOG_calc_user ( - 'chips ' -- a_guid - , 1 -- a_ids_user - , 0 -- a_get_inactive_user - , '2' -- a_ids_permission - , '1' -- a_ids_access_level - , 0 -- a_debug -); -CALL parts.p_DOG_calc_user ( - 'chips ' -- a_guid - , 1 -- a_ids_user - , 0 -- a_get_inactive_user - , '2' -- a_ids_permission - , '1' -- a_ids_access_level - , 0 -- a_debug -); -*/ -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_DOG_clear_calc_user; - -DELIMITER // -CREATE PROCEDURE parts.p_DOG_clear_calc_user ( - IN a_guid BINARY(36) - , IN a_debug BIT -) -BEGIN - DECLARE v_time_start TIMESTAMP(6); - SET v_time_start := CURRENT_TIMESTAMP(6); - - CALL parts.p_core_validate_guid ( a_guid ); - - START TRANSACTION; - - DELETE FROM parts.DOG_Calc_User_Temp - WHERE GUID = a_guid - ; - - COMMIT; - - IF a_debug = 1 THEN - CALL parts.p_debug_timing_reporting( v_time_start ); - END IF; -END // -DELIMITER ; - -/* - -CALL parts.p_DOG_clear_calc_user ( - 'chips ' -- a_guid - , 1 -- debug -); - -SELECT * -FROM parts.DOG_Calc_User_Temp -WHERE GUID = 'chips ' -; - -*/ - -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_DOG_save_command; - -DELIMITER // -CREATE PROCEDURE parts.p_DOG_save_command ( - IN a_comment VARCHAR(500), - IN a_guid BINARY(36), - IN a_id_user INT, - IN a_debug BIT -) -BEGIN - DECLARE v_code_type_error_bad_data VARCHAR(100); - DECLARE v_id_type_error_bad_data INT; - DECLARE v_id_permission_dog_admin INT; - DECLARE v_id_permission_dog_new INT; - DECLARE v_id_change_set INT; - DECLARE v_time_start TIMESTAMP(6); - DECLARE v_can_admin BIT; - DECLARE v_can_create BIT; - - DECLARE exit handler for SQLEXCEPTION - BEGIN - GET DIAGNOSTICS CONDITION 1 - @sqlstate = RETURNED_SQLSTATE - , @errno = MYSQL_ERRNO - , @text = MESSAGE_TEXT - ; - - ROLLBACK; - - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_type INT NULL - , code VARCHAR(100) - , msg VARCHAR(4000) NOT NULL - ); - - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - SELECT - MET.id_type - , @errno - , @text - FROM parts.CORE_Msg_Error_Type MET - WHERE MET.code = 'MYSQL_ERROR' - ; - - SELECT - t_ERROR.id_error - , t_ERROR.id_type - , t_ERROR.code - , ERROR_TYPE.name - , ERROR_TYPE.description - , ERROR_TYPE.is_breaking_error - , ERROR_TYPE.background_colour - , ERROR_TYPE.text_colour - , t_ERROR.msg - FROM tmp_Msg_Error t_ERROR - INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type - ; - - DROP TABLE IF EXISTS tmp_Msg_Error; - END; - - SET v_time_start := CURRENT_TIMESTAMP(6); - SET v_code_type_error_bad_data := 'BAD_DATA'; - SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1); - SET v_id_permission_dog_admin := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_ADMIN' LIMIT 1); - SET v_id_permission_dog_new := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_CREATE' LIMIT 1); - - CALL parts.p_core_validate_guid ( a_guid ); - - DROP TABLE IF EXISTS tmp_Command; - - CREATE TEMPORARY TABLE tmp_Command ( - id_command INT - , id_command_category INT - , name VARCHAR(250) - , hand_signal_default_description TEXT - , can_have_button BIT - , notes TEXT - , active BIT - , is_new BIT - , name_error VARCHAR(250) - - , name_command_category VARCHAR(250) - ); - - CREATE TEMPORARY TABLE IF NOT EXISTS tmp_Msg_Error ( - id_error INT NOT NULL PRIMARY KEY AUTO_INCREMENT - , id_type INT NULL - , code VARCHAR(100) - , msg VARCHAR(4000) NOT NULL - ); - - - -- Get data from Temp table - INSERT INTO tmp_Command ( - id_command - , id_command_category - , name - , hand_signal_default_description - , can_have_button - , notes - , active - , is_new - - , name_command_category - ) - SELECT - COMMAND_T.id_command AS id_command - , COMMAND_T.id_command_category AS id_command_category - , COALESCE(COMMAND_T.name, COMMAND.name) AS name - , COALESCE(COMMAND_T.hand_signal_default_description, COMMAND.hand_signal_default_description) AS hand_signal_default_description - , COALESCE(COMMAND_T.can_have_button, COMMAND.can_have_button) AS can_have_button - , COALESCE(COMMAND_T.notes, COMMAND.notes) AS notes - , COALESCE(COMMAND_T.active, COMMAND.active, 1) AS active - , CASE WHEN IFNULL(COMMAND_T.id_command, 0) < 1 THEN 1 ELSE 0 END AS is_new - - , COMMAND_T.name_command_category AS name_command_category - FROM parts.DOG_Command_Temp COMMAND_T - LEFT JOIN parts.DOG_Command COMMAND ON COMMAND_T.id_command = COMMAND.id_command - WHERE COMMAND_T.guid = a_guid - ; - - UPDATE tmp_Command t_COMMAND - SET name_error = COALESCE(t_COMMAND.name, t_COMMAND.notes, t_COMMAND.name_command_category, '(No Command)') - ; - - -- Find missing id_command_category by name_command_category - UPDATE tmp_Command t_COMMAND - INNER JOIN parts.DOG_Command_Category COMMAND_CATEGORY ON t_COMMAND.name_command_category = COMMAND_CATEGORY.name - SET t_COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category - WHERE t_COMMAND.id_command_category IS NULL - ; - - IF EXISTS ( - SELECT * - FROM tmp_Command t_COMMAND - WHERE ISNULL(t_COMMAND.id_command_category) - LIMIT 1 - ) THEN - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('The following Command(s) do not have a Category: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg - FROM tmp_Command t_COMMAND - WHERE t_COMMAND.id_command_category IS NULL - ; - END IF; - - -- Validation - -- Missing mandatory fields - -- id_command_category - IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.id_command_category) LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('The following Command(s) do not have a Category: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg - FROM tmp_Command t_COMMAND - WHERE ISNULL(t_COMMAND.id_command_category) - ; - END IF; - -- name - IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.name) LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('The following Command(s) do not have a Name: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg - FROM tmp_Command t_COMMAND - WHERE ISNULL(t_COMMAND.name) - ; - END IF; - -- can_have_button - IF EXISTS (SELECT * FROM tmp_Command t_COMMAND WHERE ISNULL(t_COMMAND.can_have_button) LIMIT 1) THEN - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - SELECT - v_id_type_error_bad_data - , v_code_type_error_bad_data - , CONCAT('The following Command(s) do not have a Can-Have-Button: ', GROUP_CONCAT(t_COMMAND.name_error SEPARATOR ', ')) AS msg - FROM tmp_Command t_COMMAND - WHERE ISNULL(t_COMMAND.can_have_button) - ; - END IF; - - -- Permissions - IF a_debug = 1 THEN - SELECT - a_guid - , a_id_user - , FALSE -- a_get_inactive_user - , v_id_permission_dog_admin - , v_id_permission_dog_new - , 0 -- a_debug - ; - END IF; - - CALL parts.p_DOG_calc_user( - a_guid - , a_id_user - , FALSE -- a_get_inactive_user - , v_id_permission_dog_admin - , 0 -- a_debug - ); - - SELECT - IFNULL(CU_T.has_access, 0) - INTO - v_can_admin - FROM parts.DOG_Calc_User_Temp CU_T - WHERE CU_T.GUID = a_guid - LIMIT 1 - ; - - CALL parts.p_DOG_clear_calc_user( - a_guid - , 0 -- a_debug - ); - - CALL parts.p_DOG_calc_user( - a_guid - , a_id_user - , FALSE -- a_get_inactive_user - , v_id_permission_dog_new - , 0 -- a_debug - ); - - SELECT - IFNULL(CU_T.has_access, 0) - INTO - v_can_create - FROM parts.DOG_Calc_User_Temp CU_T - WHERE CU_T.GUID = a_guid - LIMIT 1 - ; - - CALL parts.p_DOG_clear_calc_user( - a_guid - , 0 -- a_debug - ); - - IF (v_can_create = 0 AND EXISTS(SELECT * FROM tmp_Command WHERE is_new = 1)) THEN - DELETE t_ME - FROM tmp_Msg_Error t_ME - WHERE t_ME.id_type <> v_id_type_error_no_permission - ; - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - VALUES ( - v_id_type_error_no_permission - , v_code_type_error_no_permission - , 'You do not have permission to create new Commands.' - ) - ; - END IF; - - IF (v_can_admin = 0 AND EXISTS(SELECT * FROM tmp_Command WHERE is_new = 0)) THEN - DELETE t_ME - FROM tmp_Msg_Error t_ME - WHERE t_ME.id_type <> v_id_type_error_no_permission - ; - INSERT INTO tmp_Msg_Error ( - id_type - , code - , msg - ) - VALUES ( - v_id_type_error_no_permission - , v_code_type_error_no_permission - , 'You do not have permission to admin Commands.' - ) - ; - END IF; - - IF EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN - IF a_debug = 1 THEN - SELECT * from tmp_Command; - END IF; - - DELETE FROM tmp_Command; - END IF; - - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN - START TRANSACTION; - - INSERT INTO parts.DOG_Dog_Change_Set ( - comment - , id_user_updated_last_by - , updated_last_on - ) - VALUES ( - a_comment - , a_id_user - , v_time_start - ) - ; - - SET v_id_change_set := LAST_INSERT_ID(); - - UPDATE parts.DOG_Command COMMAND - INNER JOIN tmp_Command t_COMMAND - ON COMMAND.id_command = t_COMMAND.id_command - AND t_COMMAND.is_new = 0 - SET - COMMAND.id_command_category = t_COMMAND.id_command_category - , COMMAND.name = t_COMMAND.name - , COMMAND.hand_signal_default_description = t_COMMAND.hand_signal_default_description - , COMMAND.can_have_button = t_COMMAND.can_have_button - , COMMAND.notes = t_COMMAND.notes - , COMMAND.active = t_COMMAND.active - , COMMAND.id_change_set = v_id_change_set - ; - - INSERT INTO parts.DOG_Command ( - id_command_category - , name - , hand_signal_default_description - , can_have_button - , notes - , active - , id_user_created_by - , created_on - ) - SELECT - t_COMMAND.id_command_category AS id_command_category - , t_COMMAND.name AS name - , t_COMMAND.hand_signal_default_description AS hand_signal_default_description - , t_COMMAND.can_have_button AS can_have_button - , t_COMMAND.notes AS notes - , t_COMMAND.active AS active - , a_id_user AS created_by - , v_time_start AS created_on - FROM tmp_Command t_COMMAND - WHERE - t_COMMAND.is_new = 1 - AND t_COMMAND.active = 1 - ; - - COMMIT; - END IF; - - START TRANSACTION; - - DELETE FROM parts.DOG_Command_Temp - WHERE GUID = a_guid - ; - - COMMIT; - - -- Errors - SELECT - t_ERROR.id_error - , t_ERROR.id_type - , t_ERROR.code - , ERROR_TYPE.name - , ERROR_TYPE.description - , ERROR_TYPE.is_breaking_error - , ERROR_TYPE.background_colour - , ERROR_TYPE.text_colour - , t_ERROR.msg - FROM tmp_Msg_Error t_ERROR - INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type - ; - - IF a_debug = 1 THEN - SELECT * from tmp_Command; - END IF; - - DROP TEMPORARY TABLE tmp_Command; - DROP TEMPORARY TABLE tmp_Msg_Error; - - IF a_debug = 1 THEN - CALL parts.p_core_debug_timing_reporting ( v_time_start ); - END IF; -END // -DELIMITER ; - - - -/* - - -select - * - -- COUNT(*) --- delete -from parts.DOG_Command_Temp -; -select COUNT(*) -from parts.DOG_Command_Temp -; -select - * - -- COUNT(*) --- delete -from parts.DOG_Command -; -select COUNT(*) -from parts.DOG_Command -; - - -CALL parts.p_DOG_save_command ( - 'nipples' - , (SELECT GUID FROM parts.DOG_Command_Temp COMMAND_TEMP ORDER BY id_temp DESC LIMIT 1) - , 1 - , 1 -); - - -select - * - -- COUNT(*) --- delete -from parts.DOG_Command_Temp -; -select COUNT(*) -from parts.DOG_Command_Temp -; -select - * - -- COUNT(*) --- delete -from parts.DOG_Command -; -select COUNT(*) -from parts.DOG_Command -; - -*/ -USE parts; - -DROP PROCEDURE IF EXISTS parts.p_DOG_test_save_command; - - -DELIMITER // -CREATE PROCEDURE parts.p_DOG_test_save_command () -BEGIN - - DECLARE v_guid BINARY(36); - DECLARE v_time_start TIMESTAMP(6); - - SET v_time_start := CURRENT_TIMESTAMP(6); - SET v_guid := 'nipple_ripple_chipple_spittle_pickle'; -- 123456789012345678901234567890123456 - - SELECT 'Start of Test'; - - SELECT * - FROM parts.DOG_Command - ; - SELECT * - FROM parts.DOG_Command_Temp - ; - - START TRANSACTION; - - INSERT INTO parts.DOG_Command_Temp ( - id_command - , email - , name_contact - , name_company - , message - , guid - , active - ) - /* - VALUES ( - -1 -- id_command - , 'edward.middletonsmith@gmail.com' -- email - , 'Teddy' -- name_contact - , 'PARTS Ltd' -- name_company - , 'Sa dude' -- message - , v_guid - ) - */ - VALUES ( - -1 -- id_command - , 'edward.middletonsmith@gmail.com' -- email - , 'Teddy' -- name_contact - , 'PARTS Ltd' -- name_company - , 'hegrodorf is good' -- message - , v_guid - , 1 -- active - ) - ; - - COMMIT; - - SELECT * - FROM parts.DOG_Command_Temp - -- WHERE GUID = v_guid - ; - - CALL parts.p_DOG_save_command ( - 'Test save Command' -- comment - , v_guid -- guid - , 3 -- 1 -- id_user - , 1 -- debug - ); - - SELECT * - FROM parts.DOG_Command - ; - SELECT * - FROM parts.DOG_Command_Temp - ; - - CALL parts.p_debug_timing_reporting ( v_time_start ); -END // -DELIMITER ; - - -/* -SELECT 'Before Test'; -SELECT * -FROM parts.DOG_Command -; -SELECT * -FROM parts.DOG_Command_Temp -; - - -CALL parts.p_DOG_test_save_command (); - -SELECT 'After Test'; -SELECT * -FROM parts.DOG_Command -; -SELECT * -FROM parts.DOG_Command_Temp -; - -DELETE FROM parts.DOG_Command_Temp; - -DROP TABLE IF EXISTS tmp_Msg_Error; - - -*/ -USE parts; +USE demo; -DROP PROCEDURE IF EXISTS parts.p_DOG_get_many_dog_command; +DROP PROCEDURE IF EXISTS demo.p_DOG_get_many_dog_command; DELIMITER // -CREATE PROCEDURE parts.p_DOG_get_many_dog_command ( +CREATE PROCEDURE demo.p_DOG_get_many_dog_command ( IN a_id_user INT , IN a_get_all_dog BIT , IN a_get_inactive_dog BIT @@ -4405,7 +61,7 @@ BEGIN MET.id_type , @errno , @text - FROM parts.CORE_Msg_Error_Type MET + FROM demo.CORE_Msg_Error_Type MET WHERE MET.code = 'MYSQL_ERROR' ; @@ -4420,7 +76,7 @@ BEGIN , ERROR_TYPE.text_colour , t_ERROR.msg FROM tmp_Msg_Error t_ERROR - INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type + INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type ; DROP TABLE IF EXISTS tmp_Msg_Error; @@ -4430,9 +86,9 @@ BEGIN SET v_guid := UUID(); SET v_code_type_error_bad_data := 'BAD_DATA'; SET v_code_type_error_no_permission := 'NO_PERMISSION'; - SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1); - SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM parts.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1); - SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM parts.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1); + SET v_id_type_error_bad_data := (SELECT ERROR_TYPE.id_type FROM demo.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_bad_data LIMIT 1); + SET v_id_type_error_no_permission := (SELECT ERROR_TYPE.id_type FROM demo.CORE_Msg_Error_Type ERROR_TYPE WHERE ERROR_TYPE.code = v_code_type_error_no_permission LIMIT 1); + SET v_id_permission_dog_view := (SELECT PERMISSION.id_permission FROM demo.DOG_Permission PERMISSION WHERE PERMISSION.code = 'DOG_VIEW' LIMIT 1); SET a_id_user := IFNULL(a_id_user, 0); SET a_get_all_dog := IFNULL(a_get_all_dog, 0); @@ -4490,6 +146,9 @@ BEGIN CREATE TEMPORARY TABLE tmp_Command ( id_command INT NOT NULL + , id_command_category INT NOT NULL + , name_command_category VARCHAR(250) + , has_button -- , code VARCHAR(100) , name VARCHAR(250) ); @@ -4519,7 +178,7 @@ BEGIN ); DELETE FROM tmp_Split; - CALL parts.p_core_validate_guid ( v_guid ); + CALL demo.p_core_validate_guid ( v_guid ); SET v_has_filter_dog = CASE WHEN a_ids_dog = '' THEN 0 ELSE 1 END; SET v_has_filter_command = CASE WHEN a_ids_command = '' THEN 0 ELSE 1 END; @@ -4528,7 +187,7 @@ BEGIN -- Dogs IF v_has_filter_dog = 1 THEN - CALL parts.p_split(v_guid, a_ids_dog, ',', a_debug); + CALL demo.p_split(v_guid, a_ids_dog, ',', a_debug); INSERT INTO tmp_Split ( substring @@ -4537,20 +196,20 @@ BEGIN SELECT SPLIT_T.substring , CONVERT(SPLIT_T.substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp SPLIT_T + FROM demo.CORE_Split_Temp SPLIT_T WHERE SPLIT_T.GUID = v_guid AND IFNULL(SPLIT_T.substring, '') <> '' ; - CALL parts.p_clear_split_temp( v_guid ); + CALL demo.p_clear_split_temp( v_guid ); END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS ( SELECT * FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog + LEFT JOIN demo.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(DOG.id_dog) @@ -4569,7 +228,7 @@ BEGIN , v_code_type_error_bad_data , CONCAT('Invalid or inactive Dog IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog + LEFT JOIN demo.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(DOG.id_dog) @@ -4587,7 +246,7 @@ BEGIN DOG.id_dog , DOG.name FROM tmp_Split t_SPLIT - RIGHT JOIN parts.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog + RIGHT JOIN demo.DOG_Dog DOG ON t_SPLIT.as_int = DOG.id_dog WHERE ( a_get_all_dog = 1 @@ -4608,7 +267,7 @@ BEGIN -- Commands IF v_has_filter_command = 1 THEN - CALL parts.p_split(v_guid, a_ids_command, ',', a_debug); + CALL demo.p_split(v_guid, a_ids_command, ',', a_debug); INSERT INTO tmp_Split ( substring @@ -4617,21 +276,21 @@ BEGIN SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp + FROM demo.CORE_Split_Temp WHERE GUID = v_guid AND NOT ISNULL(substring) AND substring <> '' ; - CALL parts.p_clear_split_temp( v_guid ); + CALL demo.p_clear_split_temp( v_guid ); END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS ( SELECT * FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command + LEFT JOIN demo.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(COMMAND.id_command) @@ -4650,7 +309,7 @@ BEGIN , v_code_type_error_bad_data , CONCAT('Invalid or inactive Command IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command + LEFT JOIN demo.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(COMMAND.id_command) @@ -4662,14 +321,19 @@ BEGIN ELSE INSERT INTO tmp_Command ( id_command + , id_command_category + , name_command_category , name ) SELECT COMMAND.id_command + , COMMAND.id_command_category + , COMMAND_CATEGORY.name AS name_command_category -- , COMMAND.code , COMMAND.name FROM tmp_Split t_SPLIT - RIGHT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command + RIGHT JOIN demo.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command + LEFT JOIN demo.DOG_Command_Category COMMAND_CATEGORY ON COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category WHERE ( a_get_all_command = 1 @@ -4690,7 +354,7 @@ BEGIN -- Understanding Levels IF v_has_filter_understanding_level = 1 THEN - CALL parts.p_split(v_guid, a_ids_understanding_level, ',', a_debug); + CALL demo.p_split(v_guid, a_ids_understanding_level, ',', a_debug); INSERT INTO tmp_Split ( substring @@ -4699,21 +363,21 @@ BEGIN SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp + FROM demo.CORE_Split_Temp WHERE GUID = v_guid AND NOT ISNULL(substring) AND substring <> '' ; - CALL parts.p_clear_split_temp( v_guid ); + CALL demo.p_clear_split_temp( v_guid ); END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS ( SELECT * FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level + LEFT JOIN demo.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(UNDERSTANDING_LEVEL.id_understanding_level) @@ -4732,7 +396,7 @@ BEGIN , v_code_type_error_bad_data , CONCAT('Invalid or inactive Understanding Level IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level + LEFT JOIN demo.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(UNDERSTANDING_LEVEL.id_understanding_level) @@ -4752,7 +416,7 @@ BEGIN , UNDERSTANDING_LEVEL.code , UNDERSTANDING_LEVEL.name FROM tmp_Split t_SPLIT - RIGHT JOIN parts.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level + RIGHT JOIN demo.DOG_Understanding_Level UNDERSTANDING_LEVEL ON t_SPLIT.as_int = UNDERSTANDING_LEVEL.id_understanding_level WHERE ( a_get_all_understanding_level = 1 @@ -4773,7 +437,7 @@ BEGIN -- Obedience Levels IF v_has_filter_obedience_level = 1 THEN - CALL parts.p_split(v_guid, a_ids_obedience_level, ',', a_debug); + CALL demo.p_split(v_guid, a_ids_obedience_level, ',', a_debug); INSERT INTO tmp_Split ( substring @@ -4782,21 +446,21 @@ BEGIN SELECT substring , CONVERT(substring, DECIMAL(10,0)) AS as_int - FROM parts.CORE_Split_Temp + FROM demo.CORE_Split_Temp WHERE GUID = v_guid AND NOT ISNULL(substring) AND substring <> '' ; - CALL parts.p_clear_split_temp( v_guid ); + CALL demo.p_clear_split_temp( v_guid ); END IF; - IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN + IF NOT EXISTS (SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF EXISTS ( SELECT * FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level + LEFT JOIN demo.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(OBEDIENCE_LEVEL.id_obedience_level) @@ -4815,7 +479,7 @@ BEGIN , v_code_type_error_bad_data , CONCAT('Invalid or inactive Obedience Level IDs: ', IFNULL(GROUP_CONCAT(t_SPLIT.substring SEPARATOR ', '), 'NULL')) FROM tmp_Split t_SPLIT - LEFT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level + LEFT JOIN demo.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level WHERE ISNULL(t_SPLIT.as_int) OR ISNULL(OBEDIENCE_LEVEL.id_obedience_level) @@ -4835,7 +499,7 @@ BEGIN , OBEDIENCE_LEVEL.code , OBEDIENCE_LEVEL.name FROM tmp_Split t_SPLIT - RIGHT JOIN parts.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level + RIGHT JOIN demo.DOG_Obedience_Level OBEDIENCE_LEVEL ON t_SPLIT.as_int = OBEDIENCE_LEVEL.id_obedience_level WHERE ( a_get_all_obedience_level = 1 @@ -4866,7 +530,7 @@ BEGIN ; END IF; - CALL parts.p_DOG_calc_user( + CALL demo.p_DOG_calc_user( v_guid , a_id_user , FALSE -- a_get_inactive_user @@ -4878,7 +542,7 @@ BEGIN IFNULL(CALC_USER_T.has_access, 0) INTO v_can_view - FROM parts.DOG_Calc_User_Temp CALC_USER_T + FROM demo.DOG_Calc_User_Temp CALC_USER_T WHERE CALC_USER_T.GUID = v_guid LIMIT 1 ; @@ -4905,12 +569,12 @@ BEGIN ; END IF; - CALL parts.p_DOG_clear_calc_user( + CALL demo.p_DOG_clear_calc_user( v_guid , 0 -- a_debug ); - IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN + IF EXISTS(SELECT * FROM tmp_Msg_Error t_ERROR INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type WHERE ERROR_TYPE.is_breaking_error = 1 LIMIT 1) THEN IF a_debug = 1 THEN SELECT * FROM tmp_Dog; SELECT * FROM tmp_Command; @@ -4928,18 +592,22 @@ BEGIN SELECT DOG_COMMAND_LINK.id_link AS id_dog_command_link , t_DOG.id_dog - , t_DOG.name + , t_DOG.name AS name_dog + , t_COMMAND.id_command_category + , t_COMMAND.name_command_category , t_COMMAND.id_command -- , t_COMMAND.code - , t_COMMAND.name + , t_COMMAND.name AS name_command , t_UNDERSTANDING_LEVEL.id_understanding_level , t_UNDERSTANDING_LEVEL.code AS code_understanding_level , t_UNDERSTANDING_LEVEL.name AS name_understanding_level , t_OBEDIENCE_LEVEL.id_obedience_level , t_OBEDIENCE_LEVEL.code AS code_obedience_level , t_OBEDIENCE_LEVEL.name AS name_obedience_level + , DOG_COMMAND_LINK.hand_signal_description + , DOG_COMMAND_LINK.notes , DOG_COMMAND_LINK.active - FROM parts.DOG_Dog_Command_Link DOG_COMMAND_LINK + FROM demo.DOG_Dog_Command_Link DOG_COMMAND_LINK INNER JOIN tmp_Dog t_DOG ON DOG_COMMAND_LINK.id_dog = t_DOG.id_dog INNER JOIN tmp_Command t_COMMAND ON DOG_COMMAND_LINK.id_command = t_COMMAND.id_command INNER JOIN tmp_Understanding_Level t_UNDERSTANDING_LEVEL ON DOG_COMMAND_LINK.id_understanding_level = t_UNDERSTANDING_LEVEL.id_understanding_level @@ -4958,7 +626,7 @@ BEGIN , ERROR_TYPE.text_colour , t_ERROR.msg FROM tmp_Msg_Error t_ERROR - INNER JOIN parts.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type + INNER JOIN demo.CORE_Msg_Error_Type ERROR_TYPE ON t_ERROR.id_type = ERROR_TYPE.id_type ; IF a_debug = 1 AND v_can_view = 1 THEN @@ -4976,7 +644,7 @@ BEGIN DROP TEMPORARY TABLE IF EXISTS tmp_Dog; IF a_debug = 1 THEN - CALL parts.p_core_debug_timing_reporting ( v_time_start ); + CALL demo.p_core_debug_timing_reporting ( v_time_start ); END IF; END // DELIMITER ; @@ -4984,7 +652,7 @@ DELIMITER ; /* -CALL parts.p_DOG_get_many_dog_command ( +CALL demo.p_DOG_get_many_dog_command ( 1 -- 'auth0|6582b95c895d09a70ba10fef', -- a_id_user , 1 -- a_get_all_dog , 0 -- a_get_inactive_dog @@ -5001,769 +669,4 @@ CALL parts.p_DOG_get_many_dog_command ( , 1 -- a_debug ); -*/ -USE parts; - - --- Error Message Types -/* Existing table */ -INSERT INTO parts.CORE_Msg_Error_Type ( - code - , name - , description - , is_breaking_error -) -VALUES - ( - 'BAD_DATA' - , 'Invalid data' - , 'Rubbish data' - , 1 - ) - , ( - 'NO_PERMISSION' - , 'No permission' - , 'Not authorised' - , 1 - ) - , ( - 'MYSQL_ERROR' - , 'MySQL error' - , 'MySQL execution error.' - , 1 - ) - , ( - 'WARNING' - , 'Warning' - , 'Non-breaking error.' - , 0 - ) -; - -INSERT INTO parts.CORE_File_Type ( - code - , name - , is_image -) -VALUES - ( - 'JPG' - , 'JPG' - , 1 - ) -; - --- Access Levels -INSERT INTO parts.DOG_Access_Level ( - display_order - , code - , name - , priority -) -VALUES - ( - 1 - , 'VIEW' - , 'View' - , 3 - ) - , ( - 2 - , 'EDIT' - , 'Edit' - , 2 - ) - , ( - 3 - , 'ADMIN' - , 'Admin' - , 1 - ) -; - --- Permission Groups -INSERT INTO parts.DOG_Permission_Group ( - display_order - , code - , name -) -VALUES - ( - 0 - , 'DOG' - , 'Dog' - ) - , ( - 1 - , 'USER' - , 'Admin User' - ) -; - --- Permissions -INSERT INTO parts.DOG_Permission ( - display_order - , code - , name - , id_permission_group - , id_access_level_required -) -VALUES - ( - 1 - , 'DOG_VIEW' - , 'View Dog' - , 1 - , 3 - ) - , ( - 1 - , 'DOG_ADMIN' - , 'Admin Dog' - , 1 - , 3 - ) - , ( - 1 - , 'DOG_CREATE' - , 'Create Dog' - , 1 - , 1 - ) -; - --- Users -INSERT INTO parts.DOG_User ( - id_user_auth0 - , firstname - , surname - , email - , is_super_user - , active -) -VALUES - ( - 'auth0|6582b95c895d09a70ba10fef' -- id_user_auth0 - , 'Teddy' -- firstname - , 'Middleton-Smith' -- surname - , 'edward.middletonsmith@gmail.com' -- email - , 1 -- is_super_user - , 1 -- active - ) - , ( - 'auth0|672659014296b7f94a9bab45' -- id_user_auth0 - , 'Tierney' -- firstname - , 'Gullen' -- surname - , 'tierneybailey13@gmail.com' -- email - , 1 -- is_super_user - , 1 -- active - ) - , ( - NULL -- id_user_auth0 - , 'Command Bot' -- firstname - , 'Bot' -- surname - , 'teddy@partsltd.co.uk' -- email - , 0 -- is_super_user - , 1 -- active - ) -; - --- Roles -INSERT INTO parts.DOG_Role ( - display_order - , code - , name - , id_user_created_by -) -VALUES - ( - 1 - , 'MANAGER' - , 'Manager' - , 1 - ) - , ( - 2 - , 'USER' - , 'User' - , 1 - ) -; - --- Role Permission link -INSERT INTO parts.DOG_Role_Permission_Link ( - id_role - , id_permission - , id_access_level - , id_user_created_by -) -VALUES - ( - 1 - , 1 - , 3 - , 1 - ) - , ( - 1 - , 2 - , 3 - , 1 - ) - , ( - 1 - , 3 - , 3 - , 1 - ) - , ( - 2 - , 1 - , 1 - , 1 - ) - , ( - 2 - , 2 - , 1 - , 1 - ) - , ( - 2 - , 3 - , 1 - , 1 - ) -; - --- User Role link -INSERT INTO parts.DOG_User_Role_Link ( - id_user - , id_role - , id_user_created_by -) -VALUES - ( - 1 - , 1 - , 1 - ) - , ( - 2 - , 2 - , 1 - ) - , ( - 3 - , 2 - , 1 - ) -; - --- Project-specific tables -INSERT INTO parts.DOG_Dog ( - name - , appearance - , mass_kg -) -VALUES - ( - 'Molly' - , 'Cute' - , 20 - ) -; - -INSERT INTO parts.DOG_Breed ( - code - , name -) -VALUES - ( - 'BORDER_COLLIE' - , 'Border Collie' - ) -; - -INSERT INTO parts.DOG_Dog_Breed_Link ( - id_dog - , id_breed - , lineage_ratio -) -VALUES - ( - 1 - , 1 - , 1 - ) -; - -INSERT INTO parts.DOG_Understanding_Level ( - code - , name -) -VALUES - ( - 'UNKNOWN' - , 'Not known' - ) - , ( - 'INTRODUCED' - , 'Has been introduced' - ) - , ( - 'RECOGNISES_COMBINED_VISUAL_AND_VERBAL_SIGNAL' - , 'Combined visual and verbal signal recognised' - ) - , ( - 'RECOGNISES_VISUAL_SIGNAL' - , 'Visual signal alone recognised' - ) - , ( - 'RECOGNISES_VERBAL_SIGNAL' - , 'Verbal signal alone recognised' - ) - , ( - 'UNDERSTOOD' - , 'Understood' - ) -; - -INSERT INTO parts.DOG_Obedience_Level ( - code - , name -) -VALUES - ( - 'REFUSAL' - , 'Refuses to obey' - ) - , ( - 'ON_HER_TERMS' - , 'Might obey if she feels like it' - ) - , ( - 'OBEYS_UNDISTRACTED' - , 'Obeys without distractions' - ) - , ( - 'OBEYS_MILDLY_DISTRACTED' - , 'Obeys when mildly distracted' - ) - , ( - 'OBEYS_PERFECTLY' - , 'Obeys in all situations' - ) -; - -INSERT INTO parts.DOG_Command_Category ( - code - , name -) -VALUES - ( - 'ACTIVITIES' - , 'Activities' - ) - , ( - 'BASIC_OBEDIENCE' - , 'Basic obedience' - ) - , ( - 'BEHAVIOUR_MODIFICATION' - , 'Behaviour modification' - ) - , ( - 'BODY_PARTS' - , 'Body parts' - ) - , ( - 'CLOTHING_AND_EQUIPMENT' - , 'Clothing and equipment' - ) - , ( - 'COMPARISON' - , 'Comparison' - ) - , ( - 'ADJECTIVES' - , 'Compliments and insults (adjectives)' - ) - , ( - 'EMOTIONAL_STATE' - , 'Emotional state' - ) - , ( - 'ENVIRONMENT' - , 'Environment' - ) - , ( - 'ESSENTIAL_NEEDS' - , 'Essential needs' - ) - , ( - 'IMPULSE_CONTROL' - , 'Impulse control' - ) - , ( - 'LOCATION' - , 'Location' - ) - , ( - 'MANNERS' - , 'Manners' - ) - , ( - 'MEALTIME' - , 'Mealtime' - ) - , ( - 'PARTY_TRICK' - , 'Party trick' - ) - , ( - 'PEOPLE' - , 'People' - ) - , ( - 'PLAY' - , 'Play' - ) - , ( - 'POSITION' - , 'Position' - ) - , ( - 'QUESTIONS' - , 'Questions' - ) - , ( - 'SERVICE' - , 'Service' - ) - , ( - 'TIME_AND_SCHEDULING' - , 'Time and scheduling' - ) - , ( - 'UTILITY' - , 'Utility' - ) -; - -/* -INSERT INTO parts.DOG_Command ( - code - , name -) -VALUES - ( - 'lick' - , 'nips' - ) -; -*/ - -/* -INSERT INTO parts.DOG_Dog_Command_Link ( - id_dog - , id_command - , id_understanding_level - , id_obedience_level - , notes -) -VALUES - ( - 'lick' - , 'nips' - ) -; -*/ - -INSERT INTO parts.DOG_Location ( - code - , name -) -VALUES - ( - 'LOUNGE' - , 'Lounge' - ) -; - -/* -INSERT INTO parts.DOG_Location_Link ( - id_location_parent - , id_location_child -) -VALUES - ( - 1 - , 2 - ) -; -*/ - -INSERT INTO parts.DOG_Colour ( - code - , name -) -VALUES - ( - 'RED' - , 'Red' - ) - , ( - 'GREEN' - , 'Green' - ) -; - -INSERT INTO parts.DOG_Button_Shape ( - code - , name - , description -) -VALUES - ( - 'ROUND' - , 'Round' - , 'Cylindrical' - ) - , ( - 'HEXAGONAL' - , 'Hexagonal' - , 'Hexagonal prism' - ) -; - -/* -INSERT INTO parts.DOG_Image ( - id_file_type - , id_dog - , path - , display_order -) -VALUES - ( - 1 - , 1 - , NULL - , NULL - ) -; -*/ - -/* -INSERT INTO parts.DOG_Button_Icon ( - id_image - , code - , name - , description -) -VALUES - ( - 1 - , NULL - ) -; -*/ - -/* -INSERT INTO parts.DOG_Command_Button_Link ( - id_command - , id_button_shape - , id_button_colour - , id_button_icon - , id_location -) -VALUES - ( - 1 -- AS id_command - , 1 -- AS id_button_shape - , 1 -- AS id_button_colour - , NULL -- AS id_button_icon - , 1 -- AS id_location - ) -; -*/ - -INSERT INTO parts.DOG_Drive ( - code - , name -) -VALUES - ( - 'PREY' - , 'Prey' - ) - , ( - 'PACK' - , 'Pack' - ) -; - -INSERT INTO parts.DOG_Dog_Drive_Link ( - id_dog - , id_drive - , dominance_ratio -) -VALUES - ( - 1 - , 1 - , 0.5 - ) - , ( - 1 - , 2 - , 0.5 - ) -; - - - -/* - Post Excel-insert: - - -SELECT * -FROM demo.DOG_Dog; - -/ * -SELECT * -FROM demo.DOG_Command; -* / - -SELECT * --- DELETE -FROM demo.DOG_Understanding_Level; - -SELECT * --- DELETE -FROM demo.DOG_Obedience_Level; - -/ * -INSERT INTO demo.DOG_Dog_Command_Link ( - id_dog - , id_command - , id_understanding_level - , id_obedience_level - , notes -) -SELECT - DOG.id_dog - , COMMAND.id_command - , -FROM demo.DOG_Dog DOG -CROSS JOIN demo.DOG_Command COMMAND -WHERE DOG.name = 'Molly' - -* / - -*/ - --- Core tables --- Error Message type -SELECT * FROM parts.CORE_Msg_Error_Type; - - --- Common project tables --- User Change Sets -SELECT * FROM parts.DOG_User_Change_Set; - --- Access Levels -SELECT * FROM parts.DOG_Access_Level; - --- Permission Groups -SELECT * FROM parts.DOG_Permission_Group; - --- Permissions -SELECT * FROM parts.DOG_Permission; - --- Users -SELECT * FROM parts.DOG_User; -SELECT * FROM parts.DOG_User_Audit; - --- Roles -SELECT * FROM parts.DOG_Role; -SELECT * FROM parts.DOG_Role_Audit; - --- Role Permission link -SELECT * FROM parts.DOG_Role_Permission_Link; -SELECT * FROM parts.DOG_Role_Permission_Link_Audit; - --- User Role link -SELECT * FROM parts.DOG_User_Role_Link; -SELECT * FROM parts.DOG_User_Role_Link_Audit; - - --- Project-specific tables --- Command Change Sets -SELECT * FROM parts.DOG_Dog_Change_Set; - --- Commands -SELECT * FROM parts.DOG_Dog; -SELECT * FROM parts.DOG_Dog_Audit; -SELECT * FROM parts.DOG_Dog_Temp; - -SELECT * FROM parts.DOG_Breed; -SELECT * FROM parts.DOG_Breed_Audit; -SELECT * FROM parts.DOG_Breed_Temp; - -SELECT * FROM parts.DOG_Dog_Breed_Link; -SELECT * FROM parts.DOG_Dog_Breed_Link_Audit; -SELECT * FROM parts.DOG_Dog_Breed_Link_Temp; - -SELECT * FROM parts.DOG_Obedience_Level; -SELECT * FROM parts.DOG_Obedience_Level_Audit; -SELECT * FROM parts.DOG_Obedience_Level_Temp; - -SELECT * FROM parts.DOG_Command_Category; -SELECT * FROM parts.DOG_Command_Category_Audit; -SELECT * FROM parts.DOG_Command_Category_Temp; - -SELECT * FROM parts.DOG_Command; -SELECT * FROM parts.DOG_Command_Audit; -SELECT * FROM parts.DOG_Command_Temp; - -SELECT * FROM parts.DOG_Dog_Command_Link; -SELECT * FROM parts.DOG_Dog_Command_Link_Audit; -SELECT * FROM parts.DOG_Dog_Command_Link_Temp; - -SELECT * FROM parts.DOG_Location; -SELECT * FROM parts.DOG_Location_Audit; -SELECT * FROM parts.DOG_Location_Temp; - -SELECT * FROM parts.DOG_Location_Link; -SELECT * FROM parts.DOG_Location_Link_Audit; -SELECT * FROM parts.DOG_Location_Link_Temp; - -SELECT * FROM parts.DOG_Colour; -SELECT * FROM parts.DOG_Colour_Audit; -SELECT * FROM parts.DOG_Colour_Temp; - -SELECT * FROM parts.DOG_Button_Shape; -SELECT * FROM parts.DOG_Button_Shape_Audit; -SELECT * FROM parts.DOG_Button_Shape_Temp; - -SELECT * FROM parts.DOG_Image; -SELECT * FROM parts.DOG_Image_Audit; -SELECT * FROM parts.DOG_Image_Temp; - -SELECT * FROM parts.DOG_Button_Icon; -SELECT * FROM parts.DOG_Button_Icon_Audit; -SELECT * FROM parts.DOG_Button_Icon_Temp; - -SELECT * FROM parts.DOG_Command_Button_Link; -SELECT * FROM parts.DOG_Command_Button_Link_Audit; -SELECT * FROM parts.DOG_Command_Button_Link_Temp; - -SELECT * FROM parts.DOG_Drive; -SELECT * FROM parts.DOG_Drive_Audit; -SELECT * FROM parts.DOG_Drive_Temp; - -SELECT * FROM parts.DOG_Dog_Drive_Link; -SELECT * FROM parts.DOG_Dog_Drive_Link_Audit; -SELECT * FROM parts.DOG_Dog_Drive_Link_Temp; - +*/ \ No newline at end of file diff --git a/static/MySQL/7203_p_dog_get_many_dog_command.sql b/static/MySQL/7203_p_dog_get_many_dog_command.sql index aefae05..9b2e676 100644 --- a/static/MySQL/7203_p_dog_get_many_dog_command.sql +++ b/static/MySQL/7203_p_dog_get_many_dog_command.sql @@ -146,8 +146,11 @@ BEGIN CREATE TEMPORARY TABLE tmp_Command ( id_command INT NOT NULL + , id_command_category INT NOT NULL + , name_command_category VARCHAR(250) -- , code VARCHAR(100) , name VARCHAR(250) + , has_button BIT ); CREATE TEMPORARY TABLE tmp_Understanding_Level ( @@ -318,14 +321,25 @@ BEGIN ELSE INSERT INTO tmp_Command ( id_command + , id_command_category + , name_command_category , name + , has_button ) SELECT COMMAND.id_command + , COMMAND.id_command_category + , COMMAND_CATEGORY.name AS name_command_category -- , COMMAND.code , COMMAND.name + , CASE WHEN ISNULL(COMMANDS_WITH_BUTTONS.id_command) THEN 0 ELSE 1 END AS has_button FROM tmp_Split t_SPLIT RIGHT JOIN parts.DOG_Command COMMAND ON t_SPLIT.as_int = COMMAND.id_command + LEFT JOIN parts.DOG_Command_Category COMMAND_CATEGORY ON COMMAND.id_command_category = COMMAND_CATEGORY.id_command_category + LEFT JOIN ( + SELECT DISTINCT COMMAND_BUTTON_LINK.id_command + FROM parts.DOG_Command_Button_Link COMMAND_BUTTON_LINK + ) COMMANDS_WITH_BUTTONS ON COMMAND.id_command = COMMANDS_WITH_BUTTONS.id_command WHERE ( a_get_all_command = 1 @@ -584,10 +598,13 @@ BEGIN SELECT DOG_COMMAND_LINK.id_link AS id_dog_command_link , t_DOG.id_dog - , t_DOG.name + , t_DOG.name AS name_dog + , t_COMMAND.id_command_category + , t_COMMAND.name_command_category , t_COMMAND.id_command -- , t_COMMAND.code - , t_COMMAND.name + , t_COMMAND.name AS name_command + , t_COMMAND.has_button AS command_has_button , t_UNDERSTANDING_LEVEL.id_understanding_level , t_UNDERSTANDING_LEVEL.code AS code_understanding_level , t_UNDERSTANDING_LEVEL.name AS name_understanding_level diff --git a/templates/pages/dog/_dog_command_link.html b/templates/pages/dog/_dog_command_link.html new file mode 100644 index 0000000..e69de29 diff --git a/templates/pages/dog/_dog_home.html b/templates/pages/dog/_dog_home.html new file mode 100644 index 0000000..e69de29