Added PyCharm support (fixed typing and so on)

This commit is contained in:
2022-01-08 19:02:50 +01:00
parent 7f3541c5c8
commit 291d9ad6d6
21 changed files with 678 additions and 53 deletions

View File

@@ -19,7 +19,7 @@ class Main:
app_builder.use_extension(DatabaseExtension)
app_builder.use_extension(BootLogExtension)
app_builder.use_startup(Startup)
self._gismo: Gismo = await app_builder.build_async()
self._gismo = await app_builder.build_async()
await self._gismo.run_async()
async def stop(self):

View File

@@ -52,27 +52,27 @@ class Startup(StartupABC):
def __init__(self):
StartupABC.__init__(self)
self._start_time = datetime.now()
self._config: Optional[ConfigurationABC] = None
async def configure_configuration(self, configuration: ConfigurationABC, environment: ApplicationEnvironment) -> ConfigurationABC:
environment.set_working_directory(os.path.dirname(os.path.realpath(__file__)))
configuration.add_environment_variables('GISMO_')
configuration.add_json_file(f'config/appsettings.json', optional=False)
configuration.add_json_file(f'config/appsettings.{environment.environment_name}.json', optional=True)
configuration.add_json_file(f'config/appsettings.{environment.host_name}.json', optional=True)
configuration.add_configuration('Startup_StartTime', self._start_time)
configuration.add_configuration('Startup_StartTime', str(self._start_time))
self._config = configuration
return configuration
async def configure_services(self, services: ServiceCollectionABC, environment: ApplicationEnvironment) -> ServiceProviderABC:
services.add_logging()
services.add_db_context(DBContext, self._config.get_configuration(DatabaseSettings))
# general services
services.add_singleton(ModuleServiceABC, ModuleService)
services.add_singleton(BotServiceABC, BotService)
@@ -89,7 +89,7 @@ class Startup(StartupABC):
# module services
services.add_singleton(PermissionServiceABC, PermissionService)
# commands
services.add_singleton(CommandABC, BaseCommandService)
@@ -103,12 +103,12 @@ class Startup(StartupABC):
services.add_transient(MigrationABC, InitialMigration)
services.add_transient(MigrationABC, Migration_0_3)
services.add_transient(MigrationABC, Migration_0_3_1)
provider: ServiceProviderABC = services.build_service_provider()
startup_init_time = round((datetime.now() - self._config.get_configuration('Startup_StartTime')).total_seconds(), 2)
self._config.add_configuration('Startup_InitTime', startup_init_time)
self._config.add_configuration('Startup_InitTime', str(startup_init_time))
logger: LoggerABC = provider.get_service(LoggerABC)
logger.debug(__name__, f'Startup Init time: {startup_init_time}s')
return provider

View File

@@ -70,7 +70,7 @@ class MessageService(MessageServiceABC):
self._db.save_changes()
self._logger.info(__name__, f'Sent message to user {receiver.id}')
async def send_ctx_msg(self, ctx: Context, message: Union[str, discord.File]):
async def send_ctx_msg(self, ctx: Context, message: str, file: discord.File = None):
if ctx is None:
self._logger.warn(__name__, 'Message context is empty')
self._logger.debug(__name__, f'Message: {message}')

View File

@@ -9,7 +9,7 @@ from cpl_core.dependency_injection import ServiceProviderABC
from cpl_core.environment import ApplicationEnvironmentABC
from cpl_core.logging import LoggerABC
from cpl_core.utils import String
from cpl_query.extension import List
from cpl_query.extension import List, OrderedIterableABC
from discord.ext import commands
from gismo_core.abc.events.on_bulk_message_delete_abc import OnBulkMessageDeleteABC
from gismo_core.abc.events.on_connect_abc import OnConnectABC
@@ -72,7 +72,7 @@ class ModuleService(ModuleServiceABC, commands.Cog, metaclass=CommandsMeta):
self._modules: List[ModuleABC] = List()
self._modules.extend(ModuleABC.__subclasses__())
def _get_modules(self, t: type) -> List[ModuleABC]:
def _get_modules(self, t: type) -> OrderedIterableABC:
module_types = self._modules.where(lambda m: issubclass(m, t))
modules = List(t)
for module_type in module_types:
@@ -81,14 +81,14 @@ class ModuleService(ModuleServiceABC, commands.Cog, metaclass=CommandsMeta):
self._logger.warn(__name__, f'Module {module_type} not found in services!')
break
if (module.settings_type is not None):
if module.settings_type is not None:
with open(f'config/{String.convert_to_snake_case(type(module).__name__).lower()}.json', encoding='utf-8') as cfg:
json_cfg = json.load(cfg)
for id in json_cfg:
for index in json_cfg:
settings: ConfigurationModelABC = module.settings_type()
settings.from_dict(json_cfg[id])
self._config.add_configuration(f'{type(module).__name__}_{id}', settings)
self._logger.debug(__name__, f'Added config: {type(module).__name__}_{id}')
settings.from_dict(json_cfg[index])
self._config.add_configuration(f'{type(module).__name__}_{index}', settings)
self._logger.debug(__name__, f'Added config: {type(module).__name__}_{index}')
modules.append(module)

