MirrorAPI/database/postgres.py

40 lines
1 KiB
Python

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
from actions.config.config import Config
# Base para os modelos ORM
Base = declarative_base()
def get_database_settings():
"""Lê as configurações do arquivo database/postgres.json"""
return Config.get("database/postgres.json")
def get_postgres_engine():
"""Cria e retorna a engine PostgreSQL."""
db = get_database_settings()
dsn = (
f"postgresql+psycopg2://{db.user}:{db.password}@"
f"{db.host}:{db.port}/{db.name}"
)
engine = create_engine(
dsn,
echo=bool(getattr(db, "debug", False)),
pool_pre_ping=bool(db.pool.pre_ping),
pool_size=int(db.pool.size),
max_overflow=int(db.pool.max_overflow),
connect_args={"connect_timeout": 10},
)
return engine
# Criação da engine global
engine = get_postgres_engine()
# Criação da sessão ORM (SessionLocal)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)