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.blog import Blog as Blog
from .db1.post import Post as Post 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 enum import Enum
from datetime import datetime, timezone from datetime import datetime, timezone
def utc_signed_now(): def utc_signed_now():
return datetime.now(timezone.utc) return datetime.now(timezone.utc)
class SpaceType(Enum): class SpaceType(Enum):
GLOBAL=0 GLOBAL = 0
BLOG=1 BLOG = 1
POST=2 POST = 2
class EventType(Enum): class EventType(Enum):
LOGIN=0 LOGIN = 0
COMMENT=1 COMMENT = 1
CREATE_POST=2 CREATE_POST = 2
DELETE_POST=3 DELETE_POST = 3
LOGOUT=4 LOGOUT = 4

View File

@ -12,4 +12,3 @@ class Post(Base):
text: Mapped[str] = mapped_column(default="") text: Mapped[str] = mapped_column(default="")
author_id: Mapped[int] = mapped_column(ForeignKey(User.id)) author_id: Mapped[int] = mapped_column(ForeignKey(User.id))
# author: Mapped[User] = relationship(lazy="selectin") # 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) 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): class Log(Base):
__tablename__ = "log" __tablename__ = "log"
id: Mapped[int] = mapped_column(INTEGER, primary_key=True, autoincrement=True) 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] user_id: Mapped[int]
space_type: Mapped[SpaceType] space_type: Mapped[SpaceType]
event_type: Mapped[EventType] 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 fastapi import APIRouter, Depends
from src.unit_of_work import UnitOfWork
dataset_router = APIRouter() dataset_router = APIRouter()
@dataset_router.get("/comments", response_model=None) @dataset_router.get("/comments", response_model=None)
async def get_database_comments(uow: Annotated[UnitOfWork, Depends(UnitOfWork)]): async def get_database_comments():
pass pass
# async with uow: # async with uow:
# return await FavouriteService(uow, jwt_token).get_favourites( # return await FavouriteService(uow, jwt_token).get_favourites(
# page=page, limit=limit # page=page, limit=limit
# ) # )
@dataset_router.get("/general", response_model=None) @dataset_router.get("/general", response_model=None)
async def get_database_general(uow: Annotated[UnitOfWork, Depends(UnitOfWork)]): async def get_database_general():
pass pass

View File

@ -20,4 +20,3 @@ app.include_router(healthcheck_router)
main_app_router = APIRouter(prefix="/api") main_app_router = APIRouter(prefix="/api")
app.include_router(main_app_router) 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) res = await self.session.execute(stmt)
return res.scalars() return res.scalars()