[WIP] Added more tables #246

This commit is contained in:
Sven Heidemann 2023-03-06 17:46:56 +01:00
parent 1755efb5d9
commit d24d3fa4de
13 changed files with 424 additions and 248 deletions

View File

@ -8,6 +8,7 @@ from bot_data.migration.api_key_migration import ApiKeyMigration
from bot_data.migration.api_migration import ApiMigration from bot_data.migration.api_migration import ApiMigration
from bot_data.migration.auto_role_fix1_migration import AutoRoleFix1Migration from bot_data.migration.auto_role_fix1_migration import AutoRoleFix1Migration
from bot_data.migration.auto_role_migration import AutoRoleMigration from bot_data.migration.auto_role_migration import AutoRoleMigration
from bot_data.migration.db_history_migration import DBHistoryMigration
from bot_data.migration.initial_migration import InitialMigration from bot_data.migration.initial_migration import InitialMigration
from bot_data.migration.level_migration import LevelMigration from bot_data.migration.level_migration import LevelMigration
from bot_data.migration.remove_stats_migration import RemoveStatsMigration from bot_data.migration.remove_stats_migration import RemoveStatsMigration
@ -40,3 +41,4 @@ class StartupMigrationExtension(StartupExtensionABC):
services.add_transient(MigrationABC, UserJoinedGameServerMigration) # 12.02.2023 #181 - 1.0.0 services.add_transient(MigrationABC, UserJoinedGameServerMigration) # 12.02.2023 #181 - 1.0.0
services.add_transient(MigrationABC, RemoveStatsMigration) # 19.02.2023 #190 - 1.0.0 services.add_transient(MigrationABC, RemoveStatsMigration) # 19.02.2023 #190 - 1.0.0
services.add_transient(MigrationABC, UserWarningMigration) # 21.02.2023 #35 - 1.0.0 services.add_transient(MigrationABC, UserWarningMigration) # 21.02.2023 #35 - 1.0.0
services.add_transient(MigrationABC, DBHistoryMigration) # 06.03.2023 #246 - 1.0.0

View File