View File

@@ -14,7 +14,7 @@ class ClientRepositoryABC(ABC):
def get_clients(self) -> List[Client]: pass
@abstractmethod
def get_client_by_id(self, id: int) -> Client: pass
def get_client_by_id(self, client_id: int) -> Client: pass
@abstractmethod
def get_client_by_discord_id(self, discord_id: int) -> Client: pass
@@ -38,16 +38,16 @@ class ClientRepositoryABC(ABC):
def delete_client(self, client: Client): pass
@abstractmethod
def apppend_sent_message_count(self, id: int, server_id: int, value: int): pass
def append_sent_message_count(self, client_id: int, server_id: int, value: int): pass
@abstractmethod
def apppend_received_message_count(self, id: int, server_id: int, value: int): pass
def append_received_message_count(self, client_id: int, server_id: int, value: int): pass
@abstractmethod
def apppend_deleted_message_count(self, id: int, server_id: int, value: int): pass
def append_deleted_message_count(self, client_id: int, server_id: int, value: int): pass
@abstractmethod
def apppend_received_command_count(self, id: int, server_id: int, value: int): pass
def append_received_command_count(self, client_id: int, server_id: int, value: int): pass
@abstractmethod
def apppend_moved_users_count(self, id: int, server_id: int, value: int): pass
def append_moved_users_count(self, client_id: int, server_id: int, value: int): pass

View File

@@ -10,8 +10,7 @@ class DBContext(DatabaseContext):
self._logger = logger
DatabaseContext.__init__(self)
def connect(self, database_settings: DatabaseSettings):
try:
self._logger.debug(__name__, "Connecting to database")

View File

@@ -3,6 +3,7 @@ from cpl_core.logging import LoggerABC
from gismo_data.abc.migration_abc import MigrationABC
from gismo_data.db_context import DBContext
class Migration_0_3(MigrationABC):
def __init__(self, logger: LoggerABC, db: DBContext):

View File

@@ -3,6 +3,7 @@ from cpl_core.logging import LoggerABC
from gismo_data.abc.migration_abc import MigrationABC
from gismo_data.db_context import DBContext
class Migration_0_3_1(MigrationABC):
def __init__(self, logger: LoggerABC, db: DBContext):

View File

@@ -37,9 +37,9 @@ class ClientRepositoryService(ClientRepositoryABC):
return clients
def get_client_by_id(self, id: int) -> Client:
self._logger.trace(__name__, f'Send SQL command: {Client.get_select_by_id_string(id)}')
result = self._context.select(Client.get_select_by_id_string(id))
def get_client_by_id(self, client_id: int) -> Client:
self._logger.trace(__name__, f'Send SQL command: {Client.get_select_by_id_string(client_id)}')
result = self._context.select(Client.get_select_by_id_string(client_id))
return Client(
result[1],
result[2],
@@ -147,27 +147,27 @@ class ClientRepositoryService(ClientRepositoryABC):
return client
def apppend_sent_message_count(self, id: int, server_id: int, value: int):
client = self._get_client_and_server(id, server_id)
def append_sent_message_count(self, client_id: int, server_id: int, value: int):
client = self._get_client_and_server(client_id, server_id)
client.sent_message_count += value
self.update_client(client)
def apppend_received_message_count(self, id: int, server_id: int, value: int):
client = self._get_client_and_server(id, server_id)
def append_received_message_count(self, client_id: int, server_id: int, value: int):
client = self._get_client_and_server(client_id, server_id)
client.received_message_count += value
self.update_client(client)
def apppend_deleted_message_count(self, id: int, server_id: int, value: int):
client = self._get_client_and_server(id, server_id)
def append_deleted_message_count(self, client_id: int, server_id: int, value: int):
client = self._get_client_and_server(client_id, server_id)
client.deleted_message_count += value
self.update_client(client)
def apppend_received_command_count(self, id: int, server_id: int, value: int):
client = self._get_client_and_server(id, server_id)
def append_received_command_count(self, client_id: int, server_id: int, value: int):
client = self._get_client_and_server(client_id, server_id)
client.received_command_count += value
self.update_client(client)
def apppend_moved_users_count(self, id: int, server_id: int, value: int):
client = self._get_client_and_server(id, server_id)
def append_moved_users_count(self, client_id: int, server_id: int, value: int):
client = self._get_client_and_server(client_id, server_id)
client.moved_users_count += value
self.update_client(client)

View File

@@ -27,7 +27,7 @@ class KnownUserRepositoryService(KnownUserRepositoryABC):
users.append(KnownUser(
result[1],
result[2],
self._servers.get_server_by_id(result[3]),
result[3],
id=result[0]
))
@@ -39,7 +39,7 @@ class KnownUserRepositoryService(KnownUserRepositoryABC):
return KnownUser(
result[1],
result[2],
self._servers.get_server_by_id(result[3]),
result[3],
id=result[0]
)
@@ -49,7 +49,7 @@ class KnownUserRepositoryService(KnownUserRepositoryABC):
return KnownUser(
result[1],
result[2],
self._servers.get_server_by_id(result[3]),
result[3],
id=result[0]
)

View File

@@ -1,3 +1,5 @@
from typing import Type
from cpl_core.database.context import DatabaseContextABC
from cpl_core.dependency_injection import ServiceProviderABC
from cpl_core.logging import LoggerABC
@@ -15,7 +17,7 @@ class MigrationService:
self._db = db
self._cursor = db.cursor
self._migrations: list[MigrationABC] = MigrationABC.__subclasses__()
self._migrations: list[Type[MigrationABC]] = MigrationABC.__subclasses__()
def migrate(self):
self._logger.info(__name__, f"Running Migrations")
@@ -28,8 +30,8 @@ class MigrationService:
if result:
# there is a table named "tableName"
self._logger.trace(__name__, f"Running SQL Command: {MigrationHistory.get_select_by_id_string(migration_id)}")
migration_from_db: MigrationHistory = self._db.select(MigrationHistory.get_select_by_id_string(migration_id))
self._logger.trace(__name__, migration_from_db)
migration_from_db = self._db.select(MigrationHistory.get_select_by_id_string(migration_id))
self._logger.trace(__name__, str(migration_from_db))
if migration_from_db is not None and len(migration_from_db) > 0:
continue

View File

@@ -27,9 +27,9 @@ class ServerRepositoryService(ServerRepositoryABC):
return servers
def get_server_by_id(self, id: int) -> Server:
self._logger.trace(__name__, f'Send SQL command: {Server.get_select_by_id_string(id)}')
result = self._context.select(Server.get_select_by_id_string(id))[0]
def get_server_by_id(self, server_id: int) -> Server:
self._logger.trace(__name__, f'Send SQL command: {Server.get_select_by_id_string(server_id)}')
result = self._context.select(Server.get_select_by_id_string(server_id))[0]
return Server(
result[1],
id=result[0]

View File

@@ -56,6 +56,8 @@ class UserRepositoryService(UserRepositoryABC):
id=result[0]
))
return users
def get_user_by_discord_id_and_server_id(self, discord_id: int, server_id: int) -> User:
self._logger.trace(__name__, f'Send SQL command: {User.get_select_by_discord_id_and_server_id_string(discord_id, server_id)}')
result = self._context.select(User.get_select_by_discord_id_and_server_id_string(discord_id, server_id))[0]
@@ -78,9 +80,9 @@ class UserRepositoryService(UserRepositoryABC):
return User(
result[1],
result[2],
result[3],
result[4],
self._servers.get_server_by_id(result[3]),
result[4],
result[5],
id=result[0]
)