35 lines
764 B
Python
35 lines
764 B
Python
"""
|
|
Database engine and session — SQLModel/SQLAlchemy, no Django.
|
|
|
|
Reads DATABASE_URL from the environment.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlmodel import Session
|
|
|
|
DATABASE_URL = os.environ.get("DATABASE_URL", "postgresql://mpr:mpr@localhost:5432/mpr")
|
|
|
|
_engine = None
|
|
|
|
|
|
def get_engine():
|
|
global _engine
|
|
if _engine is None:
|
|
_engine = create_engine(DATABASE_URL, pool_size=5, max_overflow=10)
|
|
return _engine
|
|
|
|
|
|
def get_session() -> Session:
|
|
return Session(get_engine())
|
|
|
|
|
|
def create_tables():
|
|
"""Create all SQLModel tables."""
|
|
from sqlmodel import SQLModel
|
|
from . import tables # noqa — registers all table classes
|
|
SQLModel.metadata.create_all(get_engine())
|