@ -1,3 +1,5 @@
import os
from bot_core.logging.database_logger import DatabaseLogger from bot_core.logging.database_logger import DatabaseLogger
from bot_data.abc.migration_abc import MigrationABC from bot_data.abc.migration_abc import MigrationABC
from bot_data.db_context import DBContext from bot_data.db_context import DBContext
@ -12,150 +14,17 @@ class DBHistoryMigration(MigrationABC):
self._db = db self._db = db
self._cursor = db.cursor self._cursor = db.cursor
def _api_keys(self):
self._cursor.execute(
f"""
ALTER TABLE `ApiKeys`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `ApiKeys`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `ApiKeys`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `ApiKeysHistory`
(
`Id` BIGINT(20) NOT NULL,
`Identifier` VARCHAR(255) NOT NULL,
`Key` VARCHAR(255) NOT NULL,
`CreatorId` BIGINT(20) DEFAULT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_ApiKeysUpdate`;
CREATE TRIGGER `TR_ApiKeysUpdate`
AFTER UPDATE
ON `ApiKeys`
FOR EACH ROW
BEGIN
INSERT INTO `ApiKeysHistory` (`Id`, `Identifier`, `Key`, `CreatorId`, `DateFrom`, `DateTo`)
VALUES (OLD.Id, OLD.Identifier, OLD.Key, OLD.CreatorId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;
DROP TRIGGER IF EXISTS `TR_ApiKeysDelete`;
CREATE TRIGGER `TR_ApiKeysDelete`
AFTER DELETE
ON `ApiKeys`
FOR EACH ROW
BEGIN
INSERT INTO `ApiKeysHistory` (`Id`, `Identifier`, `Key`, `CreatorId`, `Deleted`, `DateFrom`, `DateTo`)
VALUES (OLD.Id, OLD.Identifier, OLD.Key, OLD.CreatorId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
END;
"""
)
def _auth_users(self):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `AuthUsersHistory`
(
`Id` bigint(20) NOT NULL,
`FirstName` varchar(255) DEFAULT NULL,
`LastName` varchar(255) DEFAULT NULL,
`EMail` varchar(255) DEFAULT NULL,
`Password` varchar(255) DEFAULT NULL,
`PasswordSalt` varchar(255) DEFAULT NULL,
`RefreshToken` varchar(255) DEFAULT NULL,
`ConfirmationId` varchar(255) DEFAULT NULL,
`ForgotPasswordId` varchar(255) DEFAULT NULL,
`OAuthId` varchar(255) DEFAULT NULL,
`RefreshTokenExpiryTime` datetime(6) NOT NULL,
`AuthRole` int(11) NOT NULL DEFAULT 0,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
);
"""
)
def _auth_user_users_relation(self):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `AuthUserUsersRelationsHistory`
(
`Id` bigint(20) NOT NULL,
`AuthUserId` bigint(20) DEFAULT NULL,
`UserId` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
);
"""
)
def _auto_role_rules(self):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `AutoRoleRulesHistory`
(
`AutoRoleRuleId` bigint(20) NOT NULL,
`AutoRoleId` bigint(20) DEFAULT NULL,
`DiscordEmojiName` varchar(64) DEFAULT NULL,
`DiscordRoleId` bigint(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
);
"""
)
def _auto_roles(self):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `AutoRolesHistory`
(
`AutoRoleId` bigint(20) NOT NULL,
`ServerId` bigint(20) DEFAULT NULL,
`DiscordChannelId` bigint(20) NOT NULL,
`DiscordMessageId` bigint(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
);
"""
)
def _clients_history(self):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `ClientsHistory`
(
`ClientId` bigint(20) NOT NULL,
`DiscordClientId` bigint(20) NOT NULL,
`SentMessageCount` bigint(20) NOT NULL DEFAULT 0,
`ReceivedMessageCount` bigint(20) NOT NULL DEFAULT 0,
`DeletedMessageCount` bigint(20) NOT NULL DEFAULT 0,
`ReceivedCommandsCount` bigint(20) NOT NULL DEFAULT 0,
`MovedUsersCount` bigint(20) NOT NULL DEFAULT 0,
`ServerId` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
);
"""
)
def _game_servers(self): def _game_servers(self):
self._cursor.execute( self._cursor.execute(
f""" f"""
CREATE TABLE IF NOT EXISTS `GameServersHistory` CREATE TABLE IF NOT EXISTS `GameServersHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`Name` varchar(255) NOT NULL, `Name` VARCHAR(255) NOT NULL,
`ServerId` bigint(20) NOT NULL, `ServerId` BIGINT(20) NOT NULL,
`ApiKeyId` bigint(20) NOT NULL, `ApiKeyId` BIGINT(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -165,10 +34,10 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `KnownUsersHistory` CREATE TABLE IF NOT EXISTS `KnownUsersHistory`
( (
`KnownUserId` bigint(20) NOT NULL, `KnownUserId` BIGINT(20) NOT NULL,
`DiscordId` bigint(20) NOT NULL, `DiscordId` BIGINT(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -178,14 +47,14 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `LevelsHistory` CREATE TABLE IF NOT EXISTS `LevelsHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`Name` varchar(255) NOT NULL, `Name` VARCHAR(255) NOT NULL,
`Color` varchar(8) NOT NULL, `Color` VARCHAR(8) NOT NULL,
`MinXp` bigint(20) NOT NULL, `MinXp` BIGINT(20) NOT NULL,
`PermissionInt` bigint(20) NOT NULL, `PermissionInt` BIGINT(20) NOT NULL,
`ServerId` bigint(20) DEFAULT NULL, `ServerId` BIGINT(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -195,10 +64,10 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `ServersHistory` CREATE TABLE IF NOT EXISTS `ServersHistory`
( (
`ServerId` bigint(20) NOT NULL, `ServerId` BIGINT(20) NOT NULL,
`DiscordServerId` bigint(20) NOT NULL, `DiscordServerId` BIGINT(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -208,12 +77,12 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserGameIdentsHistory` CREATE TABLE IF NOT EXISTS `UserGameIdentsHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`GameServerId` bigint(20) NOT NULL, `GameServerId` BIGINT(20) NOT NULL,
`Ident` varchar(255) NOT NULL, `Ident` VARCHAR(255) NOT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -223,13 +92,13 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserJoinedGameServerHistory` CREATE TABLE IF NOT EXISTS `UserJoinedGameServerHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`GameServerId` bigint(20) NOT NULL, `GameServerId` BIGINT(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL, `JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL, `LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -239,12 +108,12 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserJoinedServersHistory` CREATE TABLE IF NOT EXISTS `UserJoinedServersHistory`
( (
`JoinId` bigint(20) NOT NULL, `JoinId` BIGINT(20) NOT NULL,
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL, `JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL, `LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -254,13 +123,13 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserJoinedVoiceChannelHistory` CREATE TABLE IF NOT EXISTS `UserJoinedVoiceChannelHistory`
( (
`JoinId` bigint(20) NOT NULL, `JoinId` BIGINT(20) NOT NULL,
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`DiscordChannelId` bigint(20) NOT NULL, `DiscordChannelId` BIGINT(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL, `JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL, `LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -270,13 +139,13 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserMessageCountPerHourHistory` CREATE TABLE IF NOT EXISTS `UserMessageCountPerHourHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`Date` datetime(6) NOT NULL, `Date` DATETIME(6) NOT NULL,
`Hour` bigint(20) DEFAULT NULL, `Hour` BIGINT(20) DEFAULT NULL,
`XPCount` bigint(20) DEFAULT NULL, `XPCount` BIGINT(20) DEFAULT NULL,
`UserId` bigint(20) DEFAULT NULL, `UserId` BIGINT(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -286,12 +155,12 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UsersHistory` CREATE TABLE IF NOT EXISTS `UsersHistory`
( (
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`DiscordId` bigint(20) NOT NULL, `DiscordId` BIGINT(20) NOT NULL,
`XP` bigint(20) NOT NULL DEFAULT 0, `XP` BIGINT(20) NOT NULL DEFAULT 0,
`ServerId` bigint(20) DEFAULT NULL, `ServerId` BIGINT(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -301,12 +170,12 @@ class DBHistoryMigration(MigrationABC):
f""" f"""
CREATE TABLE IF NOT EXISTS `UserWarningsHistory` CREATE TABLE IF NOT EXISTS `UserWarningsHistory`
( (
`Id` bigint(20) NOT NULL, `Id` BIGINT(20) NOT NULL,
`Description` varchar(255) NOT NULL, `Description` VARCHAR(255) NOT NULL,
`UserId` bigint(20) NOT NULL, `UserId` BIGINT(20) NOT NULL,
`Author` bigint(20) DEFAULT NULL, `Author` BIGINT(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL, `DateFrom` DATETIME(6) NOT NULL,
`DateTo` datetime(6) NOT NULL `DateTo` DATETIME(6) NOT NULL
); );
""" """
) )
@ -314,23 +183,26 @@ class DBHistoryMigration(MigrationABC):
def upgrade(self): def upgrade(self):
self._logger.debug(__name__, "Running upgrade") self._logger.debug(__name__, "Running upgrade")
self._api_keys() self._cursor.execute(
self._auth_users() open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/api_keys.sql").read()
self._auth_user_users_relation() )
self._auto_role_rules() self._cursor.execute(
self._auto_roles() open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auth_users.sql").read()
self._clients_history() )
self._game_servers() self._cursor.execute(
self._known_users() open(
self._levels() f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auth_user_users_relation.sql"
self._servers() ).read()
self._user_game_idents() )
self._user_joined_game_server() self._cursor.execute(
self._user_joined_server() open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auto_role_rules.sql").read()
self._user_joined_voice_channel() )
self._user_message_count_per_hour() self._cursor.execute(
self._users() open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auto_roles.sql").read()
self._user_warnings() )
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/clients.sql").read()
)
def downgrade(self): def downgrade(self):
self._cursor.execute("DROP TABLE `ApiKeysHistory`;") self._cursor.execute("DROP TABLE `ApiKeysHistory`;")

View File

@ -0,0 +1,49 @@
ALTER TABLE `ApiKeys`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `ApiKeys`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `ApiKeys`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `ApiKeysHistory`
(
`Id` BIGINT(20) NOT NULL,
`Identifier` VARCHAR(255) NOT NULL,
`Key` VARCHAR(255) NOT NULL,
`CreatorId` BIGINT(20) DEFAULT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_ApiKeysUpdate`;
CREATE TRIGGER `TR_ApiKeysUpdate`
AFTER UPDATE
ON `ApiKeys`
FOR EACH ROW
BEGIN
INSERT INTO `ApiKeysHistory` (
`Id`, `Identifier`, `Key`, `CreatorId`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.Identifier, OLD.Key, OLD.CreatorId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_ApiKeysDelete`;
CREATE TRIGGER `TR_ApiKeysDelete`
AFTER DELETE
ON `ApiKeys`
FOR EACH ROW
BEGIN
INSERT INTO `ApiKeysHistory` (
`Id`, `Identifier`, `Key`, `CreatorId`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.Identifier, OLD.Key, OLD.CreatorId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;

View File

@ -0,0 +1,49 @@
ALTER TABLE `AuthUserUsersRelations`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `AuthUserUsersRelations`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `AuthUserUsersRelations`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `AuthUserUsersRelationsHistory`
(
`Id` BIGINT(20) NOT NULL,
`AuthUserId` BIGINT(20) DEFAULT NULL,
`UserId` BIGINT(20) DEFAULT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_AuthUserUsersRelationsUpdate`;
CREATE TRIGGER `TR_AuthUserUsersRelationsUpdate`
AFTER UPDATE
ON `AuthUserUsersRelations`
FOR EACH ROW
BEGIN
INSERT INTO `AuthUserUsersRelationsHistory` (
`Id`, `AuthUserId`, `UserId`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.AuthUserId, OLD.UserId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_AuthUserUsersRelationsDelete`;
CREATE TRIGGER `TR_AuthUserUsersRelationsDelete`
AFTER DELETE
ON `AuthUserUsersRelations`
FOR EACH ROW
BEGIN
INSERT INTO `AuthUserUsersRelationsHistory` (
`Id`, `AuthUserId`, `UserId`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.AuthUserId, OLD.UserId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;

View File

@ -0,0 +1,65 @@
ALTER TABLE `AuthUsers`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `AuthUsers`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `AuthUsers`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `AuthUsersHistory`
(
`Id` BIGINT(20) NOT NULL,
`FirstName` VARCHAR(255) DEFAULT NULL,
`LastName` VARCHAR(255) DEFAULT NULL,
`EMail` VARCHAR(255) DEFAULT NULL,
`Password` VARCHAR(255) DEFAULT NULL,
`PasswordSalt` VARCHAR(255) DEFAULT NULL,
`RefreshToken` VARCHAR(255) DEFAULT NULL,
`ConfirmationId` VARCHAR(255) DEFAULT NULL,
`ForgotPasswordId` VARCHAR(255) DEFAULT NULL,
`OAuthId` VARCHAR(255) DEFAULT NULL,
`RefreshTokenExpiryTime` DATETIME(6) NOT NULL,
`AuthRole` BIGINT(11) NOT NULL DEFAULT 0,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_AuthUsersUpdate`;
CREATE TRIGGER `TR_AuthUsersUpdate`
AFTER UPDATE
ON `AuthUsers`
FOR EACH ROW
BEGIN
INSERT INTO `AuthUsersHistory` (
`Id`, `FirstName`, `LastName`, `EMail`, `Password`, `PasswordSalt`,
`RefreshToken`, `ConfirmationId`, `ForgotPasswordId`, `OAuthId`,
`RefreshTokenExpiryTime`, `AuthRole`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.FirstName, OLD.LastName, OLD.EMail, OLD.Password, OLD.PasswordSalt, OLD.RefreshToken,
OLD.ConfirmationId, OLD.ForgotPasswordId, OLD.OAuthId, OLD.RefreshTokenExpiryTime, OLD.AuthRole,
OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_AuthUsersDelete`;
CREATE TRIGGER `TR_AuthUsersDelete`
AFTER DELETE
ON `AuthUsers`
FOR EACH ROW
BEGIN
INSERT INTO `AuthUsersHistory` (
`Id`, `FirstName`, `LastName`, `EMail`, `Password`, `PasswordSalt`, `RefreshToken`,
`ConfirmationId`, `ForgotPasswordId`, `OAuthId`, `RefreshTokenExpiryTime`,
`AuthRole`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.Id, OLD.FirstName, OLD.LastName, OLD.EMail, OLD.Password, OLD.PasswordSalt, OLD.RefreshToken,
OLD.ConfirmationId, OLD.ForgotPasswordId, OLD.OAuthId, OLD.RefreshTokenExpiryTime, OLD.AuthRole, TRUE,
OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;

View File

@ -0,0 +1,49 @@
ALTER TABLE `AutoRoleRules`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `AutoRoleRules`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `AutoRoleRules`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `AutoRoleRulesHistory`
(
`AutoRoleRuleId` BIGINT(20) NOT NULL,
`AutoRoleId` BIGINT(20) DEFAULT NULL,
`DiscordEmojiName` VARCHAR(64) DEFAULT NULL,
`DiscordRoleId` BIGINT(20) NOT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_AutoRoleRulesUpdate`;
CREATE TRIGGER `TR_AutoRoleRulesUpdate`
AFTER UPDATE
ON `AutoRoleRules`
FOR EACH ROW
BEGIN
INSERT INTO `AutoRoleRulesHistory` (
`AutoRoleRuleId`, `AutoRoleId`, `DiscordEmojiName`, `DiscordRoleId`, `DateFrom`, `DateTo`
)
VALUES (
OLD.AutoRoleRuleId, OLD.AutoRoleId, OLD.DiscordEmojiName, OLD.DiscordRoleId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_AutoRoleRulesDelete`;
CREATE TRIGGER `TR_AutoRoleRulesDelete`
AFTER DELETE
ON `AutoRoleRules`
FOR EACH ROW
BEGIN
INSERT INTO `AutoRoleRulesHistory` (
`AutoRoleRuleId`, `AutoRoleId`, `DiscordEmojiName`, `DiscordRoleId`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.AutoRoleRuleId, OLD.AutoRoleId, OLD.DiscordEmojiName, OLD.DiscordRoleId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;

View File

@ -0,0 +1,51 @@
ALTER TABLE `AutoRoles`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `AutoRoles`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `AutoRoles`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `AutoRolesHistory`
(
`AutoRoleId` BIGINT(20) NOT NULL,
`ServerId` BIGINT(20) DEFAULT NULL,
`DiscordChannelId` BIGINT(20) NOT NULL,
`DiscordMessageId` BIGINT(20) NOT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_AutoRolesUpdate`;
CREATE TRIGGER `TR_AutoRolesUpdate`
AFTER UPDATE
ON `AutoRoles`
FOR EACH ROW
BEGIN
INSERT INTO `AutoRolesHistory` (
`AutoRoleId`, `ServerId`, `DiscordChannelId`, `DiscordMessageId`, `DateFrom`, `DateTo`
)
VALUES (
OLD.AutoRoleId, OLD.ServerId, OLD.DiscordChannelId, OLD.DiscordMessageId, OLD.LastModifiedAt,
CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_AutoRolesDelete`;
CREATE TRIGGER `TR_AutoRolesDelete`
AFTER DELETE
ON `AutoRoles`
FOR EACH ROW
BEGIN
INSERT INTO `AutoRolesHistory` (
`AutoRoleId`, `ServerId`, `DiscordChannelId`, `DiscordMessageId`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.AutoRoleId, OLD.ServerId, OLD.DiscordChannelId, OLD.DiscordMessageId, TRUE, OLD.LastModifiedAt,
CURRENT_TIMESTAMP(6)
);
END;

View File

@ -0,0 +1,57 @@
ALTER TABLE `Clients`
MODIFY `LastModifiedAt` DATETIME(6) NULL ON UPDATE CURRENT_TIMESTAMP(6);
ALTER TABLE `Clients`
ALTER COLUMN `CreatedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
ALTER TABLE `Clients`
ALTER COLUMN `LastModifiedAt` SET DEFAULT CURRENT_TIMESTAMP(6);
CREATE TABLE IF NOT EXISTS `ClientsHistory`
(
`ClientId` BIGINT(20) NOT NULL,
`DiscordClientId` BIGINT(20) NOT NULL,
`SentMessageCount` BIGINT(20) NOT NULL DEFAULT 0,
`ReceivedMessageCount` BIGINT(20) NOT NULL DEFAULT 0,
`DeletedMessageCount` BIGINT(20) NOT NULL DEFAULT 0,
`ReceivedCommandsCount` BIGINT(20) NOT NULL DEFAULT 0,
`MovedUsersCount` BIGINT(20) NOT NULL DEFAULT 0,
`ServerId` BIGINT(20) DEFAULT NULL,
`Deleted` BOOL DEFAULT FALSE,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
DROP TRIGGER IF EXISTS `TR_ClientsUpdate`;
CREATE TRIGGER `TR_ClientsUpdate`
AFTER UPDATE
ON `Clients`
FOR EACH ROW
BEGIN
INSERT INTO `ClientsHistory` (
`ClientId`, `DiscordClientId`, `SentMessageCount`, `ReceivedMessageCount`, `DeletedMessageCount`,
`ReceivedCommandsCount`, `MovedUsersCount`, `ServerId`, `DateFrom`, `DateTo`
)
VALUES (
OLD.ClientId, OLD.DiscordClientId, OLD.SentMessageCount, OLD.ReceivedMessageCount, OLD.DeletedMessageCount,
OLD.ReceivedCommandsCount, OLD.MovedUsersCount, OLD.ServerId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;
DROP TRIGGER IF EXISTS `TR_ClientsDelete`;
CREATE TRIGGER `TR_ClientsDelete`
AFTER DELETE
ON `Clients`
FOR EACH ROW
BEGIN
INSERT INTO `ClientsHistory` (
`ClientId`, `DiscordClientId`, `SentMessageCount`, `ReceivedMessageCount`, `DeletedMessageCount`,
`ReceivedCommandsCount`, `MovedUsersCount`, `ServerId`, `Deleted`, `DateFrom`, `DateTo`
)
VALUES (
OLD.ClientId, OLD.DiscordClientId, OLD.SentMessageCount, OLD.ReceivedMessageCount, OLD.DeletedMessageCount,
OLD.ReceivedCommandsCount, OLD.MovedUsersCount, OLD.ServerId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
);
END;

View File

@ -220,9 +220,7 @@ class AuthUser(TableABC):
`ForgotPasswordId`, `ForgotPasswordId`,
`OAuthId`, `OAuthId`,
`RefreshTokenExpiryTime`, `RefreshTokenExpiryTime`,
`AuthRole`, `AuthRole`
`CreatedAt`,
`LastModifiedAt`
) VALUES ( ) VALUES (
{self._auth_user_id}, {self._auth_user_id},
'{self._first_name}', '{self._first_name}',
@ -235,9 +233,7 @@ class AuthUser(TableABC):
{"NULL" if self._forgot_password_id is None else f"'{self._forgot_password_id}'"}, {"NULL" if self._forgot_password_id is None else f"'{self._forgot_password_id}'"},
{"NULL" if self._oauth_id is None else f"'{self._oauth_id}'"}, {"NULL" if self._oauth_id is None else f"'{self._oauth_id}'"},
'{self._refresh_token_expire_time.isoformat()}', '{self._refresh_token_expire_time.isoformat()}',
{self._auth_role_id.value}, {self._auth_role_id.value}
'{self._created_at}',
'{self._modified_at}'
) )
""" """
) )
@ -257,8 +253,7 @@ class AuthUser(TableABC):
`ForgotPasswordId` = {"NULL" if self._forgot_password_id is None else f"'{self._forgot_password_id}'"}, `ForgotPasswordId` = {"NULL" if self._forgot_password_id is None else f"'{self._forgot_password_id}'"},
`OAuthId` = {"NULL" if self._oauth_id is None else f"'{self._oauth_id}'"}, `OAuthId` = {"NULL" if self._oauth_id is None else f"'{self._oauth_id}'"},
`RefreshTokenExpiryTime` = '{self._refresh_token_expire_time.isoformat()}', `RefreshTokenExpiryTime` = '{self._refresh_token_expire_time.isoformat()}',
`AuthRole` = {self._auth_role_id.value}, `AuthRole` = {self._auth_role_id.value}
`LastModifiedAt` = '{self._modified_at}'
WHERE `AuthUsers`.`Id` = {self._auth_user_id}; WHERE `AuthUsers`.`Id` = {self._auth_user_id};
""" """
) )

View File

@ -68,12 +68,10 @@ class AuthUserUsersRelation(TableABC):
return str( return str(
f""" f"""
INSERT INTO `AuthUserUsersRelations` ( INSERT INTO `AuthUserUsersRelations` (
`AuthUserId`, `UserId`, `CreatedAt`, `LastModifiedAt` `AuthUserId`, `UserId`
) VALUES ( ) VALUES (
{self._auth_user.id}, {self._auth_user.id},
{self._user.id}, {self._user.id}
'{self._created_at}',
'{self._modified_at}'
); );
""" """
) )
@ -83,9 +81,8 @@ class AuthUserUsersRelation(TableABC):
return str( return str(
f""" f"""
UPDATE `AuthUserUsersRelations` UPDATE `AuthUserUsersRelations`
SET `AuthUserId` = '{self._auth_user.id}',, SET `AuthUserId` = '{self._auth_user.id}',
`UserId` = '{self._user.id}' `UserId` = '{self._user.id}'
`LastModifiedAt` = '{self._modified_at}'
WHERE `AuthUserId` = {self._auth_user.id} WHERE `AuthUserId` = {self._auth_user.id}
AND `UserId` = {self._user.id}; AND `UserId` = {self._user.id};
""" """

View File

@ -97,13 +97,11 @@ class AutoRole(TableABC):
return str( return str(
f""" f"""
INSERT INTO `AutoRoles` ( INSERT INTO `AutoRoles` (
`ServerId`, `DiscordChannelId`, `DiscordMessageId`, `CreatedAt`, `LastModifiedAt` `ServerId`, `DiscordChannelId`, `DiscordMessageId`
) VALUES ( ) VALUES (
{self._server.id}, {self._server.id},
{self._discord_channel_id}, {self._discord_channel_id},
{self._discord_message_id}, {self._discord_message_id}
'{self._created_at}',
'{self._modified_at}'
); );
""" """
) )
@ -115,8 +113,7 @@ class AutoRole(TableABC):
UPDATE `AutoRoles` UPDATE `AutoRoles`
SET `ServerId` = {self._server.id}, SET `ServerId` = {self._server.id},
`DiscordChannelId` = {self._discord_channel_id}, `DiscordChannelId` = {self._discord_channel_id},
`DiscordMessageId` = {self._discord_message_id}, `DiscordMessageId` = {self._discord_message_id}
`LastModifiedAt` = '{self._modified_at}'
WHERE `AutoRoleId` = {self._auto_role_id}; WHERE `AutoRoleId` = {self._auto_role_id};
""" """
) )

View File

@ -87,13 +87,11 @@ class AutoRoleRule(TableABC):
return str( return str(
f""" f"""
INSERT INTO `AutoRoleRules` ( INSERT INTO `AutoRoleRules` (
`AutoRoleId`, `DiscordEmojiName`, `DiscordRoleId`, `CreatedAt`, `LastModifiedAt` `AutoRoleId`, `DiscordEmojiName`, `DiscordRoleId`
) VALUES ( ) VALUES (
{self._auto_role.id}, {self._auto_role.id},
'{self._discord_emoji_name}', '{self._discord_emoji_name}',
{self._discord_role_id}, {self._discord_role_id}
'{self._created_at}',
'{self._modified_at}'
); );
""" """
) )
@ -105,8 +103,7 @@ class AutoRoleRule(TableABC):
UPDATE `AutoRoleRules` UPDATE `AutoRoleRules`
SET `AutoRoleId` = {self._auto_role.id}, SET `AutoRoleId` = {self._auto_role.id},
`DiscordEmojiName` = '{self._discord_emoji_name}', `DiscordEmojiName` = '{self._discord_emoji_name}',
`DiscordRoleId` = {self._discord_role_id}, `DiscordRoleId` = {self._discord_role_id}
`LastModifiedAt` = '{self._modified_at}'
WHERE `AutoRoleRuleId` = {self._auto_role_rule_id}; WHERE `AutoRoleRuleId` = {self._auto_role_rule_id};
""" """
) )

View File

@ -153,8 +153,6 @@ class Client(TableABC):
`ReceivedCommandsCount`, `ReceivedCommandsCount`,
`MovedUsersCount`, `MovedUsersCount`,
`ServerId`, `ServerId`,
`CreatedAt`,
`LastModifiedAt`
) VALUES ( ) VALUES (
{self._discord_client_id}, {self._discord_client_id},
{self._sent_message_count}, {self._sent_message_count},
@ -162,9 +160,7 @@ class Client(TableABC):
{self._deleted_message_count}, {self._deleted_message_count},
{self._received_message_count}, {self._received_message_count},
{self._moved_users_count}, {self._moved_users_count},
{self._server.id}, {self._server.id}
'{self._created_at}',
'{self._modified_at}'
); );
""" """
) )