0.3 - Levelsystem (#25) #92
@ -20,6 +20,8 @@ class LevelMigration(MigrationABC):
|
||||
CREATE TABLE IF NOT EXISTS `Levels` (
|
||||
`Id` BIGINT NOT NULL AUTO_INCREMENT,
|
||||
`Name` VARCHAR(255) NOT NULL,
|
||||
`Color` VARCHAR(7) NOT NULL,
|
||||
`MinXp` BIGINT NOT NULL,
|
||||
`PermissionInt` BIGINT NOT NULL,
|
||||
`ServerId` BIGINT,
|
||||
PRIMARY KEY(`Id`),
|
||||
|
116
kdb-bot/src/bot_data/model/level.py
Normal file
116
kdb-bot/src/bot_data/model/level.py
Normal file
@ -0,0 +1,116 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from cpl_core.database import TableABC
|
||||
|
||||
from bot_data.model.server import Server
|
||||
|
||||
|
||||
class Level(TableABC):
|
||||
|
||||
def __init__(self, name: str, color: str, min_xp: int, permissions: int, server: Optional[Server], created_at: datetime = None, modified_at: datetime = None, id=0):
|
||||
self._id = id
|
||||
self._name = name
|
||||
self._color = color
|
||||
self._min_xp = min_xp
|
||||
self._permissions = permissions
|
||||
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 name(self) -> str:
|
||||
return self._name
|
||||
|
||||
@name.setter
|
||||
def name(self, value: str):
|
||||
self._name = value
|
||||
|
||||
@property
|
||||
def color(self) -> str:
|
||||
return self._color
|
||||
|
||||
@color.setter
|
||||
def color(self, value: str):
|
||||
self._color = value
|
||||
|
||||
@property
|
||||
def min_xp(self) -> int:
|
||||
return self._min_xp
|
||||
|
||||
@min_xp.setter
|
||||
def min_xp(self, value: int):
|
||||
self._min_xp = value
|
||||
|
||||
@property
|
||||
def permissions(self) -> int:
|
||||
return self._permissions
|
||||
|
||||
@permissions.setter
|
||||
def permissions(self, value: int):
|
||||
self._permissions = value
|
||||
|
||||
@property
|
||||
def server(self) -> Optional[Server]:
|
||||
return self._server
|
||||
|
||||
@staticmethod
|
||||
def get_select_all_string() -> str:
|
||||
return str(f"""
|
||||
SELECT * FROM `Levels`;
|
||||
""")
|
||||
|
||||
@staticmethod
|
||||
def get_select_by_id_string(id: int) -> str:
|
||||
return str(f"""
|
||||
SELECT * FROM `Levels`
|
||||
WHERE `Id` = {id};
|
||||
""")
|
||||
|
||||
@staticmethod
|
||||
def get_select_by_server_id_string(dc_id: int, s_id: int) -> str:
|
||||
return str(f"""
|
||||
SELECT * FROM `Levels`
|
||||
WHERE `ServerId` = {s_id};
|
||||
""")
|
||||
|
||||
@property
|
||||
def insert_string(self) -> str:
|
||||
return str(f"""
|
||||
INSERT INTO `Levels` (
|
||||
`Name`, `Color`, `MinXp`, `PermissionInt`, `ServerId`, `CreatedAt`, `LastModifiedAt`
|
||||
) VALUES (
|
||||
`{self._name}`,
|
||||
`{self._color}`,
|
||||
{self._min_xp},
|
||||
{self._permissions},
|
||||
{self._server.server_id},
|
||||
'{self._created_at}',
|
||||
'{self._modified_at}'
|
||||
);
|
||||
""")
|
||||
|
||||
@property
|
||||
def udpate_string(self) -> str:
|
||||
return str(f"""
|
||||
UPDATE `Levels`
|
||||
SET `Name` = {self._name},
|
||||
`Name` = {self._name},
|
||||
`Color` = {self._color},
|
||||
`MinXp` = {self._min_xp},
|
||||
`PermissionInt` = {self._permissions},
|
||||
`LastModifiedAt` = '{self._modified_at}'
|
||||
WHERE `Id` = {self._id};
|
||||
""")
|
||||
|
||||
@property
|
||||
def delete_string(self) -> str:
|
||||
return str(f"""
|
||||
DELETE FROM `Levels`
|
||||
WHERE `Id` = {self._id};
|
||||
Ebola-Chan marked this conversation as resolved
|
||||
""")
|
Loading…
Reference in New Issue
Block a user
Evtl noch ein
und
zu
unbenennen?
Da wäre noch die Frage wegen der Konsistenz: Wollen wir wie bei den Get-Strings nur die ID übergeben oder "self"?
Sollte der Bot von z.B. einem Server genommen werden, können die Level zu den Server schnell und einfach gepurged werden.
Evtl kann dies auch zu einem kleinen Ticket werden
Aktuell wollen wir den Fall nicht abdecken, dass der Bot einen Server verlässt bzw. ignorieren dass. So kann der Bot zukünftig wiedergeholt werden und die "Konfig" ist dann nicht weg.
Daher halte ich den vorschlag nicht für brauchbar. Des weiteren wäre mein Ansatz an stelle das ganze aus Python zu machen (wegen Logging und so).