Added stats table #46

This commit is contained in:
2022-11-09 18:36:48 +01:00
parent b5080d8c04
commit 1c9c265ba8
4 changed files with 112 additions and 33 deletions

View File

@@ -0,0 +1,108 @@
from datetime import datetime
from typing import Optional
from cpl_core.database import TableABC
from bot_data.model.server import Server
class Statistic(TableABC):
def __init__(self, name: str, description: str, code: str, server: Server, created_at: datetime=None, modified_at: datetime=None, id=0):
self._id = id
self._name = name
self._description = description
self._code = code
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
@property
def description(self) -> str:
return self._description
@description.setter
def description(self, value: str):
self._description = value
@property
def code(self) -> str:
return self._code
@code.setter
def code(self, value: str):
self._code = value
@property
def server(self) -> Server:
return self._server
@staticmethod
def get_select_all_string() -> str:
return str(f"""
SELECT * FROM `Statistics`;
""")
@staticmethod
def get_select_by_id_string(id: int) -> str:
return str(f"""
SELECT * FROM `Statistics`
WHERE `Id` = {id};
""")
@staticmethod
def get_select_by_name_string(name: str, s_id: int) -> str:
return str(f"""
SELECT * FROM `Statistics`
WHERE `Name` = {name};
""")
@staticmethod
def get_select_by_server_string(s_id: int) -> str:
return str(f"""
SELECT * FROM `Statistics`
WHERE `ServerId` = {s_id};
""")
@property
def insert_string(self) -> str:
return str(f"""
INSERT INTO `Statistics` (
`Name`, `Description`, `Code`, `ServerId`, `CreatedAt`, `LastModifiedAt`
) VALUES (
'{self._name}',
'{self._description}',
'{self._code}',
{self._server.server_id},
'{self._created_at}',
'{self._modified_at}'
);
""")
@property
def udpate_string(self) -> str:
return str(f"""
UPDATE `Statistics`
SET `Name` = {self._name},
`Description` = '{self._description}'
`Code` = '{self._code}'
`LastModifiedAt` = '{self._modified_at}'
WHERE `Id` = {self._id};
""")
@property
def delete_string(self) -> str:
return str(f"""
DELETE FROM `Statistics`
WHERE `Id` = {self._id};
""")