Compare commits
No commits in common. "db61a764eb135a40ea97bf1875750367bd03d49c" and "5de67102612010b0cb00b9de6284abed7d021381" have entirely different histories.
db61a764eb
...
5de6710261
@ -21,8 +21,7 @@
|
|||||||
"checks": "tools/checks/checks.json",
|
"checks": "tools/checks/checks.json",
|
||||||
"get-version": "tools/get_version/get-version.json",
|
"get-version": "tools/get_version/get-version.json",
|
||||||
"post-build": "tools/post_build/post-build.json",
|
"post-build": "tools/post_build/post-build.json",
|
||||||
"set-version": "tools/set_version/set-version.json",
|
"set-version": "tools/set_version/set-version.json"
|
||||||
"migration-to-sql": "tools/migration_to_sql/migration-to-sql.json"
|
|
||||||
},
|
},
|
||||||
"Scripts": {
|
"Scripts": {
|
||||||
"format": "black ./",
|
"format": "black ./",
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
0
bot/src/bot/bot
Executable file → Normal file
0
bot/src/bot/bot
Executable file → Normal file
@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "2",
|
"Minor": "2",
|
||||||
"Micro": "2"
|
"Micro": "1"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
@ -37,8 +37,7 @@
|
|||||||
],
|
],
|
||||||
"DevDependencies": [
|
"DevDependencies": [
|
||||||
"cpl-cli==2023.4.0.post3",
|
"cpl-cli==2023.4.0.post3",
|
||||||
"pygount==1.6.1",
|
"pygount==1.6.1"
|
||||||
"black==23.10.1"
|
|
||||||
],
|
],
|
||||||
"PythonVersion": ">=3.10.4",
|
"PythonVersion": ">=3.10.4",
|
||||||
"PythonPath": {},
|
"PythonPath": {},
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot.extension"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
from cpl_core.application.application_extension_abc import ApplicationExtensionABC
|
|
||||||
from cpl_core.configuration import ConfigurationABC
|
|
||||||
from cpl_core.dependency_injection import ServiceProviderABC
|
|
||||||
from cpl_query.extension import List
|
|
||||||
|
|
||||||
|
|
||||||
class CleanLogsExtension(ApplicationExtensionABC):
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
async def run(self, config: ConfigurationABC, services: ServiceProviderABC):
|
|
||||||
(
|
|
||||||
List(str, os.listdir("logs/"))
|
|
||||||
.where(lambda x: os.path.isdir(f"logs/{x}"))
|
|
||||||
.order_by()
|
|
||||||
.where(lambda x: (datetime.now() - datetime.strptime(x, "%Y-%m-%d")).days >= 7)
|
|
||||||
.for_each(lambda x: shutil.rmtree(f"logs/{x}"))
|
|
||||||
)
|
|
@ -6,7 +6,6 @@ from cpl_core.application import ApplicationBuilder
|
|||||||
from cpl_core.console import Console
|
from cpl_core.console import Console
|
||||||
|
|
||||||
from bot.application import Application
|
from bot.application import Application
|
||||||
from bot.extension.clean_logs_extension import CleanLogsExtension
|
|
||||||
from bot.extension.init_bot_extension import InitBotExtension
|
from bot.extension.init_bot_extension import InitBotExtension
|
||||||
from bot.startup import Startup
|
from bot.startup import Startup
|
||||||
from bot.startup_discord_extension import StartupDiscordExtension
|
from bot.startup_discord_extension import StartupDiscordExtension
|
||||||
@ -32,7 +31,6 @@ class Program:
|
|||||||
.use_extension(StartupDiscordExtension)
|
.use_extension(StartupDiscordExtension)
|
||||||
.use_extension(StartupModuleExtension)
|
.use_extension(StartupModuleExtension)
|
||||||
.use_extension(StartupMigrationExtension)
|
.use_extension(StartupMigrationExtension)
|
||||||
.use_extension(CleanLogsExtension)
|
|
||||||
.use_extension(DatabaseExtension)
|
.use_extension(DatabaseExtension)
|
||||||
.use_extension(ConfigExtension)
|
.use_extension(ConfigExtension)
|
||||||
.use_extension(InitBotExtension)
|
.use_extension(InitBotExtension)
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "2",
|
"Minor": "2",
|
||||||
"Micro": "2"
|
"Micro": "1"
|
||||||
},
|
},
|
||||||
"Author": "",
|
"Author": "",
|
||||||
"AuthorEmail": "",
|
"AuthorEmail": "",
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.configuration"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.controller"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -14,10 +14,7 @@ from bot_api.model.reset_password_dto import ResetPasswordDTO
|
|||||||
from bot_api.model.token_dto import TokenDTO
|
from bot_api.model.token_dto import TokenDTO
|
||||||
from bot_api.model.update_auth_user_dto import UpdateAuthUserDTO
|
from bot_api.model.update_auth_user_dto import UpdateAuthUserDTO
|
||||||
from bot_api.route.route import Route
|
from bot_api.route.route import Route
|
||||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
|
||||||
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
|
|
||||||
from bot_data.model.auth_role_enum import AuthRoleEnum
|
from bot_data.model.auth_role_enum import AuthRoleEnum
|
||||||
from bot_data.model.technician_config import TechnicianConfig
|
|
||||||
|
|
||||||
|
|
||||||
class AuthController:
|
class AuthController:
|
||||||
@ -33,7 +30,6 @@ class AuthController:
|
|||||||
mail_settings: EMailClientSettings,
|
mail_settings: EMailClientSettings,
|
||||||
mailer: EMailClientABC,
|
mailer: EMailClientABC,
|
||||||
auth_service: AuthServiceABC,
|
auth_service: AuthServiceABC,
|
||||||
technician_config: TechnicianConfig,
|
|
||||||
):
|
):
|
||||||
self._config = config
|
self._config = config
|
||||||
self._env = env
|
self._env = env
|
||||||
@ -43,7 +39,6 @@ class AuthController:
|
|||||||
self._mail_settings = mail_settings
|
self._mail_settings = mail_settings
|
||||||
self._mailer = mailer
|
self._mailer = mailer
|
||||||
self._auth_service = auth_service
|
self._auth_service = auth_service
|
||||||
self._technician_config = technician_config
|
|
||||||
|
|
||||||
@Route.get(f"{BasePath}/users")
|
@Route.get(f"{BasePath}/users")
|
||||||
@Route.authorize(role=AuthRoleEnum.admin)
|
@Route.authorize(role=AuthRoleEnum.admin)
|
||||||
@ -75,32 +70,17 @@ class AuthController:
|
|||||||
|
|
||||||
@Route.post(f"{BasePath}/register")
|
@Route.post(f"{BasePath}/register")
|
||||||
async def register(self):
|
async def register(self):
|
||||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
|
||||||
self._technician_config.feature_flags, FeatureFlagsEnum.basic_registration
|
|
||||||
):
|
|
||||||
return
|
|
||||||
|
|
||||||
dto: AuthUserDTO = JSONProcessor.process(AuthUserDTO, request.get_json(force=True, silent=True))
|
dto: AuthUserDTO = JSONProcessor.process(AuthUserDTO, request.get_json(force=True, silent=True))
|
||||||
self._auth_service.add_auth_user(dto)
|
self._auth_service.add_auth_user(dto)
|
||||||
return "", 200
|
return "", 200
|
||||||
|
|
||||||
@Route.post(f"{BasePath}/register-by-id/<id>")
|
@Route.post(f"{BasePath}/register-by-id/<id>")
|
||||||
async def register_id(self, id: str):
|
async def register_id(self, id: str):
|
||||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
|
||||||
self._technician_config.feature_flags, FeatureFlagsEnum.basic_registration
|
|
||||||
):
|
|
||||||
return
|
|
||||||
|
|
||||||
result = await self._auth_service.confirm_email_async(id)
|
result = await self._auth_service.confirm_email_async(id)
|
||||||
return jsonify(result)
|
return jsonify(result)
|
||||||
|
|
||||||
@Route.post(f"{BasePath}/login")
|
@Route.post(f"{BasePath}/login")
|
||||||
async def login(self) -> Response:
|
async def login(self) -> Response:
|
||||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
|
||||||
self._technician_config.feature_flags, FeatureFlagsEnum.basic_login
|
|
||||||
):
|
|
||||||
return jsonify({})
|
|
||||||
|
|
||||||
dto: AuthUserDTO = JSONProcessor.process(AuthUserDTO, request.get_json(force=True, silent=True))
|
dto: AuthUserDTO = JSONProcessor.process(AuthUserDTO, request.get_json(force=True, silent=True))
|
||||||
result = await self._auth_service.login_async(dto)
|
result = await self._auth_service.login_async(dto)
|
||||||
return jsonify(result.to_dict())
|
return jsonify(result.to_dict())
|
||||||
@ -120,11 +100,6 @@ class AuthController:
|
|||||||
|
|
||||||
@Route.post(f"{BasePath}/forgot-password/<email>")
|
@Route.post(f"{BasePath}/forgot-password/<email>")
|
||||||
async def forgot_password(self, email: str):
|
async def forgot_password(self, email: str):
|
||||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
|
||||||
self._technician_config.feature_flags, FeatureFlagsEnum.basic_login
|
|
||||||
):
|
|
||||||
return "", 409
|
|
||||||
|
|
||||||
await self._auth_service.forgot_password_async(email)
|
await self._auth_service.forgot_password_async(email)
|
||||||
return "", 200
|
return "", 200
|
||||||
|
|
||||||
@ -135,11 +110,6 @@ class AuthController:
|
|||||||
|
|
||||||
@Route.post(f"{BasePath}/reset-password")
|
@Route.post(f"{BasePath}/reset-password")
|
||||||
async def reset_password(self):
|
async def reset_password(self):
|
||||||
if not FeatureFlagsSettings.get_flag_from_dict(
|
|
||||||
self._technician_config.feature_flags, FeatureFlagsEnum.basic_login
|
|
||||||
):
|
|
||||||
return "", 409
|
|
||||||
|
|
||||||
dto: ResetPasswordDTO = JSONProcessor.process(ResetPasswordDTO, request.get_json(force=True, silent=True))
|
dto: ResetPasswordDTO = JSONProcessor.process(ResetPasswordDTO, request.get_json(force=True, silent=True))
|
||||||
await self._auth_service.reset_password_async(dto)
|
await self._auth_service.reset_password_async(dto)
|
||||||
return "", 200
|
return "", 200
|
||||||
|
@ -12,9 +12,6 @@ from bot_api.logging.api_logger import ApiLogger
|
|||||||
from bot_api.model.settings_dto import SettingsDTO
|
from bot_api.model.settings_dto import SettingsDTO
|
||||||
from bot_api.model.version_dto import VersionDTO
|
from bot_api.model.version_dto import VersionDTO
|
||||||
from bot_api.route.route import Route
|
from bot_api.route.route import Route
|
||||||
from bot_core.configuration.feature_flags_enum import FeatureFlagsEnum
|
|
||||||
from bot_core.configuration.feature_flags_settings import FeatureFlagsSettings
|
|
||||||
from bot_data.model.technician_config import TechnicianConfig
|
|
||||||
|
|
||||||
|
|
||||||
class GuiController:
|
class GuiController:
|
||||||
@ -85,11 +82,3 @@ class GuiController:
|
|||||||
)
|
)
|
||||||
self._mailer.send_mail(mail)
|
self._mailer.send_mail(mail)
|
||||||
return "", 200
|
return "", 200
|
||||||
|
|
||||||
@Route.get(f"{BasePath}/has-feature-flag/<flag>")
|
|
||||||
async def has_feature_flag(self, flag: str):
|
|
||||||
settings: TechnicianConfig = self._config.get_configuration(TechnicianConfig)
|
|
||||||
return {
|
|
||||||
"key": flag,
|
|
||||||
"value": FeatureFlagsSettings.get_flag_from_dict(settings.feature_flags, FeatureFlagsEnum(flag)),
|
|
||||||
}
|
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.event"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.exception"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.filter"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.filter.discord"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.logging"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.model.discord"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.route"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.service"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_api.transformer"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -21,7 +21,7 @@ class TaskABC(commands.Cog):
|
|||||||
|
|
||||||
@ServiceProviderABC.inject
|
@ServiceProviderABC.inject
|
||||||
async def _wait_until_ready(self, config: ConfigurationABC, logger: TaskLogger, bot: DiscordBotServiceABC):
|
async def _wait_until_ready(self, config: ConfigurationABC, logger: TaskLogger, bot: DiscordBotServiceABC):
|
||||||
logger.debug(__name__, f"Waiting before ready {type(self).__name__}")
|
logger.debug(__name__, f"Waiting before {type(self).__name__}")
|
||||||
await bot.wait_until_ready()
|
await bot.wait_until_ready()
|
||||||
|
|
||||||
async def wait():
|
async def wait():
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "2",
|
"Minor": "2",
|
||||||
"Micro": "2"
|
"Micro": "1"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.configuration"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -27,6 +27,3 @@ class FeatureFlagsEnum(Enum):
|
|||||||
short_role_name = "ShortRoleName"
|
short_role_name = "ShortRoleName"
|
||||||
technician_full_access = "TechnicianFullAccess"
|
technician_full_access = "TechnicianFullAccess"
|
||||||
steam_special_offers = "SteamSpecialOffers"
|
steam_special_offers = "SteamSpecialOffers"
|
||||||
scheduled_events = "ScheduledEvents"
|
|
||||||
basic_registration = "BasicRegistration"
|
|
||||||
basic_login = "BasicLogin"
|
|
||||||
|
@ -29,9 +29,6 @@ class FeatureFlagsSettings(ConfigurationModelABC):
|
|||||||
FeatureFlagsEnum.short_role_name.value: False, # 28.09.2023 #378
|
FeatureFlagsEnum.short_role_name.value: False, # 28.09.2023 #378
|
||||||
FeatureFlagsEnum.technician_full_access.value: False, # 03.10.2023 #393
|
FeatureFlagsEnum.technician_full_access.value: False, # 03.10.2023 #393
|
||||||
FeatureFlagsEnum.steam_special_offers.value: False, # 11.10.2023 #188
|
FeatureFlagsEnum.steam_special_offers.value: False, # 11.10.2023 #188
|
||||||
FeatureFlagsEnum.scheduled_events.value: False, # 14.11.2023 #410
|
|
||||||
FeatureFlagsEnum.basic_registration.value: False, # 19.11.2023 #440
|
|
||||||
FeatureFlagsEnum.basic_login.value: False, # 19.11.2023 #440
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, **kwargs: dict):
|
def __init__(self, **kwargs: dict):
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.core_extension"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.events"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.exception"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.helper"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.logging"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.pipes"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_core.service"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports:
|
# imports:
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -92,7 +92,7 @@ class DataIntegrityService:
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._logger.error(__name__, f"Cannot get user", e)
|
self._logger.error(__name__, f"Cannot get user", e)
|
||||||
|
|
||||||
def check_servers(self):
|
def _check_servers(self):
|
||||||
self._logger.debug(__name__, f"Start checking Servers table")
|
self._logger.debug(__name__, f"Start checking Servers table")
|
||||||
for g in self._bot.guilds:
|
for g in self._bot.guilds:
|
||||||
g: discord.Guild = g
|
g: discord.Guild = g
|
||||||
@ -411,7 +411,7 @@ class DataIntegrityService:
|
|||||||
|
|
||||||
await self._check_default_role()
|
await self._check_default_role()
|
||||||
self._check_known_users()
|
self._check_known_users()
|
||||||
self.check_servers()
|
self._check_servers()
|
||||||
self._check_clients()
|
self._check_clients()
|
||||||
self._check_users()
|
self._check_users()
|
||||||
self._check_user_joins()
|
self._check_user_joins()
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_data"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -15,7 +15,7 @@ __title__ = "bot_data.abc"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
from abc import ABC, abstractmethod
|
|
||||||
|
|
||||||
from cpl_query.extension import List
|
|
||||||
|
|
||||||
from bot_data.model.scheduled_event import ScheduledEvent
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledEventRepositoryABC(ABC):
|
|
||||||
@abstractmethod
|
|
||||||
def __init__(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def get_scheduled_events(self) -> List[ScheduledEvent]:
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def get_scheduled_event_by_id(self, id: int) -> ScheduledEvent:
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def get_scheduled_events_by_server_id(self, id: int) -> List[ScheduledEvent]:
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def add_scheduled_event(self, scheduled_event: ScheduledEvent):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def update_scheduled_event(self, scheduled_event: ScheduledEvent):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@abstractmethod
|
|
||||||
def delete_scheduled_event(self, scheduled_event: ScheduledEvent):
|
|
||||||
pass
|
|
@ -4,7 +4,7 @@
|
|||||||
"Version": {
|
"Version": {
|
||||||
"Major": "1",
|
"Major": "1",
|
||||||
"Minor": "2",
|
"Minor": "2",
|
||||||
"Micro": "2"
|
"Micro": "1"
|
||||||
},
|
},
|
||||||
"Author": "Sven Heidemann",
|
"Author": "Sven Heidemann",
|
||||||
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
"AuthorEmail": "sven.heidemann@sh-edraft.de",
|
||||||
|
@ -14,7 +14,6 @@ from bot_data.abc.data_seeder_abc import DataSeederABC
|
|||||||
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
from bot_data.abc.game_server_repository_abc import GameServerRepositoryABC
|
||||||
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
from bot_data.abc.known_user_repository_abc import KnownUserRepositoryABC
|
||||||
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
from bot_data.abc.level_repository_abc import LevelRepositoryABC
|
||||||
from bot_data.abc.scheduled_event_repository_abc import ScheduledEventRepositoryABC
|
|
||||||
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
from bot_data.abc.server_config_repository_abc import ServerConfigRepositoryABC
|
||||||
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
from bot_data.abc.server_repository_abc import ServerRepositoryABC
|
||||||
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
from bot_data.abc.short_role_name_repository_abc import ShortRoleNameRepositoryABC
|
||||||
@ -46,7 +45,6 @@ from bot_data.service.client_repository_service import ClientRepositoryService
|
|||||||
from bot_data.service.game_server_repository_service import GameServerRepositoryService
|
from bot_data.service.game_server_repository_service import GameServerRepositoryService
|
||||||
from bot_data.service.known_user_repository_service import KnownUserRepositoryService
|
from bot_data.service.known_user_repository_service import KnownUserRepositoryService
|
||||||
from bot_data.service.level_repository_service import LevelRepositoryService
|
from bot_data.service.level_repository_service import LevelRepositoryService
|
||||||
from bot_data.service.scheduled_event_repository_service import ScheduledEventRepositoryService
|
|
||||||
from bot_data.service.seeder_service import SeederService
|
from bot_data.service.seeder_service import SeederService
|
||||||
from bot_data.service.server_config_repository_service import (
|
from bot_data.service.server_config_repository_service import (
|
||||||
ServerConfigRepositoryService,
|
ServerConfigRepositoryService,
|
||||||
@ -117,7 +115,6 @@ class DataModule(ModuleABC):
|
|||||||
services.add_transient(ServerConfigRepositoryABC, ServerConfigRepositoryService)
|
services.add_transient(ServerConfigRepositoryABC, ServerConfigRepositoryService)
|
||||||
services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService)
|
services.add_transient(ShortRoleNameRepositoryABC, ShortRoleNameRepositoryService)
|
||||||
services.add_transient(SteamSpecialOfferRepositoryABC, SteamSpecialOfferRepositoryService)
|
services.add_transient(SteamSpecialOfferRepositoryABC, SteamSpecialOfferRepositoryService)
|
||||||
services.add_transient(ScheduledEventRepositoryABC, ScheduledEventRepositoryService)
|
|
||||||
|
|
||||||
services.add_transient(SeederService)
|
services.add_transient(SeederService)
|
||||||
services.add_transient(DataSeederABC, TechnicianConfigSeeder)
|
services.add_transient(DataSeederABC, TechnicianConfigSeeder)
|
||||||
|
@ -11,16 +11,16 @@ Discord bot for customers of sh-edraft.de
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
__title__ = "modules.base.tasks"
|
__title__ = "bot_data.migration"
|
||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
|
|
||||||
# imports:
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
127
bot/src/bot_data/migration/achievements_migration.py
Normal file
127
bot/src/bot_data/migration/achievements_migration.py
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class AchievementsMigration(MigrationABC):
|
||||||
|
name = "1.1.0_AchievementsMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Achievements` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`Description` VARCHAR(255) NOT NULL,
|
||||||
|
`Attribute` VARCHAR(255) NOT NULL,
|
||||||
|
`Operator` VARCHAR(255) NOT NULL,
|
||||||
|
`Value` VARCHAR(255) NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `AchievementsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`Description` VARCHAR(255) NOT NULL,
|
||||||
|
`Attribute` VARCHAR(255) NOT NULL,
|
||||||
|
`Operator` VARCHAR(255) NOT NULL,
|
||||||
|
`Value` VARCHAR(255) NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserGotAchievements` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`UserId` BIGINT,
|
||||||
|
`AchievementId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES `Users`(`UserId`),
|
||||||
|
FOREIGN KEY (`AchievementId`) REFERENCES `Achievements`(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
# A join table history between users and achievements is not necessary.
|
||||||
|
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE Users ADD MessageCount BIGINT NOT NULL DEFAULT 0 AFTER XP;"""))
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE Users ADD ReactionCount BIGINT NOT NULL DEFAULT 0 AFTER XP;"""))
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE UsersHistory ADD MessageCount BIGINT NOT NULL DEFAULT 0 AFTER XP;"""))
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE UsersHistory ADD ReactionCount BIGINT NOT NULL DEFAULT 0 AFTER XP;"""))
|
||||||
|
|
||||||
|
self._cursor.execute(str(f"""DROP TRIGGER IF EXISTS `TR_AchievementsUpdate`;"""))
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TRIGGER `TR_AchievementsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `Achievements`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `AchievementsHistory` (
|
||||||
|
`Id`, `Name`, `Description`, `Attribute`, `Operator`, `Value`, `ServerId`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.Description, OLD.Attribute, OLD.Operator, OLD.Value, OLD.ServerId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(str(f"""DROP TRIGGER IF EXISTS `TR_AchievementsDelete`;"""))
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TRIGGER `TR_AchievementsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `Achievements`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `AchievementsHistory` (
|
||||||
|
`Id`, `Name`, `Description`, `Attribute`, `Operator`, `Value`, `ServerId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.Description, OLD.Attribute, OLD.Operator, OLD.Value, OLD.ServerId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `Achievements`;")
|
||||||
|
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE Users DROP COLUMN MessageCount;"""))
|
||||||
|
self._cursor.execute(str(f"""ALTER TABLE Users DROP COLUMN ReactionCount;"""))
|
38
bot/src/bot_data/migration/api_key_migration.py
Normal file
38
bot/src/bot_data/migration/api_key_migration.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ApiKeyMigration(MigrationABC):
|
||||||
|
name = "1.0.0_ApiKeyMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `ApiKeys` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Identifier` VARCHAR(255) NOT NULL,
|
||||||
|
`Key` VARCHAR(255) NOT NULL,
|
||||||
|
`CreatorId` BIGINT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`CreatorId`) REFERENCES `Users`(`UserId`),
|
||||||
|
CONSTRAINT UC_Identifier_Key UNIQUE (`Identifier`,`Key`),
|
||||||
|
CONSTRAINT UC_Key UNIQUE (`Key`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `ApiKeys`;")
|
61
bot/src/bot_data/migration/api_migration.py
Normal file
61
bot/src/bot_data/migration/api_migration.py
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ApiMigration(MigrationABC):
|
||||||
|
name = "0.3_ApiMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `AuthUsers` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`FirstName` VARCHAR(255),
|
||||||
|
`LastName` VARCHAR(255),
|
||||||
|
`EMail` VARCHAR(255),
|
||||||
|
`Password` VARCHAR(255),
|
||||||
|
`PasswordSalt` VARCHAR(255),
|
||||||
|
`RefreshToken` VARCHAR(255),
|
||||||
|
`ConfirmationId` VARCHAR(255) DEFAULT NULL,
|
||||||
|
`ForgotPasswordId` VARCHAR(255) DEFAULT NULL,
|
||||||
|
`OAuthId` VARCHAR(255) DEFAULT NULL,
|
||||||
|
`RefreshTokenExpiryTime` DATETIME(6) NOT NULL,
|
||||||
|
`AuthRole` INT NOT NULL DEFAULT 0,
|
||||||
|
`CreatedAt` DATETIME(6) NOT NULL,
|
||||||
|
`LastModifiedAt` DATETIME(6) NOT NULL,
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `AuthUserUsersRelations`(
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`AuthUserId` BIGINT DEFAULT NULL,
|
||||||
|
`UserId` BIGINT DEFAULT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NOT NULL,
|
||||||
|
`LastModifiedAt` DATETIME(6) NOT NULL,
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`AuthUserId`) REFERENCES `AuthUsers`(`Id`),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES `Users`(`UserId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `AuthUsers`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AuthUserUsersRelations`;")
|
33
bot/src/bot_data/migration/auto_role_fix1_migration.py
Normal file
33
bot/src/bot_data/migration/auto_role_fix1_migration.py
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class AutoRoleFix1Migration(MigrationABC):
|
||||||
|
name = "0.3.0_AutoRoleFixMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE AutoRoles ADD DiscordChannelId BIGINT NOT NULL AFTER ServerId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE AutoRoles DROP COLUMN DiscordChannelId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
53
bot/src/bot_data/migration/auto_role_migration.py
Normal file
53
bot/src/bot_data/migration/auto_role_migration.py
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class AutoRoleMigration(MigrationABC):
|
||||||
|
name = "0.2.1_AutoRoleMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `AutoRoles` (
|
||||||
|
`AutoRoleId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`DiscordMessageId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`AutoRoleId`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `AutoRoleRules` (
|
||||||
|
`AutoRoleRuleId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`AutoRoleId` BIGINT,
|
||||||
|
`DiscordEmojiName` VARCHAR(64),
|
||||||
|
`DiscordRoleId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`AutoRoleRuleId`),
|
||||||
|
FOREIGN KEY (`AutoRoleId`) REFERENCES `AutoRoles`(`AutoRoleId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `AutoRole`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AutoRoleRules`;")
|
84
bot/src/bot_data/migration/birthday_migration.py
Normal file
84
bot/src/bot_data/migration/birthday_migration.py
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class BirthdayMigration(MigrationABC):
|
||||||
|
name = "1.2.0_BirthdayMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE Users
|
||||||
|
ADD Birthday DATE NULL AFTER MessageCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE UsersHistory
|
||||||
|
ADD Birthday DATE NULL AFTER MessageCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "users.sql")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server
|
||||||
|
ADD XpForBirthday BIGINT(20) NOT NULL DEFAULT 0 AFTER XpPerAchievement;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD XpForBirthday BIGINT(20) NOT NULL DEFAULT 0 AFTER XpPerAchievement;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE Users DROP COLUMN Birthday;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE UsersHistory DROP COLUMN Birthday;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN XpForBirthday;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN XpForBirthday;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
29
bot/src/bot_data/migration/config_feature_flags_migration.py
Normal file
29
bot/src/bot_data/migration/config_feature_flags_migration.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigFeatureFlagsMigration(MigrationABC):
|
||||||
|
name = "1.1.0_ConfigFeatureFlagsMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str("""ALTER TABLE CFG_Technician ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER CacheMaxMessages;""")
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str("""ALTER TABLE CFG_Server ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER LoginMessageChannelId;""")
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running downgrade")
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_Technician DROP COLUMN FeatureFlags;")
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_Server DROP COLUMN FeatureFlags;")
|
145
bot/src/bot_data/migration/config_migration.py
Normal file
145
bot/src/bot_data/migration/config_migration.py
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ConfigMigration(MigrationABC):
|
||||||
|
name = "1.1.0_ConfigMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
self._server_upgrade()
|
||||||
|
self._technician_upgrade()
|
||||||
|
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
self._exec(__file__, "config/server_afk_channels.sql")
|
||||||
|
self._exec(__file__, "config/server_team_roles.sql")
|
||||||
|
self._exec(__file__, "config/technician.sql")
|
||||||
|
self._exec(__file__, "config/technician_ids.sql")
|
||||||
|
self._exec(__file__, "config/technician_ping_urls.sql")
|
||||||
|
|
||||||
|
def _server_upgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_Server` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`MessageDeleteTimer` BIGINT NOT NULL DEFAULT 6,
|
||||||
|
`NotificationChatId` BIGINT NOT NULL,
|
||||||
|
`MaxVoiceStateHours` BIGINT NOT NULL DEFAULT 6,
|
||||||
|
`XpPerMessage` BIGINT NOT NULL DEFAULT 1,
|
||||||
|
`XpPerReaction` BIGINT NOT NULL DEFAULT 1,
|
||||||
|
`MaxMessageXpPerHour` BIGINT NOT NULL DEFAULT 20,
|
||||||
|
`XpPerOntimeHour` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`XpPerEventParticipation` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`XpPerAchievement` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`AFKCommandChannelId` BIGINT NOT NULL,
|
||||||
|
`HelpVoiceChannelId` BIGINT NOT NULL,
|
||||||
|
`TeamChannelId` BIGINT NOT NULL,
|
||||||
|
`LoginMessageChannelId` BIGINT NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_ServerAFKChannelIds` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`ChannelId` BIGINT NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_ServerTeamRoleIds` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`RoleId` BIGINT NOT NULL,
|
||||||
|
`TeamMemberType` ENUM('Moderator', 'Admin') NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def _technician_upgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_Technician` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`HelpCommandReferenceUrl` VARCHAR(255) NOT NULL,
|
||||||
|
`WaitForRestart` BIGINT NOT NULL DEFAULT 8,
|
||||||
|
`WaitForShutdown` BIGINT NOT NULL DEFAULT 8,
|
||||||
|
`CacheMaxMessages` BIGINT NOT NULL DEFAULT 1000000,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_TechnicianPingUrls` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`URL` VARCHAR(255) NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `CFG_TechnicianIds` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`TechnicianId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running downgrade")
|
||||||
|
self._server_downgrade()
|
||||||
|
self._technician_downgrade()
|
||||||
|
|
||||||
|
def _server_downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `CFG_Server`;")
|
||||||
|
|
||||||
|
def _technician_downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `CFG_Technician`;")
|
||||||
|
self._cursor.execute("DROP TABLE `CFG_TechnicianPingUrls`;")
|
||||||
|
self._cursor.execute("DROP TABLE `CFG_TechnicianIds`;")
|
56
bot/src/bot_data/migration/db_history_migration.py
Normal file
56
bot/src/bot_data/migration/db_history_migration.py
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class DBHistoryMigration(MigrationABC):
|
||||||
|
name = "1.0.0_DBHistoryMigration"
|
||||||
|
prio = 1
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._exec(__file__, "api_keys.sql")
|
||||||
|
self._exec(__file__, "auth_users.sql")
|
||||||
|
self._exec(__file__, "auth_user_users_relation.sql")
|
||||||
|
self._exec(__file__, "auto_role_rules.sql")
|
||||||
|
self._exec(__file__, "auto_roles.sql")
|
||||||
|
self._exec(__file__, "clients.sql")
|
||||||
|
self._exec(__file__, "game_servers.sql")
|
||||||
|
self._exec(__file__, "known_users.sql")
|
||||||
|
self._exec(__file__, "levels.sql")
|
||||||
|
self._exec(__file__, "servers.sql")
|
||||||
|
self._exec(__file__, "user_game_idents.sql")
|
||||||
|
self._exec(__file__, "user_joined_game_servers.sql")
|
||||||
|
self._exec(__file__, "user_joined_servers.sql")
|
||||||
|
self._exec(__file__, "user_joined_voice_channel.sql")
|
||||||
|
self._exec(__file__, "user_message_count_per_hour.sql")
|
||||||
|
self._exec(__file__, "users.sql")
|
||||||
|
self._exec(__file__, "user_warnings.sql")
|
||||||
|
|
||||||
|
self._logger.debug(__name__, "Finished history upgrade")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `ApiKeysHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AuthUsersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AuthUserUsersRelationsHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AutoRoleRulesHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `AutoRolesHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `ClientsHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `GameServersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `KnownUsersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `LevelsHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `ServersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserGameIdentsHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedGameServerHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedServersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedVoiceChannelHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserMessageCountPerHourHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UsersHistory`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserWarningsHistory`;")
|
46
bot/src/bot_data/migration/db_history_scripts/api_keys.sql
Normal file
46
bot/src/bot_data/migration/db_history_scripts/api_keys.sql
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `ApiKeys`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `ApiKeys`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE 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;
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `AuthUserUsersRelations`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `AuthUserUsersRelations`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE 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;
|
62
bot/src/bot_data/migration/db_history_scripts/auth_users.sql
Normal file
62
bot/src/bot_data/migration/db_history_scripts/auth_users.sql
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
ALTER TABLE `AuthUsers`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `AuthUsers`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE 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;
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `AutoRoleRules`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `AutoRoleRules`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `AutoRoleRulesHistory`
|
||||||
|
(
|
||||||
|
`Id` 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` (
|
||||||
|
`Id`, `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` (
|
||||||
|
`Id`, `AutoRoleId`, `DiscordEmojiName`, `DiscordRoleId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.AutoRoleRuleId, OLD.AutoRoleId, OLD.DiscordEmojiName, OLD.DiscordRoleId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
48
bot/src/bot_data/migration/db_history_scripts/auto_roles.sql
Normal file
48
bot/src/bot_data/migration/db_history_scripts/auto_roles.sql
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
ALTER TABLE `AutoRoles`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `AutoRoles`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `AutoRolesHistory`
|
||||||
|
(
|
||||||
|
`Id` 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` (
|
||||||
|
`Id`, `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` (
|
||||||
|
`Id`, `ServerId`, `DiscordChannelId`, `DiscordMessageId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.AutoRoleId, OLD.ServerId, OLD.DiscordChannelId, OLD.DiscordMessageId, TRUE, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
54
bot/src/bot_data/migration/db_history_scripts/clients.sql
Normal file
54
bot/src/bot_data/migration/db_history_scripts/clients.sql
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
ALTER TABLE `Clients`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `Clients`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `ClientsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`DiscordId` 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` (
|
||||||
|
`Id`, `DiscordId`, `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` (
|
||||||
|
`Id`, `DiscordId`, `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;
|
@ -1,12 +1,29 @@
|
|||||||
ALTER TABLE CFG_Server
|
CREATE TABLE IF NOT EXISTS `CFG_ServerHistory`
|
||||||
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`MessageDeleteTimer` BIGINT NOT NULL DEFAULT 6,
|
||||||
|
`NotificationChatId` BIGINT NOT NULL,
|
||||||
|
`MaxVoiceStateHours` BIGINT NOT NULL DEFAULT 6,
|
||||||
|
`XpPerMessage` BIGINT NOT NULL DEFAULT 1,
|
||||||
|
`XpPerReaction` BIGINT NOT NULL DEFAULT 1,
|
||||||
|
`MaxMessageXpPerHour` BIGINT NOT NULL DEFAULT 20,
|
||||||
|
`XpPerOntimeHour` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`XpPerEventParticipation` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`XpPerAchievement` BIGINT NOT NULL DEFAULT 10,
|
||||||
|
`AFKCommandChannelId` BIGINT NOT NULL,
|
||||||
|
`HelpVoiceChannelId` BIGINT NOT NULL,
|
||||||
|
`TeamChannelId` BIGINT NOT NULL,
|
||||||
|
`LoginMessageChannelId` BIGINT NOT NULL,
|
||||||
|
`DefaultRoleId` BIGINT NULL,
|
||||||
|
`ShortRoleNameSetOnlyHighest` BOOLEAN NOT NULL DEFAULT FALSE,
|
||||||
|
`FeatureFlags` JSON NULL DEFAULT ('{}'),
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerUpdate`;
|
||||||
|
|
||||||
ALTER TABLE CFG_ServerHistory
|
|
||||||
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_ServerUpdate`;;
|
|
||||||
|
|
||||||
CREATE TRIGGER `TR_CFG_ServerUpdate`
|
CREATE TRIGGER `TR_CFG_ServerUpdate`
|
||||||
AFTER UPDATE
|
AFTER UPDATE
|
||||||
@ -53,9 +70,9 @@ BEGIN
|
|||||||
OLD.ServerId,
|
OLD.ServerId,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_ServerDelete`;;
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerDelete`;
|
||||||
|
|
||||||
CREATE TRIGGER `TR_CFG_ServerDelete`
|
CREATE TRIGGER `TR_CFG_ServerDelete`
|
||||||
AFTER DELETE
|
AFTER DELETE
|
||||||
@ -104,5 +121,4 @@ BEGIN
|
|||||||
TRUE,
|
TRUE,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
@ -0,0 +1,57 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `CFG_ServerAFKChannelIdsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`ChannelId` BIGINT NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerAFKChannelIdsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_ServerAFKChannelIdsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `CFG_ServerAFKChannelIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_ServerAFKChannelIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`ChannelId`,
|
||||||
|
`ServerId`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.ChannelId,
|
||||||
|
OLD.ServerId,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerAFKChannelIdsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_ServerAFKChannelIdsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `CFG_ServerAFKChannelIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_ServerAFKChannelIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`ChannelId`,
|
||||||
|
`ServerId`,
|
||||||
|
`Deleted`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.ChannelId,
|
||||||
|
OLD.ServerId,
|
||||||
|
TRUE,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,62 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `CFG_ServerTeamRoleIdsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`RoleId` BIGINT NOT NULL,
|
||||||
|
`TeamMemberType` ENUM('Moderator', 'Admin') NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerTeamRoleIdsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_ServerTeamRoleIdsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `CFG_ServerTeamRoleIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_ServerTeamRoleIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`RoleId`,
|
||||||
|
`TeamMemberType`,
|
||||||
|
`ServerId`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.RoleId,
|
||||||
|
OLD.TeamMemberType,
|
||||||
|
OLD.ServerId,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_ServerTeamRoleIdsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_ServerTeamRoleIdsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `CFG_ServerTeamRoleIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_ServerTeamRoleIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`RoleId`,
|
||||||
|
`TeamMemberType`,
|
||||||
|
`ServerId`,
|
||||||
|
`Deleted`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.RoleId,
|
||||||
|
OLD.TeamMemberType,
|
||||||
|
OLD.ServerId,
|
||||||
|
TRUE,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -1,10 +1,19 @@
|
|||||||
ALTER TABLE CFG_Technician
|
CREATE TABLE IF NOT EXISTS `CFG_TechnicianHistory`
|
||||||
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`HelpCommandReferenceUrl` VARCHAR(255) NOT NULL,
|
||||||
|
`WaitForRestart` BIGINT NOT NULL DEFAULT 8,
|
||||||
|
`WaitForShutdown` BIGINT NOT NULL DEFAULT 8,
|
||||||
|
`CacheMaxMessages` BIGINT NOT NULL DEFAULT 1000000,
|
||||||
|
`MaxSteamOfferCount` BIGINT NOT NULL DEFAULT 250,
|
||||||
|
`Maintenance` BOOLEAN DEFAULT FALSE,
|
||||||
|
`FeatureFlags` JSON NULL DEFAULT ('{}'),
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
ALTER TABLE CFG_TechnicianHistory
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianUpdate`;
|
||||||
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianUpdate`;;
|
|
||||||
|
|
||||||
CREATE TRIGGER `TR_CFG_TechnicianUpdate`
|
CREATE TRIGGER `TR_CFG_TechnicianUpdate`
|
||||||
AFTER UPDATE
|
AFTER UPDATE
|
||||||
@ -31,9 +40,9 @@ BEGIN
|
|||||||
OLD.FeatureFlags,
|
OLD.FeatureFlags,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianDelete`;;
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianDelete`;
|
||||||
|
|
||||||
CREATE TRIGGER `TR_CFG_TechnicianDelete`
|
CREATE TRIGGER `TR_CFG_TechnicianDelete`
|
||||||
AFTER DELETE
|
AFTER DELETE
|
||||||
@ -62,5 +71,4 @@ BEGIN
|
|||||||
TRUE,
|
TRUE,
|
||||||
OLD.LastModifiedAt,
|
OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
@ -0,0 +1,52 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `CFG_TechnicianIdsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`TechnicianId` BIGINT NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianIdsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_TechnicianIdsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `CFG_TechnicianIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_TechnicianIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`TechnicianId`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.TechnicianId,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianIdsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_TechnicianIdsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `CFG_TechnicianIds`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_TechnicianIdsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`TechnicianId`,
|
||||||
|
`Deleted`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.TechnicianId,
|
||||||
|
TRUE,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,52 @@
|
|||||||
|
CREATE TABLE IF NOT EXISTS `CFG_TechnicianPingUrlsHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`URL` VARCHAR(255) NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianPingUrlsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_TechnicianPingUrlsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `CFG_TechnicianPingUrls`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_TechnicianPingUrlsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`URL`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.URL,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_CFG_TechnicianPingUrlsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_CFG_TechnicianPingUrlsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `CFG_TechnicianPingUrls`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `CFG_TechnicianPingUrlsHistory` (
|
||||||
|
`Id`,
|
||||||
|
`URL`,
|
||||||
|
`Deleted`,
|
||||||
|
`DateFrom`,
|
||||||
|
`DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id,
|
||||||
|
OLD.URL,
|
||||||
|
TRUE,
|
||||||
|
OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `GameServers`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `GameServers`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_GameServersUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_GameServersUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `GameServers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `GameServersHistory` (
|
||||||
|
`Id`, `Name`, `ServerId`, `ApiKeyId`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.ServerId, OLD.ApiKeyId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_GameServersDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_GameServersDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `GameServers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `GameServersHistory` (
|
||||||
|
`Id`, `Name`, `ServerId`, `ApiKeyId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.ServerId, OLD.ApiKeyId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,44 @@
|
|||||||
|
ALTER TABLE `KnownUsers`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `KnownUsers`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `KnownUsersHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`DiscordId` BIGINT(20) NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_KnownUsersUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_KnownUsersUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `KnownUsers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `KnownUsersHistory` (
|
||||||
|
`Id`, `DiscordId`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.KnownUserId, OLD.DiscordId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_KnownUsersDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_KnownUsersDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `KnownUsers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `KnownUsersHistory` (
|
||||||
|
`Id`, `DiscordId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.KnownUserId, OLD.DiscordId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
50
bot/src/bot_data/migration/db_history_scripts/levels.sql
Normal file
50
bot/src/bot_data/migration/db_history_scripts/levels.sql
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
ALTER TABLE `Levels`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `Levels`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_LevelsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_LevelsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `Levels`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `LevelsHistory` (
|
||||||
|
`Id`, `Name`, `Color`, `MinXp`, `PermissionInt`, `ServerId`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.Color, OLD.MinXp, OLD.PermissionInt, OLD.ServerId, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_LevelsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_LevelsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `Levels`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `LevelsHistory` (
|
||||||
|
`Id`, `Name`, `Color`, `MinXp`, `PermissionInt`, `ServerId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Name, OLD.Color, OLD.MinXp, OLD.PermissionInt, OLD.ServerId, TRUE, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
44
bot/src/bot_data/migration/db_history_scripts/servers.sql
Normal file
44
bot/src/bot_data/migration/db_history_scripts/servers.sql
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
ALTER TABLE `Servers`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `Servers`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `ServersHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`DiscordId` BIGINT(20) NOT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_ServersUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_ServersUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `Servers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `ServersHistory` (
|
||||||
|
`Id`, `DiscordId`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.ServerId, OLD.DiscordServerId, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_ServersDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_ServersDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `Servers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `ServersHistory` (
|
||||||
|
`Id`, `DiscordId`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.ServerId, OLD.DiscordServerId, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -1,17 +1,3 @@
|
|||||||
CREATE TABLE IF NOT EXISTS `ShortRoleNames`
|
|
||||||
(
|
|
||||||
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
|
||||||
`ShortName` VARCHAR(255) NOT NULL,
|
|
||||||
`DiscordRoleId` BIGINT NOT NULL,
|
|
||||||
`Position` ENUM ('before', 'after') NOT NULL,
|
|
||||||
`ServerId` BIGINT,
|
|
||||||
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|
||||||
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
|
||||||
PRIMARY KEY (`Id`),
|
|
||||||
FOREIGN KEY (`ServerId`) REFERENCES `Servers` (`ServerId`)
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS `ShortRoleNamesHistory`
|
CREATE TABLE IF NOT EXISTS `ShortRoleNamesHistory`
|
||||||
(
|
(
|
||||||
`Id` BIGINT(20) NOT NULL,
|
`Id` BIGINT(20) NOT NULL,
|
||||||
@ -22,9 +8,9 @@ CREATE TABLE IF NOT EXISTS `ShortRoleNamesHistory`
|
|||||||
`Deleted` BOOL DEFAULT FALSE,
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
`DateFrom` DATETIME(6) NOT NULL,
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
`DateTo` DATETIME(6) NOT NULL
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
);;
|
);
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesUpdate`;;
|
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesUpdate`;
|
||||||
|
|
||||||
CREATE TRIGGER `TR_ShortRoleNamesUpdate`
|
CREATE TRIGGER `TR_ShortRoleNamesUpdate`
|
||||||
AFTER UPDATE
|
AFTER UPDATE
|
||||||
@ -35,9 +21,9 @@ BEGIN
|
|||||||
`DateTo`)
|
`DateTo`)
|
||||||
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, OLD.LastModifiedAt,
|
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
||||||
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesDelete`;;
|
DROP TRIGGER IF EXISTS `TR_ShortRoleNamesDelete`;
|
||||||
|
|
||||||
CREATE TRIGGER `TR_ShortRoleNamesDelete`
|
CREATE TRIGGER `TR_ShortRoleNamesDelete`
|
||||||
AFTER DELETE
|
AFTER DELETE
|
||||||
@ -49,5 +35,4 @@ BEGIN
|
|||||||
`DateTo`)
|
`DateTo`)
|
||||||
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, TRUE, OLD.LastModifiedAt,
|
VALUES (OLD.Id, OLD.ShortName, OLD.DiscordRoleId, OLD.Position, OLD.ServerId, TRUE, OLD.LastModifiedAt,
|
||||||
CURRENT_TIMESTAMP(6));
|
CURRENT_TIMESTAMP(6));
|
||||||
END;;
|
END;
|
||||||
|
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `UserGameIdents`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserGameIdents`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserGameIdentsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserGameIdentsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserGameIdents`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserGameIdentsHistory` (
|
||||||
|
`Id`, `UserId`, `GameServerId`, `Ident`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.GameServerId, OLD.Ident, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserGameIdentsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserGameIdentsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserGameIdents`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserGameIdentsHistory` (
|
||||||
|
`Id`, `UserId`, `GameServerId`, `Ident`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.GameServerId, OLD.Ident, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,47 @@
|
|||||||
|
ALTER TABLE `UserJoinedGameServer`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserJoinedGameServer`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedGameServerUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedGameServerUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserJoinedGameServer`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedGameServerHistory` (
|
||||||
|
`Id`, `UserId`, `GameServerId`, `JoinedOn`, `LeavedOn`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.GameServerId, OLD.JoinedOn, OLD.LeavedOn, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedGameServerDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedGameServerDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserJoinedGameServer`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedGameServerHistory` (
|
||||||
|
`Id`, `UserId`, `GameServerId`, `JoinedOn`, `LeavedOn`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.GameServerId, OLD.JoinedOn, OLD.LeavedOn, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `UserJoinedServers`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserJoinedServers`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserJoinedServersHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`UserId` BIGINT(20) NOT NULL,
|
||||||
|
`JoinedOn` DATETIME(6) NOT NULL,
|
||||||
|
`LeavedOn` DATETIME(6) DEFAULT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedServersUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedServersUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserJoinedServers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedServersHistory` (
|
||||||
|
`Id`, `UserId`, `JoinedOn`, `LeavedOn`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.JoinId, OLD.UserId, OLD.JoinedOn, OLD.LeavedOn, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedServersDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedServersDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserJoinedServers`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedServersHistory` (
|
||||||
|
`Id`, `UserId`, `JoinedOn`, `LeavedOn`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.JoinId, OLD.UserId, OLD.JoinedOn, OLD.LeavedOn, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,49 @@
|
|||||||
|
ALTER TABLE `UserJoinedVoiceChannel`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserJoinedVoiceChannel`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserJoinedVoiceChannelHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`UserId` BIGINT(20) NOT NULL,
|
||||||
|
`DiscordChannelId` BIGINT(20) NOT NULL,
|
||||||
|
`JoinedOn` DATETIME(6) NOT NULL,
|
||||||
|
`LeavedOn` DATETIME(6) DEFAULT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedVoiceChannelUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedVoiceChannelUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserJoinedVoiceChannel`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedVoiceChannelHistory` (
|
||||||
|
`Id`, `UserId`, `DiscordChannelId`, `JoinedOn`, `LeavedOn`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.JoinId, OLD.UserId, OLD.DiscordChannelId, OLD.JoinedOn, OLD.LeavedOn, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserJoinedVoiceChannelDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserJoinedVoiceChannelDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserJoinedVoiceChannel`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserJoinedVoiceChannelHistory` (
|
||||||
|
`Id`, `UserId`, `DiscordChannelId`, `JoinedOn`, `LeavedOn`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.JoinId, OLD.UserId, OLD.DiscordChannelId, OLD.JoinedOn, OLD.LeavedOn, TRUE, OLD.LastModifiedAt,
|
||||||
|
CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,47 @@
|
|||||||
|
ALTER TABLE `UserMessageCountPerHour`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserMessageCountPerHour`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserMessageCountPerHourUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserMessageCountPerHourUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserMessageCountPerHour`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserMessageCountPerHourHistory` (
|
||||||
|
`Id`, `UserId`, `Date`, `Hour`, `XPCount`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.Date, OLD.Hour, OLD.XPCount, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserMessageCountPerHourDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserMessageCountPerHourDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserMessageCountPerHour`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserMessageCountPerHourHistory` (
|
||||||
|
`Id`, `UserId`, `Date`, `Hour`, `XPCount`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.UserId, OLD.Date, OLD.Hour, OLD.XPCount, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
@ -0,0 +1,46 @@
|
|||||||
|
ALTER TABLE `UserWarnings`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `UserWarnings`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
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,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserWarningsUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserWarningsUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `UserWarnings`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserWarningsHistory` (
|
||||||
|
`Id`, `Description`, `UserId`, `Author`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Description, OLD.UserId, OLD.Author, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UserWarningsDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UserWarningsDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `UserWarnings`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UserWarningsHistory` (
|
||||||
|
`Id`, `Description`, `UserId`, `Author`, `Deleted`, `DateFrom`, `DateTo`
|
||||||
|
)
|
||||||
|
VALUES (
|
||||||
|
OLD.Id, OLD.Description, OLD.UserId, OLD.Author, TRUE, OLD.LastModifiedAt, CURRENT_TIMESTAMP(6)
|
||||||
|
);
|
||||||
|
END;
|
45
bot/src/bot_data/migration/db_history_scripts/users.sql
Normal file
45
bot/src/bot_data/migration/db_history_scripts/users.sql
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
ALTER TABLE `Users`
|
||||||
|
CHANGE `CreatedAt` `CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
ALTER TABLE `Users`
|
||||||
|
CHANGE `LastModifiedAt` `LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS `UsersHistory`
|
||||||
|
(
|
||||||
|
`Id` BIGINT(20) NOT NULL,
|
||||||
|
`DiscordId` BIGINT(20) NOT NULL,
|
||||||
|
`XP` BIGINT(20) NOT NULL DEFAULT 0,
|
||||||
|
`ReactionCount` BIGINT(20) NOT NULL DEFAULT 0,
|
||||||
|
`MessageCount` BIGINT(20) NOT NULL DEFAULT 0,
|
||||||
|
`Birthday` DATE NULL,
|
||||||
|
`ServerId` BIGINT(20) DEFAULT NULL,
|
||||||
|
`Deleted` BOOL DEFAULT FALSE,
|
||||||
|
`DateFrom` DATETIME(6) NOT NULL,
|
||||||
|
`DateTo` DATETIME(6) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UsersUpdate`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UsersUpdate`
|
||||||
|
AFTER UPDATE
|
||||||
|
ON `Users`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UsersHistory` (`Id`, `DiscordId`, `XP`, `ReactionCount`, `MessageCount`, `Birthday`, `ServerId`,
|
||||||
|
`DateFrom`, `DateTo`)
|
||||||
|
VALUES (OLD.UserId, OLD.DiscordId, OLD.XP, OLD.ReactionCount, OLD.MessageCount, OLD.Birthday, OLD.ServerId,
|
||||||
|
OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
|
||||||
|
END;
|
||||||
|
|
||||||
|
DROP TRIGGER IF EXISTS `TR_UsersDelete`;
|
||||||
|
|
||||||
|
CREATE TRIGGER `TR_UsersDelete`
|
||||||
|
AFTER DELETE
|
||||||
|
ON `Users`
|
||||||
|
FOR EACH ROW
|
||||||
|
BEGIN
|
||||||
|
INSERT INTO `UsersHistory` (`Id`, `DiscordId`, `XP`, `ReactionCount`, `MessageCount`, `Birthday`, `ServerId`,
|
||||||
|
`Deleted`, `DateFrom`, `DateTo`)
|
||||||
|
VALUES (OLD.UserId, OLD.DiscordId, OLD.XP, OLD.ReactionCount, OLD.MessageCount, OLD.Birthday, OLD.ServerId, TRUE,
|
||||||
|
OLD.LastModifiedAt, CURRENT_TIMESTAMP(6));
|
||||||
|
END;
|
34
bot/src/bot_data/migration/default_role_migration.py
Normal file
34
bot/src/bot_data/migration/default_role_migration.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class DefaultRoleMigration(MigrationABC):
|
||||||
|
name = "1.1.3_DefaultRoleMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server
|
||||||
|
ADD DefaultRoleId BIGINT NULL AFTER LoginMessageChannelId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
51
bot/src/bot_data/migration/fix_updates_migration.py
Normal file
51
bot/src/bot_data/migration/fix_updates_migration.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class FixUpdatesMigration(MigrationABC):
|
||||||
|
name = "1.1.7_FixUpdatesMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD DefaultRoleId BIGINT NULL AFTER LoginMessageChannelId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
"""ALTER TABLE CFG_TechnicianHistory ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER CacheMaxMessages;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
"""ALTER TABLE CFG_ServerHistory ADD FeatureFlags JSON NULL DEFAULT ('{}') AFTER LoginMessageChannelId;"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
self._exec(__file__, "config/technician.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_TechnicianHistory DROP COLUMN FeatureFlags;")
|
||||||
|
self._cursor.execute("ALTER TABLE CFG_ServerHistory DROP COLUMN FeatureFlags;")
|
41
bot/src/bot_data/migration/fix_user_history_migration.py
Normal file
41
bot/src/bot_data/migration/fix_user_history_migration.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class FixUserHistoryMigration(MigrationABC):
|
||||||
|
name = "1.2.0_FixUserHistoryMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
# fix 1.1.0_AchievementsMigration
|
||||||
|
self._cursor.execute(
|
||||||
|
str(f"""ALTER TABLE UsersHistory ADD COLUMN ReactionCount BIGINT NOT NULL DEFAULT 0 AFTER XP;""")
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(f"""ALTER TABLE UsersHistory ADD COLUMN MessageCount BIGINT NOT NULL DEFAULT 0 AFTER ReactionCount;""")
|
||||||
|
)
|
||||||
|
self._exec(__file__, "users.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE UsersHistory DROP COLUMN MessageCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE UsersHistory DROP COLUMN ReactionCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
138
bot/src/bot_data/migration/initial_migration.py
Normal file
138
bot/src/bot_data/migration/initial_migration.py
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class InitialMigration(MigrationABC):
|
||||||
|
name = "0.1_InitialMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `MigrationHistory` (
|
||||||
|
`MigrationId` VARCHAR(255),
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`MigrationId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Servers` (
|
||||||
|
`ServerId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`DiscordServerId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Users` (
|
||||||
|
`UserId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`DiscordId` BIGINT NOT NULL,
|
||||||
|
`XP` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES Servers(`ServerId`),
|
||||||
|
PRIMARY KEY(`UserId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Clients` (
|
||||||
|
`ClientId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`DiscordClientId` BIGINT NOT NULL,
|
||||||
|
`SentMessageCount` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`ReceivedMessageCount` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`DeletedMessageCount` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`ReceivedCommandsCount` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`MovedUsersCount` BIGINT NOT NULL DEFAULT 0,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES Servers(`ServerId`),
|
||||||
|
PRIMARY KEY(`ClientId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `KnownUsers` (
|
||||||
|
`KnownUserId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`DiscordId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`KnownUserId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserJoinedServers` (
|
||||||
|
`JoinId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`UserId` BIGINT NOT NULL,
|
||||||
|
`JoinedOn` DATETIME(6) NOT NULL,
|
||||||
|
`LeavedOn` DATETIME(6),
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES Users(`UserId`),
|
||||||
|
PRIMARY KEY(`JoinId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserJoinedVoiceChannel` (
|
||||||
|
`JoinId` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`UserId` BIGINT NOT NULL,
|
||||||
|
`DiscordChannelId` BIGINT NOT NULL,
|
||||||
|
`JoinedOn` DATETIME(6) NOT NULL,
|
||||||
|
`LeavedOn` DATETIME(6),
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES Users(`UserId`),
|
||||||
|
PRIMARY KEY(`JoinId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `Servers`;")
|
||||||
|
self._cursor.execute("DROP TABLE `Users`;")
|
||||||
|
self._cursor.execute("DROP TABLE `Clients`;")
|
||||||
|
self._cursor.execute("DROP TABLE `KnownUsers`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedServers`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedVoiceChannel`;")
|
38
bot/src/bot_data/migration/level_migration.py
Normal file
38
bot/src/bot_data/migration/level_migration.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class LevelMigration(MigrationABC):
|
||||||
|
name = "0.3_LevelMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Levels` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`Color` VARCHAR(8) NOT NULL,
|
||||||
|
`MinXp` BIGINT NOT NULL,
|
||||||
|
`PermissionInt` BIGINT NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `Levels`;")
|
51
bot/src/bot_data/migration/maintenance_mode_migration.py
Normal file
51
bot/src/bot_data/migration/maintenance_mode_migration.py
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class MaintenanceModeMigration(MigrationABC):
|
||||||
|
name = "1.2.0_MaintenanceModeMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Technician
|
||||||
|
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_TechnicianHistory
|
||||||
|
ADD Maintenance BOOLEAN DEFAULT FALSE AFTER MaxSteamOfferCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "config/technician.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Technician DROP COLUMN Maintenance;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_TechnicianHistory DROP COLUMN Maintenance;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class MaxSteamOfferCountMigration(MigrationABC):
|
||||||
|
name = "1.2.0_MaxSteamOfferCountMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Technician
|
||||||
|
ADD MaxSteamOfferCount BIGINT NOT NULL DEFAULT 250 AFTER CacheMaxMessages;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_TechnicianHistory
|
||||||
|
ADD MaxSteamOfferCount BIGINT NOT NULL DEFAULT 250 AFTER CacheMaxMessages;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "config/technician.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Technician DROP COLUMN MaxSteamOfferCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_TechnicianHistory DROP COLUMN MaxSteamOfferCount;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
43
bot/src/bot_data/migration/remove_stats_migration.py
Normal file
43
bot/src/bot_data/migration/remove_stats_migration.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class RemoveStatsMigration(MigrationABC):
|
||||||
|
name = "1.0.0_RemoveStatsMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
DROP TABLE IF EXISTS `Statistics`;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Statistics` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`Description` VARCHAR(255) NOT NULL,
|
||||||
|
`Code` LONGTEXT NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
40
bot/src/bot_data/migration/short_role_name_migration.py
Normal file
40
bot/src/bot_data/migration/short_role_name_migration.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameMigration(MigrationABC):
|
||||||
|
name = "1.1.7_ShortRoleNameMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `ShortRoleNames` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`ShortName` VARCHAR(255) NOT NULL,
|
||||||
|
`DiscordRoleId` BIGINT NOT NULL,
|
||||||
|
`Position` ENUM('before', 'after') NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._exec(__file__, "short_rule_names.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `ShortRoleNames`;")
|
||||||
|
self._cursor.execute("DROP TABLE `ShortRoleNamesHistory`;")
|
@ -0,0 +1,51 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class ShortRoleNameOnlyHighestMigration(MigrationABC):
|
||||||
|
name = "1.1.9_ShortRoleNameOnlyHighestMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server
|
||||||
|
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD ShortRoleNameSetOnlyHighest BOOLEAN NOT NULL DEFAULT FALSE AFTER DefaultRoleId;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._exec(__file__, "config/server.sql")
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
37
bot/src/bot_data/migration/stats_migration.py
Normal file
37
bot/src/bot_data/migration/stats_migration.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class StatsMigration(MigrationABC):
|
||||||
|
name = "0.3_StatsMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `Statistics` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`Description` VARCHAR(255) NOT NULL,
|
||||||
|
`Code` LONGTEXT NOT NULL,
|
||||||
|
`ServerId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES `Servers`(`ServerId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `Statistics`;")
|
68
bot/src/bot_data/migration/steam_special_offer_migration.py
Normal file
68
bot/src/bot_data/migration/steam_special_offer_migration.py
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class SteamSpecialOfferMigration(MigrationABC):
|
||||||
|
name = "1.2.0_SteamSpecialOfferMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `SteamSpecialOffers` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Game` VARCHAR(255) NOT NULL,
|
||||||
|
`OriginalPrice` FLOAT NOT NULL,
|
||||||
|
`DiscountPrice` FLOAT NOT NULL,
|
||||||
|
`DiscountPct` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6),
|
||||||
|
`LastModifiedAt` DATETIME(6) NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server
|
||||||
|
ADD COLUMN GameOfferNotificationChatId BIGINT NULL AFTER ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory
|
||||||
|
ADD COLUMN GameOfferNotificationChatId BIGINT NULL AFTER ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `SteamSpecialOffers`;")
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_Server DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
ALTER TABLE CFG_ServerHistory DROP COLUMN ShortRoleNameSetOnlyHighest;
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
@ -0,0 +1,77 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class UserJoinedGameServerMigration(MigrationABC):
|
||||||
|
name = "1.0.0_UserJoinedGameServerMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `GameServers` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Name` VARCHAR(255) NOT NULL,
|
||||||
|
`ServerId` BIGINT NOT NULL,
|
||||||
|
`ApiKeyId` BIGINT NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`ServerId`) REFERENCES Servers(`ServerId`),
|
||||||
|
FOREIGN KEY (`ApiKeyId`) REFERENCES ApiKeys(`Id`),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserJoinedGameServer` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`UserId` BIGINT NOT NULL,
|
||||||
|
`GameServerId` BIGINT NOT NULL,
|
||||||
|
`JoinedOn` DATETIME(6) NOT NULL,
|
||||||
|
`LeavedOn` DATETIME(6),
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES Users(`UserId`),
|
||||||
|
FOREIGN KEY (`GameServerId`) REFERENCES GameServers(`Id`),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserGameIdents` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`UserId` BIGINT NOT NULL,
|
||||||
|
`GameServerId` BIGINT NOT NULL,
|
||||||
|
`Ident` VARCHAR(255) NOT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES Users(`UserId`),
|
||||||
|
FOREIGN KEY (`GameServerId`) REFERENCES GameServers(`Id`),
|
||||||
|
CONSTRAINT UC_UserGameIdent UNIQUE (`GameServerId`,`Ident`),
|
||||||
|
PRIMARY KEY(`Id`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `GameServers`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserJoinedGameServer`;")
|
||||||
|
self._cursor.execute("DROP TABLE `UserGameIdents`;")
|
@ -0,0 +1,37 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class UserMessageCountPerHourMigration(MigrationABC):
|
||||||
|
name = "0.3.1_UserMessageCountPerHourMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserMessageCountPerHour` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Date` DATETIME(6) NOT NULL,
|
||||||
|
`Hour` BIGINT,
|
||||||
|
`XPCount` BIGINT,
|
||||||
|
`UserId` BIGINT,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES `Users`(`UserId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `UserMessageCountPerHour`;")
|
37
bot/src/bot_data/migration/user_warning_migration.py
Normal file
37
bot/src/bot_data/migration/user_warning_migration.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
from bot_core.logging.database_logger import DatabaseLogger
|
||||||
|
from bot_data.abc.migration_abc import MigrationABC
|
||||||
|
from bot_data.db_context import DBContext
|
||||||
|
|
||||||
|
|
||||||
|
class UserWarningMigration(MigrationABC):
|
||||||
|
name = "1.0.0_UserWarningMigration"
|
||||||
|
|
||||||
|
def __init__(self, logger: DatabaseLogger, db: DBContext):
|
||||||
|
MigrationABC.__init__(self)
|
||||||
|
self._logger = logger
|
||||||
|
self._db = db
|
||||||
|
self._cursor = db.cursor
|
||||||
|
|
||||||
|
def upgrade(self):
|
||||||
|
self._logger.debug(__name__, "Running upgrade")
|
||||||
|
|
||||||
|
self._cursor.execute(
|
||||||
|
str(
|
||||||
|
f"""
|
||||||
|
CREATE TABLE IF NOT EXISTS `UserWarnings` (
|
||||||
|
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||||
|
`Description` VARCHAR(255) NOT NULL,
|
||||||
|
`UserId` BIGINT NOT NULL,
|
||||||
|
`Author` BIGINT NULL,
|
||||||
|
`CreatedAt` DATETIME(6),
|
||||||
|
`LastModifiedAt` DATETIME(6),
|
||||||
|
PRIMARY KEY(`Id`),
|
||||||
|
FOREIGN KEY (`UserId`) REFERENCES `Users`(`UserId`),
|
||||||
|
FOREIGN KEY (`Author`) REFERENCES `Users`(`UserId`)
|
||||||
|
);
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
def downgrade(self):
|
||||||
|
self._cursor.execute("DROP TABLE `UserWarnings`;")
|
@ -15,7 +15,7 @@ __title__ = "bot_data.model"
|
|||||||
__author__ = "Sven Heidemann"
|
__author__ = "Sven Heidemann"
|
||||||
__license__ = "MIT"
|
__license__ = "MIT"
|
||||||
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
__copyright__ = "Copyright (c) 2022 - 2023 sh-edraft.de"
|
||||||
__version__ = "1.2.2"
|
__version__ = "1.2.1"
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
@ -23,4 +23,4 @@ from collections import namedtuple
|
|||||||
# imports
|
# imports
|
||||||
|
|
||||||
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
VersionInfo = namedtuple("VersionInfo", "major minor micro")
|
||||||
version_info = VersionInfo(major="1", minor="2", micro="2")
|
version_info = VersionInfo(major="1", minor="2", micro="1")
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
class Migration:
|
|
||||||
def __init__(self, name: str, version: str, script: str):
|
|
||||||
self._name = name
|
|
||||||
self._version = version
|
|
||||||
self._script = script
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self) -> str:
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
|
||||||
def version(self) -> str:
|
|
||||||
return self._version
|
|
||||||
|
|
||||||
@property
|
|
||||||
def script(self) -> str:
|
|
||||||
return self._script
|
|
@ -2,12 +2,10 @@ from cpl_core.database import TableABC
|
|||||||
|
|
||||||
|
|
||||||
class MigrationHistory(TableABC):
|
class MigrationHistory(TableABC):
|
||||||
def __init__(self, id: str, created_at=None, modified_at=None):
|
def __init__(self, id: str):
|
||||||
self._id = id
|
self._id = id
|
||||||
|
|
||||||
TableABC.__init__(self)
|
TableABC.__init__(self)
|
||||||
self._created_at = created_at if created_at is not None else self._created_at
|
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def migration_id(self) -> str:
|
def migration_id(self) -> str:
|
||||||
@ -41,17 +39,7 @@ class MigrationHistory(TableABC):
|
|||||||
return str(
|
return str(
|
||||||
f"""
|
f"""
|
||||||
UPDATE `MigrationHistory`
|
UPDATE `MigrationHistory`
|
||||||
SET `LastModifiedAt` = '{self._modified_at}'
|
SET LastModifiedAt` = '{self._modified_at}'
|
||||||
WHERE `MigrationId` = '{self._id}';
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
def change_id_string(self, new_name: str) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
UPDATE `MigrationHistory`
|
|
||||||
SET `LastModifiedAt` = '{self._modified_at}',
|
|
||||||
`MigrationId` = '{new_name}'
|
|
||||||
WHERE `MigrationId` = '{self._id}';
|
WHERE `MigrationId` = '{self._id}';
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
@ -1,188 +0,0 @@
|
|||||||
from datetime import datetime
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import discord
|
|
||||||
from cpl_core.database import TableABC
|
|
||||||
|
|
||||||
from bot_data.model.scheduled_event_interval_enum import ScheduledEventIntervalEnum
|
|
||||||
from bot_data.model.server import Server
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledEvent(TableABC):
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
interval: ScheduledEventIntervalEnum,
|
|
||||||
name: str,
|
|
||||||
description: str,
|
|
||||||
channel_id: int,
|
|
||||||
start_time: datetime,
|
|
||||||
end_time: Optional[datetime],
|
|
||||||
entity_type: discord.EntityType,
|
|
||||||
location: Optional[str],
|
|
||||||
server: Optional[Server],
|
|
||||||
created_at: datetime = None,
|
|
||||||
modified_at: datetime = None,
|
|
||||||
id=0,
|
|
||||||
):
|
|
||||||
self._id = id
|
|
||||||
self._interval = interval
|
|
||||||
self._name = name
|
|
||||||
self._description = description
|
|
||||||
self._channel_id = channel_id
|
|
||||||
self._start_time = start_time
|
|
||||||
self._end_time = end_time
|
|
||||||
self._entity_type = entity_type
|
|
||||||
self._location = location
|
|
||||||
self._server = server
|
|
||||||
|
|
||||||
TableABC.__init__(self)
|
|
||||||
self._created_at = created_at if created_at is not None else self._created_at
|
|
||||||
self._modified_at = modified_at if modified_at is not None else self._modified_at
|
|
||||||
|
|
||||||
@property
|
|
||||||
def id(self) -> int:
|
|
||||||
return self._id
|
|
||||||
|
|
||||||
@property
|
|
||||||
def interval(self) -> ScheduledEventIntervalEnum:
|
|
||||||
return self._interval
|
|
||||||
|
|
||||||
@interval.setter
|
|
||||||
def interval(self, value: ScheduledEventIntervalEnum):
|
|
||||||
self._interval = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self) -> str:
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@name.setter
|
|
||||||
def name(self, value: str):
|
|
||||||
self._name = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def description(self) -> str:
|
|
||||||
return self._description
|
|
||||||
|
|
||||||
@description.setter
|
|
||||||
def description(self, value: str):
|
|
||||||
self._description = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def channel_id(self) -> int:
|
|
||||||
return self._channel_id
|
|
||||||
|
|
||||||
@channel_id.setter
|
|
||||||
def channel_id(self, value: int):
|
|
||||||
self._channel_id = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def start_time(self) -> datetime:
|
|
||||||
return self._start_time
|
|
||||||
|
|
||||||
@start_time.setter
|
|
||||||
def start_time(self, value: datetime):
|
|
||||||
self._start_time = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def end_time(self) -> datetime:
|
|
||||||
return self._end_time
|
|
||||||
|
|
||||||
@end_time.setter
|
|
||||||
def end_time(self, value: datetime):
|
|
||||||
self._end_time = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def entity_type(self) -> discord.EntityType:
|
|
||||||
return self._entity_type
|
|
||||||
|
|
||||||
@entity_type.setter
|
|
||||||
def entity_type(self, value: discord.EntityType):
|
|
||||||
self._entity_type = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def location(self) -> str:
|
|
||||||
return self._location
|
|
||||||
|
|
||||||
@location.setter
|
|
||||||
def location(self, value: str):
|
|
||||||
self._location = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def server(self) -> Server:
|
|
||||||
return self._server
|
|
||||||
|
|
||||||
@server.setter
|
|
||||||
def server(self, value: Server):
|
|
||||||
self._server = value
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_select_all_string() -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
SELECT * FROM `ScheduledEvents`;
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_select_by_id_string(id: int) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
SELECT * FROM `ScheduledEvents`
|
|
||||||
WHERE `Id` = {id};
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def get_select_by_server_id_string(s_id: int) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
SELECT * FROM `ScheduledEvents`
|
|
||||||
WHERE `ServerId` = {s_id};
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def insert_string(self) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
INSERT INTO `ScheduledEvents` (
|
|
||||||
`Interval`, `Name`, `Description`, `ChannelId`, `StartTime`, `EndTime`, `EntityType`, `Location`, `ServerId`
|
|
||||||
) VALUES (
|
|
||||||
'{self._interval.value}',
|
|
||||||
'{self._name}',
|
|
||||||
{"NULL" if self._description is None else f"'{self._description}'"},
|
|
||||||
{"NULL" if self._channel_id is None else f"'{self._channel_id}'"},
|
|
||||||
'{self._start_time}',
|
|
||||||
{"NULL" if self._end_time is None else f"'{self._end_time}'"},
|
|
||||||
'{self._entity_type.value}',
|
|
||||||
{"NULL" if self._location is None else f"'{self._location}'"},
|
|
||||||
{self._server.id}
|
|
||||||
);
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def udpate_string(self) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
UPDATE `ScheduledEvents`
|
|
||||||
SET `Interval` = '{self._interval.value}',
|
|
||||||
`Name` = '{self._name}',
|
|
||||||
`Description` = {"NULL" if self._description is None else f"'{self._description}'"},
|
|
||||||
`ChannelId` = {"NULL" if self._channel_id is None else f"'{self._channel_id}'"},
|
|
||||||
`StartTime` = '{self._start_time}',
|
|
||||||
`EndTime` = {"NULL" if self._end_time is None else f"'{self._end_time}'"},
|
|
||||||
`EntityType` = '{self._entity_type.value}',
|
|
||||||
`Location` = {"NULL" if self._location is None else f"'{self._location}'"}
|
|
||||||
WHERE `Id` = {self._id};
|
|
||||||
"""
|
|
||||||
)
|
|
||||||
|
|
||||||
@property
|
|
||||||
def delete_string(self) -> str:
|
|
||||||
return str(
|
|
||||||
f"""
|
|
||||||
DELETE FROM `ScheduledEvents`
|
|
||||||
WHERE `Id` = {self._id};
|
|
||||||
"""
|
|
||||||
)
|
|
@ -1,118 +0,0 @@
|
|||||||
from datetime import datetime
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
import discord
|
|
||||||
from cpl_core.database import TableABC
|
|
||||||
|
|
||||||
from bot_data.abc.history_table_abc import HistoryTableABC
|
|
||||||
from bot_data.model.server import Server
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledEventHistory(HistoryTableABC):
|
|
||||||
def __init__(
|
|
||||||
self,
|
|
||||||
interval: str,
|
|
||||||
name: str,
|
|
||||||
description: str,
|
|
||||||
channel_id: int,
|
|
||||||
start_time: datetime,
|
|
||||||
end_time: Optional[datetime],
|
|
||||||
entity_type: discord.EntityType,
|
|
||||||
location: Optional[str],
|
|
||||||
server: Optional[Server],
|
|
||||||
deleted: bool,
|
|
||||||
date_from: str,
|
|
||||||
date_to: str,
|
|
||||||
id=0,
|
|
||||||
):
|
|
||||||
HistoryTableABC.__init__(self)
|
|
||||||
self._id = id
|
|
||||||
self._interval = interval
|
|
||||||
self._name = name
|
|
||||||
self._description = description
|
|
||||||
self._channel_id = channel_id
|
|
||||||
self._start_time = start_time
|
|
||||||
self._end_time = end_time
|
|
||||||
self._entity_type = entity_type
|
|
||||||
self._location = location
|
|
||||||
self._server = server
|
|
||||||
|
|
||||||
self._deleted = deleted
|
|
||||||
self._date_from = date_from
|
|
||||||
self._date_to = date_to
|
|
||||||
|
|
||||||
@property
|
|
||||||
def id(self) -> int:
|
|
||||||
return self._id
|
|
||||||
|
|
||||||
@property
|
|
||||||
def interval(self) -> str:
|
|
||||||
return self._interval
|
|
||||||
|
|
||||||
@interval.setter
|
|
||||||
def interval(self, value: str):
|
|
||||||
self._interval = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self) -> str:
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@name.setter
|
|
||||||
def name(self, value: str):
|
|
||||||
self._name = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def description(self) -> str:
|
|
||||||
return self._description
|
|
||||||
|
|
||||||
@description.setter
|
|
||||||
def description(self, value: str):
|
|
||||||
self._description = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def channel_id(self) -> int:
|
|
||||||
return self._channel_id
|
|
||||||
|
|
||||||
@channel_id.setter
|
|
||||||
def channel_id(self, value: int):
|
|
||||||
self._channel_id = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def start_time(self) -> datetime:
|
|
||||||
return self._start_time
|
|
||||||
|
|
||||||
@start_time.setter
|
|
||||||
def start_time(self, value: datetime):
|
|
||||||
self._start_time = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def end_time(self) -> datetime:
|
|
||||||
return self._end_time
|
|
||||||
|
|
||||||
@end_time.setter
|
|
||||||
def end_time(self, value: datetime):
|
|
||||||
self._end_time = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def entity_type(self) -> discord.EntityType:
|
|
||||||
return self._entity_type
|
|
||||||
|
|
||||||
@entity_type.setter
|
|
||||||
def entity_type(self, value: discord.EntityType):
|
|
||||||
self._entity_type = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def location(self) -> str:
|
|
||||||
return self._location
|
|
||||||
|
|
||||||
@location.setter
|
|
||||||
def location(self, value: str):
|
|
||||||
self._location = value
|
|
||||||
|
|
||||||
@property
|
|
||||||
def server(self) -> Server:
|
|
||||||
return self._server
|
|
||||||
|
|
||||||
@server.setter
|
|
||||||
def server(self, value: Server):
|
|
||||||
self._server = value
|
|
@ -1,8 +0,0 @@
|
|||||||
from enum import Enum
|
|
||||||
|
|
||||||
|
|
||||||
class ScheduledEventIntervalEnum(Enum):
|
|
||||||
daily = "daily"
|
|
||||||
weekly = "weekly"
|
|
||||||
monthly = "monthly"
|
|
||||||
yearly = "yearly"
|
|
@ -1,12 +0,0 @@
|
|||||||
DROP TABLE `Servers`;
|
|
||||||
|
|
||||||
DROP TABLE `Users`;
|
|
||||||
|
|
||||||
DROP TABLE `Clients`;
|
|
||||||
|
|
||||||
DROP TABLE `KnownUsers`;
|
|
||||||
|
|
||||||
DROP TABLE `UserJoinedServers`;
|
|
||||||
|
|
||||||
DROP TABLE `UserJoinedVoiceChannel`;
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user