New structure

This commit is contained in:
2025-04-21 13:50:51 +02:00
parent 1eba79cc5a
commit abe0cbb173
45 changed files with 10 additions and 50 deletions

View File

@@ -1,31 +1,38 @@
from pydantic import BaseModel from pydantic import BaseModel
class TwitchConfig(BaseModel): class TwitchConfig(BaseModel):
id: int id: int
name: str name: str
class NotificationsConfig(BaseModel): class NotificationsConfig(BaseModel):
start_stream: str start_stream: str
change_category: str | None = None change_category: str | None = None
redemption_reward: str | None = None redemption_reward: str | None = None
class GamesListConfig(BaseModel): class GamesListConfig(BaseModel):
channel_id: int channel_id: int
message_id: int message_id: int
class DiscordConfig(BaseModel): class DiscordConfig(BaseModel):
guild_id: int guild_id: int
notifications_channel_id: int notifications_channel_id: int
games_list: GamesListConfig | None = None games_list: GamesListConfig | None = None
roles: dict[str, int] | None = None roles: dict[str, int] | None = None
class TelegramConfig(BaseModel): class TelegramConfig(BaseModel):
notifications_channel_id: int notifications_channel_id: int
class IntegrationsConfig(BaseModel): class IntegrationsConfig(BaseModel):
discord: DiscordConfig | None = None discord: DiscordConfig | None = None
telegram: TelegramConfig | None = None telegram: TelegramConfig | None = None
class StreamerConfig(BaseModel): class StreamerConfig(BaseModel):
twitch: TwitchConfig twitch: TwitchConfig
notifications: NotificationsConfig notifications: NotificationsConfig

View File

@@ -18,10 +18,10 @@ class UserRepository(BaseRepository):
) )
@classmethod @classmethod
async def get_or_create_user(cls, newUser: CreateUser) -> User: async def get_or_create_user(cls, new_user: CreateUser) -> User:
filter_data = {} filter_data = {}
for provider, data in newUser.oauths.items(): for provider, data in new_user.oauths.items():
filter_data[f"oauths.{provider}.id"] = data.id filter_data[f"oauths.{provider}.id"] = data.id
async with cls.connect() as collection: async with cls.connect() as collection:
@@ -29,7 +29,7 @@ class UserRepository(BaseRepository):
filter_data, filter_data,
{ {
"$setOnInsert": { "$setOnInsert": {
**newUser.model_dump(), **new_user.model_dump(),
} }
}, },
upsert=True, upsert=True,

View File

@@ -1,45 +0,0 @@
import logging
import sys
from modules.games_list import start as start_games_list_module
from modules.stream_notifications import start as start_stream_notifications_module
from core.mongo import mongo_manager
from core.redis import redis_manager
from core.broker import broker
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
async def main():
logger.info("Starting services...")
if len(sys.argv) != 2:
raise RuntimeError("Usage: python main.py <module>")
module = sys.argv[1]
await mongo_manager.init()
await redis_manager.init()
if not broker.is_worker_process:
await broker.startup()
if module == "games_list":
await start_games_list_module()
elif module == "stream_notifications":
await start_stream_notifications_module()
else:
raise RuntimeError(f"Unknown module: {module}")
exit(0)
if __name__ == "__main__":
from asyncio import run
run(main())

View File

@@ -1,2 +0,0 @@
from modules.scheduler_sync.tasks import * # noqa: F403
from modules.stream_notifications.tasks import * # noqa: F403