Преглед на файлове

Replace repositories by services in app and builder modules

Librellium преди 1 месец
родител
ревизия
f6e3a2e326
променени са 2 файла, в които са добавени 25 реда и са изтрити 12 реда
  1. 20 9
      anonflow/app.py
  2. 5 3
      anonflow/bot/builder.py

+ 20 - 9
anonflow/app.py

@@ -17,6 +17,8 @@ from anonflow.bot import (
 from anonflow.config import Config
 from anonflow.database import (
     Database,
+    BanRepository,
+    ModeratorRepository,
     UserRepository
 )
 from anonflow.moderation import (
@@ -24,6 +26,7 @@ from anonflow.moderation import (
     ModerationPlanner,
     RuleManager
 )
+from anonflow.services import ModeratorService, UserService
 from anonflow.translator import Translator
 
 from . import paths
@@ -45,7 +48,8 @@ class Application:
         self.dispatcher: Optional[Dispatcher] = None
         self.config: Optional[Config] = None
         self.database: Optional[Database] = None
-        self.user_repository: Optional[UserRepository] = None
+        self.moderator_service: Optional[ModeratorService] = None
+        self.user_service: Optional[UserService] = None
         self.translator: Optional[Translator] = None
         self.moderation_executor: Optional[ModerationExecutor] = None
         self.message_sender: Optional[MessageSender] = None
@@ -65,10 +69,14 @@ class Application:
         self.database = Database(config.get_database_url())
         await self.database.init()
 
-        self.user_repository = UserRepository(
+        self.user_service = UserService(
             self.database,
-            config.database.repositories.user.cache_size,
-            config.database.repositories.user.cache_ttl
+            UserRepository()
+        )
+        self.moderator_service = ModeratorService(
+            self.database,
+            BanRepository(),
+            ModeratorRepository()
         )
 
     def _init_logging(self):
@@ -101,11 +109,12 @@ class Application:
         dispatcher = req("dispatcher", self.dispatcher)
         config = req("config", self.config)
         translator = req("translator", self.translator)
-        user_repository = req("user_repository", self.user_repository)
+        moderator_service = req("moderator_service", self.moderator_service)
+        user_service = req("user_service", self.user_service)
 
         dispatcher.update.middleware(
             BlockedMiddleware(
-                user_repository=user_repository,
+                moderator_service=moderator_service,
                 translator=translator,
             )
         )
@@ -120,7 +129,7 @@ class Application:
 
         dispatcher.update.middleware(
             RegisteredMiddleware(
-                user_repository=user_repository,
+                user_service=user_service,
                 translator=translator,
             )
         )
@@ -179,7 +188,8 @@ class Application:
         dispatcher = req("dispatcher", self.dispatcher)
         config = req("config", self.config)
         database = req("database", self.database)
-        user_repository = req("user_repository", self.user_repository)
+        moderator_service = req("moderator_service", self.moderator_service)
+        user_service = req("user_service", self.user_service)
         translator = req("translator", self.translator)
         message_sender = req("message_sender", self.message_sender)
 
@@ -187,7 +197,8 @@ class Application:
             build(
                 config=config,
                 database=database,
-                user_repository=user_repository,
+                moderator_service=moderator_service,
+                user_service=user_service,
                 translator=translator,
                 message_sender=message_sender,
                 moderation_executor=self.moderation_executor,

+ 5 - 3
anonflow/bot/builder.py

@@ -3,8 +3,9 @@ from typing import Optional
 from aiogram import Router
 
 from anonflow.config import Config
-from anonflow.database import Database, UserRepository
+from anonflow.database import Database
 from anonflow.moderation import ModerationExecutor
+from anonflow.services import ModeratorService, UserService
 from anonflow.translator import Translator
 
 from .messaging import MessageSender
@@ -14,7 +15,8 @@ from .routers import InfoRouter, MediaRouter, StartRouter, TextRouter
 def build(
     config: Config,
     database: Database,
-    user_repository: UserRepository,
+    moderator_service: ModeratorService,
+    user_service: UserService,
     translator: Translator,
     message_sender: MessageSender,
     moderation_executor: Optional[ModerationExecutor] = None,
@@ -24,7 +26,7 @@ def build(
     routers = [
         StartRouter(
             translator=translator,
-            user_repository=user_repository
+            user_service=user_service
         ),
         InfoRouter(translator=translator),
         TextRouter(