Als Nutzer möchte ich Datenänderungen nach verfolgen können #246 #248

Merged
Jonas merged 17 commits from #246 into 1.0.0 2023-03-14 18:31:37 +01:00
13 changed files with 424 additions and 248 deletions
Showing only changes of commit d24d3fa4de - Show all commits

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.auto_role_fix1_migration import AutoRoleFix1Migration
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.level_migration import LevelMigration
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, RemoveStatsMigration) # 19.02.2023 #190 - 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_data.abc.migration_abc import MigrationABC
from bot_data.db_context import DBContext
@ -12,150 +14,17 @@ class DBHistoryMigration(MigrationABC):
self._db = db
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):
self._cursor.execute(
f"""
CREATE TABLE IF NOT EXISTS `GameServersHistory`
(
`Id` bigint(20) NOT NULL,
`Name` varchar(255) NOT NULL,
`ServerId` bigint(20) NOT NULL,
`ApiKeyId` bigint(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`Name` VARCHAR(255) NOT NULL,
`ServerId` BIGINT(20) NOT NULL,
`ApiKeyId` BIGINT(20) NOT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -165,10 +34,10 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `KnownUsersHistory`
(
`KnownUserId` bigint(20) NOT NULL,
`DiscordId` bigint(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`KnownUserId` BIGINT(20) NOT NULL,
`DiscordId` BIGINT(20) NOT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -178,14 +47,14 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `LevelsHistory`
(
`Id` bigint(20) NOT NULL,
`Name` varchar(255) NOT NULL,
`Color` varchar(8) NOT NULL,
`MinXp` bigint(20) NOT NULL,
`PermissionInt` bigint(20) NOT NULL,
`ServerId` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`Name` VARCHAR(255) NOT NULL,
`Color` VARCHAR(8) NOT NULL,
`MinXp` BIGINT(20) NOT NULL,
`PermissionInt` BIGINT(20) NOT NULL,
`ServerId` BIGINT(20) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -195,10 +64,10 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `ServersHistory`
(
`ServerId` bigint(20) NOT NULL,
`DiscordServerId` bigint(20) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`ServerId` BIGINT(20) NOT NULL,
`DiscordServerId` BIGINT(20) NOT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -208,12 +77,12 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserGameIdentsHistory`
(
`Id` bigint(20) NOT NULL,
`UserId` bigint(20) NOT NULL,
`GameServerId` bigint(20) NOT NULL,
`Ident` varchar(255) NOT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`UserId` BIGINT(20) NOT NULL,
`GameServerId` BIGINT(20) NOT NULL,
`Ident` VARCHAR(255) NOT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -223,13 +92,13 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserJoinedGameServerHistory`
(
`Id` bigint(20) NOT NULL,
`UserId` bigint(20) NOT NULL,
`GameServerId` bigint(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`UserId` BIGINT(20) NOT NULL,
`GameServerId` BIGINT(20) NOT NULL,
`JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -239,12 +108,12 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserJoinedServersHistory`
(
`JoinId` bigint(20) NOT NULL,
`UserId` bigint(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`JoinId` BIGINT(20) NOT NULL,
`UserId` BIGINT(20) NOT NULL,
`JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -254,13 +123,13 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserJoinedVoiceChannelHistory`
(
`JoinId` bigint(20) NOT NULL,
`UserId` bigint(20) NOT NULL,
`DiscordChannelId` bigint(20) NOT NULL,
`JoinedOn` datetime(6) NOT NULL,
`LeavedOn` datetime(6) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`JoinId` BIGINT(20) NOT NULL,
`UserId` BIGINT(20) NOT NULL,
`DiscordChannelId` BIGINT(20) NOT NULL,
`JoinedOn` DATETIME(6) NOT NULL,
`LeavedOn` DATETIME(6) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -270,13 +139,13 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserMessageCountPerHourHistory`
(
`Id` bigint(20) NOT NULL,
`Date` datetime(6) NOT NULL,
`Hour` bigint(20) DEFAULT NULL,
`XPCount` bigint(20) DEFAULT NULL,
`UserId` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`Date` DATETIME(6) NOT NULL,
`Hour` BIGINT(20) DEFAULT NULL,
`XPCount` BIGINT(20) DEFAULT NULL,
`UserId` BIGINT(20) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -286,12 +155,12 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UsersHistory`
(
`UserId` bigint(20) NOT NULL,
`DiscordId` bigint(20) NOT NULL,
`XP` bigint(20) NOT NULL DEFAULT 0,
`ServerId` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`UserId` BIGINT(20) NOT NULL,
`DiscordId` BIGINT(20) NOT NULL,
`XP` BIGINT(20) NOT NULL DEFAULT 0,
`ServerId` BIGINT(20) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -301,12 +170,12 @@ class DBHistoryMigration(MigrationABC):
f"""
CREATE TABLE IF NOT EXISTS `UserWarningsHistory`
(
`Id` bigint(20) NOT NULL,
`Description` varchar(255) NOT NULL,
`UserId` bigint(20) NOT NULL,
`Author` bigint(20) DEFAULT NULL,
`DateFrom` datetime(6) NOT NULL,
`DateTo` datetime(6) NOT NULL
`Id` BIGINT(20) NOT NULL,
`Description` VARCHAR(255) NOT NULL,
`UserId` BIGINT(20) NOT NULL,
`Author` BIGINT(20) DEFAULT NULL,
`DateFrom` DATETIME(6) NOT NULL,
`DateTo` DATETIME(6) NOT NULL
);
"""
)
@ -314,23 +183,26 @@ class DBHistoryMigration(MigrationABC):
def upgrade(self):
self._logger.debug(__name__, "Running upgrade")
self._api_keys()
self._auth_users()
self._auth_user_users_relation()
self._auto_role_rules()
self._auto_roles()
self._clients_history()
self._game_servers()
self._known_users()
self._levels()
self._servers()
self._user_game_idents()
self._user_joined_game_server()
self._user_joined_server()
self._user_joined_voice_channel()
self._user_message_count_per_hour()
self._users()
self._user_warnings()
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/api_keys.sql").read()
)
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auth_users.sql").read()
)
self._cursor.execute(
open(
f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auth_user_users_relation.sql"
).read()
)
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auto_role_rules.sql").read()
)
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/auto_roles.sql").read()
)
self._cursor.execute(
open(f"{os.path.dirname(os.path.realpath(__file__))}/db_history_scripts/clients.sql").read()
)
def downgrade(self):
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`,
`OAuthId`,
`RefreshTokenExpiryTime`,
`AuthRole`,
`CreatedAt`,
`LastModifiedAt`
`AuthRole`
) VALUES (
{self._auth_user_id},
'{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._oauth_id is None else f"'{self._oauth_id}'"},
'{self._refresh_token_expire_time.isoformat()}',
{self._auth_role_id.value},
'{self._created_at}',
'{self._modified_at}'
{self._auth_role_id.value}
)
"""
)
@ -257,8 +253,7 @@ class AuthUser(TableABC):
`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}'"},
`RefreshTokenExpiryTime` = '{self._refresh_token_expire_time.isoformat()}',
`AuthRole` = {self._auth_role_id.value},
`LastModifiedAt` = '{self._modified_at}'
`AuthRole` = {self._auth_role_id.value}
WHERE `AuthUsers`.`Id` = {self._auth_user_id};
"""
)

View File

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

View File

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

View File

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

View File

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