32 lines
862 B
Python
32 lines
862 B
Python
import datetime
|
|
import json
|
|
|
|
import asyncpg
|
|
from sqlalchemy import func
|
|
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
|
|
from sqlalchemy.ext.asyncio import AsyncAttrs, create_async_engine, async_sessionmaker
|
|
from config import Config
|
|
from loguru import logger
|
|
|
|
|
|
class Base(AsyncAttrs, DeclarativeBase):
|
|
created_at: Mapped[datetime.datetime] = mapped_column(server_default=func.now())
|
|
modified_at: Mapped[datetime.datetime] = mapped_column(server_default=func.now(), onupdate=func.now())
|
|
|
|
|
|
class Engine:
|
|
_engine = None
|
|
|
|
@property
|
|
def engine(self):
|
|
return self._engine
|
|
|
|
def __init__(self):
|
|
if self._engine is None:
|
|
self._engine = create_async_engine(str(Config.postgres_url), pool_size=20, max_overflow=0)
|
|
|
|
|
|
engine = Engine()
|
|
Session = async_sessionmaker(engine.engine, expire_on_commit=False)
|
|
|