Change how services are provided so that they don't go via "extensions"
This commit is contained in:
parent
7b6d351282
commit
72ece8af72
3 changed files with 25 additions and 16 deletions
35
src/main.py
35
src/main.py
|
|
@ -1,8 +1,10 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from src.services.notifications import NotificationService, get_notification_service
|
||||
from src.services.email import get_service as get_email_service
|
||||
from src.services.users import get_service as get_user_service
|
||||
from src.services.email import EmailService, get_email_service
|
||||
from src.services.auth import AuthService
|
||||
from src.services.users import UserService
|
||||
from dataclasses import dataclass
|
||||
from src.infra.db import get_database
|
||||
from src.infra.users import UserRepoImpl
|
||||
from waitress import serve
|
||||
|
|
@ -15,20 +17,31 @@ from src.config import parse_config, Config
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@dataclass
|
||||
class AppServices:
|
||||
users: UserService
|
||||
auth: AuthService
|
||||
email: EmailService
|
||||
notifications: NotificationService
|
||||
|
||||
|
||||
class MyFlask(Flask):
|
||||
services: AppServices
|
||||
|
||||
|
||||
def create_app(name: str, config: Config) -> Flask:
|
||||
logging.basicConfig(level=config.logging.level, format=('%(asctime)s %(levelname)s [%(name)s] %(message)s'))
|
||||
|
||||
app = Flask(name)
|
||||
|
||||
email_service = get_email_service(config.email)
|
||||
notification_service = make_notification_service(email_service)
|
||||
app = MyFlask(name)
|
||||
database = get_database(config.database)
|
||||
user_repo = UserRepoImpl(database)
|
||||
user_service = get_user_service(user_repo)
|
||||
|
||||
app.extensions['email'] = email_service
|
||||
app.extensions['notifications'] = notification_service
|
||||
app.extensions['user_service'] = user_service
|
||||
email_service = get_email_service(config.email)
|
||||
app.services = AppServices(
|
||||
users=UserService(user_repo),
|
||||
auth=AuthService(config.auth),
|
||||
email=email_service,
|
||||
notifications=get_notification_service(email_service),
|
||||
)
|
||||
|
||||
if config.host:
|
||||
app.config['SERVER_NAME'] = config.host
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue