mp_message/database.py

32 lines
862 B
Python
Raw Permalink Normal View History

import datetime
2023-12-10 13:04:10 +03:00
import json
import asyncpg
from sqlalchemy import func
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
2023-12-10 13:04:10 +03:00
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())
2023-12-10 13:04:10 +03:00
class Engine:
_engine = None
2023-12-10 13:04:10 +03:00
@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)
2023-12-10 13:04:10 +03:00