make more simple and ruff format

This commit is contained in:
Ivanov Matvey 2025-03-13 20:12:34 +10:00
parent b2ed5260a6
commit 883e1d4359
14 changed files with 20 additions and 117 deletions

View File

@ -2,4 +2,4 @@ from .db1.user import User as User
from .db1.blog import Blog as Blog
from .db1.post import Post as Post
from .db2.log import Log as Log
from .db2.log import Log as Log

View File

@ -1,17 +1,20 @@
from enum import Enum
from datetime import datetime, timezone
def utc_signed_now():
return datetime.now(timezone.utc)
class SpaceType(Enum):
GLOBAL=0
BLOG=1
POST=2
GLOBAL = 0
BLOG = 1
POST = 2
class EventType(Enum):
LOGIN=0
COMMENT=1
CREATE_POST=2
DELETE_POST=3
LOGOUT=4
LOGIN = 0
COMMENT = 1
CREATE_POST = 2
DELETE_POST = 3
LOGOUT = 4

View File

@ -12,4 +12,3 @@ class Post(Base):
text: Mapped[str] = mapped_column(default="")
author_id: Mapped[int] = mapped_column(ForeignKey(User.id))
# author: Mapped[User] = relationship(lazy="selectin")

View File

@ -8,4 +8,3 @@ class Base(AsyncAttrs, DeclarativeBase):
"""
id: Mapped[int] = mapped_column(autoincrement=True, primary_key=True)

View File

@ -10,7 +10,9 @@ from ..common import utc_signed_now, SpaceType, EventType
class Log(Base):
__tablename__ = "log"
id: Mapped[int] = mapped_column(INTEGER, primary_key=True, autoincrement=True)
date_time: Mapped[datetime] = mapped_column("datetime", TIMESTAMP(timezone=True), default=utc_signed_now)
date_time: Mapped[datetime] = mapped_column(
"datetime", TIMESTAMP(timezone=True), default=utc_signed_now
)
user_id: Mapped[int]
space_type: Mapped[SpaceType]
event_type: Mapped[EventType]

View File

@ -1,21 +0,0 @@
from src.utils.repository import SQLAlchemyRepository
from .models import (
User,
Blog,
Post,
Log
)
class userRepository(SQLAlchemyRepository):
# here I can write methods only for this repository
model = User
class BlogRepository(SQLAlchemyRepository):
model = Blog
class PostRepository(SQLAlchemyRepository):
model = Post
class LogRepository(SQLAlchemyRepository):
model = Log

View File

@ -1,20 +0,0 @@
from sqlalchemy.ext.asyncio import AsyncSession
from src.adapters.database.repositories import (
userRepository,
BlogRepository,
PostRepository,
LogRepository
)
class RepositoriesGatewayDB1:
def __init__(self, session: AsyncSession):
self.user = userRepository(session)
self.blog = BlogRepository(session)
self.post = PostRepository(session)
class RepositoriesGatewayDB2:
def __init__(self, session: AsyncSession):
self.log = LogRepository(session)

View File

@ -1 +1 @@
from .healthcheck import healthcheck_router as healthcheck_router
from .healthcheck import healthcheck_router as healthcheck_router

View File

@ -2,19 +2,19 @@ from typing import Annotated
from fastapi import APIRouter, Depends
from src.unit_of_work import UnitOfWork
dataset_router = APIRouter()
@dataset_router.get("/comments", response_model=None)
async def get_database_comments(uow: Annotated[UnitOfWork, Depends(UnitOfWork)]):
async def get_database_comments():
pass
# async with uow:
# return await FavouriteService(uow, jwt_token).get_favourites(
# page=page, limit=limit
# )
@dataset_router.get("/general", response_model=None)
async def get_database_general(uow: Annotated[UnitOfWork, Depends(UnitOfWork)]):
pass
async def get_database_general():
pass

View File

@ -20,4 +20,3 @@ app.include_router(healthcheck_router)
main_app_router = APIRouter(prefix="/api")
app.include_router(main_app_router)

View File

@ -1,10 +0,0 @@
from src.unit_of_work import UnitOfWork
class DatasetCommentsService:
def __init__(self, uow: UnitOfWork):
self.uow = uow
async def get_dataset(self):
# data = await self.uow.repositories
pass

View File

@ -1,10 +0,0 @@
from src.unit_of_work import UnitOfWork
class DatasetGeneralService:
def __init__(self, uow: UnitOfWork):
self.uow = uow
async def get_dataset(self):
# data = await self.uow.repositories
pass

View File

@ -1,37 +0,0 @@
from asyncio import shield
from src.adapters.database.repository_gateway import RepositoriesGatewayDB1, RepositoriesGatewayDB2
from src.adapters.database.session import async_session_maker_db1, async_session_maker_db2
from src.utils.repository import _sentinel
class UnitOfWork:
repositories = _sentinel
def __init__(self):
self.db1_session_factory = async_session_maker_db1
self.db2_session_factory = async_session_maker_db2
async def __aenter__(self):
self.db1_session = self.db1_session_factory()
self.db2_session = self.db2_session_factory()
self.repositories_db1 = RepositoriesGatewayDB1(self.db1_session)
self.repositories_db2 = RepositoriesGatewayDB2(self.db2_session)
return self
async def __aexit__(self, *args):
await self.rollback()
await shield(self.db1_session.close())
await shield(self.db2_session.close())
async def commit(self):
await self.db1_session.commit()
await self.db2_session.commit()
async def rollback(self):
await self.db1_session.rollback()
await self.db2_session.rollback()

View File

@ -140,4 +140,3 @@ class SQLAlchemyRepository(AbstractRepository):
res = await self.session.execute(stmt)
return res.scalars()