make more simple and ruff format
This commit is contained in:
parent
b2ed5260a6
commit
883e1d4359
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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]
|
||||||
|
@ -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
|
|
@ -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)
|
|
@ -1 +1 @@
|
|||||||
from .healthcheck import healthcheck_router as healthcheck_router
|
from .healthcheck import healthcheck_router as healthcheck_router
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -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()
|
|
@ -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()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user