mirror of
https://github.com/Balshgit/gpt_chat_bot.git
synced 2025-12-15 16:10:39 +03:00
add user messages count action (#76)
* remove fastapi users dependency * add user service to chatbot service * add user save on bot info command * add user model to admin * fix tests
This commit is contained in:
16
bot_microservice/api/auth/deps.py
Normal file
16
bot_microservice/api/auth/deps.py
Normal file
@@ -0,0 +1,16 @@
|
||||
from fastapi import Depends
|
||||
|
||||
from api.deps import get_database
|
||||
from core.auth.repository import UserRepository
|
||||
from core.auth.services import UserService
|
||||
from infra.database.db_adapter import Database
|
||||
|
||||
|
||||
def get_user_repository(db: Database = Depends(get_database)) -> UserRepository:
|
||||
return UserRepository(db=db)
|
||||
|
||||
|
||||
def get_user_service(
|
||||
user_repository: UserRepository = Depends(get_user_repository),
|
||||
) -> UserService:
|
||||
return UserService(repository=user_repository)
|
||||
@@ -3,13 +3,13 @@ from starlette import status
|
||||
from starlette.responses import JSONResponse, Response
|
||||
from telegram import Update
|
||||
|
||||
from api.bot.deps import get_bot_queue, get_chatgpt_service, get_update_from_request
|
||||
from api.bot.serializers import (
|
||||
ChatGptModelSerializer,
|
||||
ChatGptModelsPrioritySerializer,
|
||||
GETChatGptModelsSerializer,
|
||||
LightChatGptModel,
|
||||
)
|
||||
from api.deps import get_bot_queue, get_chatgpt_service, get_update_from_request
|
||||
from core.bot.app import BotQueue
|
||||
from core.bot.services import ChatGptService
|
||||
from settings.config import settings
|
||||
|
||||
42
bot_microservice/api/bot/deps.py
Normal file
42
bot_microservice/api/bot/deps.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from fastapi import Depends
|
||||
from starlette.requests import Request
|
||||
from telegram import Update
|
||||
|
||||
from api.auth.deps import get_user_service
|
||||
from api.deps import get_database
|
||||
from core.auth.services import UserService
|
||||
from core.bot.app import BotApplication, BotQueue
|
||||
from core.bot.repository import ChatGPTRepository
|
||||
from core.bot.services import ChatGptService
|
||||
from infra.database.db_adapter import Database
|
||||
from settings.config import AppSettings, get_settings
|
||||
|
||||
|
||||
def get_bot_app(request: Request) -> BotApplication:
|
||||
return request.app.state.bot_app
|
||||
|
||||
|
||||
def get_bot_queue(request: Request) -> BotQueue:
|
||||
return request.app.state.queue
|
||||
|
||||
|
||||
async def get_update_from_request(request: Request, bot_app: BotApplication = Depends(get_bot_app)) -> Update | None:
|
||||
data = await request.json()
|
||||
return Update.de_json(data, bot_app.bot)
|
||||
|
||||
|
||||
def get_chatgpt_repository(
|
||||
db: Database = Depends(get_database), settings: AppSettings = Depends(get_settings)
|
||||
) -> ChatGPTRepository:
|
||||
return ChatGPTRepository(settings=settings, db=db)
|
||||
|
||||
|
||||
def new_bot_queue(bot_app: BotApplication = Depends(get_bot_app)) -> BotQueue:
|
||||
return BotQueue(bot_app=bot_app)
|
||||
|
||||
|
||||
def get_chatgpt_service(
|
||||
chatgpt_repository: ChatGPTRepository = Depends(get_chatgpt_repository),
|
||||
user_service: UserService = Depends(get_user_service),
|
||||
) -> ChatGptService:
|
||||
return ChatGptService(repository=chatgpt_repository, user_service=user_service)
|
||||
@@ -1,13 +1,7 @@
|
||||
from fastapi import Depends
|
||||
from fastapi_users_db_sqlalchemy import SQLAlchemyUserDatabase
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from starlette.requests import Request
|
||||
from telegram import Update
|
||||
|
||||
from core.auth.models.users import User
|
||||
from core.bot.app import BotApplication, BotQueue
|
||||
from core.bot.repository import ChatGPTRepository
|
||||
from core.bot.services import ChatGptService
|
||||
from infra.database.db_adapter import Database
|
||||
from settings.config import AppSettings
|
||||
|
||||
@@ -16,44 +10,9 @@ def get_settings(request: Request) -> AppSettings:
|
||||
return request.app.state.settings
|
||||
|
||||
|
||||
def get_bot_app(request: Request) -> BotApplication:
|
||||
return request.app.state.bot_app
|
||||
|
||||
|
||||
def get_bot_queue(request: Request) -> BotQueue:
|
||||
return request.app.state.queue
|
||||
|
||||
|
||||
def get_db_session(request: Request) -> AsyncSession:
|
||||
return request.app.state.db_session_factory()
|
||||
|
||||
|
||||
async def get_update_from_request(request: Request, bot_app: BotApplication = Depends(get_bot_app)) -> Update | None:
|
||||
data = await request.json()
|
||||
return Update.de_json(data, bot_app.bot)
|
||||
|
||||
|
||||
def get_database(settings: AppSettings = Depends(get_settings)) -> Database:
|
||||
return Database(settings=settings)
|
||||
|
||||
|
||||
def get_chatgpt_repository(
|
||||
db: Database = Depends(get_database), settings: AppSettings = Depends(get_settings)
|
||||
) -> ChatGPTRepository:
|
||||
return ChatGPTRepository(settings=settings, db=db)
|
||||
|
||||
|
||||
def new_bot_queue(bot_app: BotApplication = Depends(get_bot_app)) -> BotQueue:
|
||||
return BotQueue(bot_app=bot_app)
|
||||
|
||||
|
||||
def get_chatgpt_service(
|
||||
chatgpt_repository: ChatGPTRepository = Depends(get_chatgpt_repository),
|
||||
) -> ChatGptService:
|
||||
return ChatGptService(repository=chatgpt_repository)
|
||||
|
||||
|
||||
async def get_user_db( # type: ignore[misc]
|
||||
session: AsyncSession = Depends(get_db_session),
|
||||
) -> SQLAlchemyUserDatabase: # type: ignore[type-arg]
|
||||
yield SQLAlchemyUserDatabase(session, User)
|
||||
|
||||
@@ -3,7 +3,7 @@ from fastapi.responses import ORJSONResponse
|
||||
from starlette import status
|
||||
from starlette.responses import Response
|
||||
|
||||
from api.deps import get_chatgpt_service
|
||||
from api.bot.deps import get_chatgpt_service
|
||||
from api.exceptions import BaseAPIException
|
||||
from constants import INVALID_GPT_REQUEST_MESSAGES
|
||||
from core.bot.services import ChatGptService
|
||||
|
||||
Reference in New Issue
Block a user