AIService / app /database /connection.py
Gaykar's picture
kka
f3b2b2d
from sqlalchemy.orm import sessionmaker, Session
from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey
from sqlalchemy.orm import declarative_base, relationship, sessionmaker
import os
from app.core.config import settings
DB_URL=settings.DATABASE_URL
# This loads the variables from your .env file into the system environment
# Access them using os.getenv()
Base = declarative_base()
# This table handles the "list of user ids" by linking users to complaints
class ComplaintUser(Base):
__tablename__ = 'complaint_users'
id = Column(Integer, primary_key=True)
complaint_id = Column(Integer, ForeignKey('complaints.id'))
user_id = Column(Integer, nullable=False)
class Complaint(Base):
__tablename__ = 'complaints'
id = Column(Integer, primary_key=True, autoincrement=True)
page_content = Column(String, nullable=False)
frequency = Column(Integer, default=1)
# Location stored as high-precision floats
latitude = Column(Float, nullable=False)
longitude = Column(Float, nullable=False)
priority_score = Column(Float, default=0.0)
department = Column(String, nullable=False)
urgency_level = Column(String, nullable=False)
# Relationship to get the list of users easily
# Access via: complaint_obj.users
users = relationship("ComplaintUser", backref="complaint", cascade="all, delete-orphan")
# --- Table Creation Logic ---
engine = create_engine(
DB_URL,
echo=False,
pool_pre_ping=True,
pool_recycle=1800
)
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
def get_session() -> Session:
return SessionLocal()