wu981526092's picture
Security & HF Spaces fixes: Enable CSRF, auth middleware, persistent storage
ea856a6
"""
Database functionality for the agent monitoring system.
This package provides database access and utilities for agent monitoring.
"""
import os
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker, scoped_session
# Import DB_URI from central config (handles HF Spaces vs local dev)
from utils.config import DB_URI
DATABASE_URL = DB_URI
# Create engine
engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
# Create session factory
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
# Create a scoped session for thread safety
Session = scoped_session(SessionLocal)
# Base class for models
Base = declarative_base()
# Function to get database session
def get_db():
db = Session()
try:
yield db
finally:
db.close()
# Import models and utility functions
from backend.database.models import KnowledgeGraph, Entity, Relation, Base
from backend.database.utils import (
save_knowledge_graph,
update_knowledge_graph_status,
get_knowledge_graph,
get_all_knowledge_graphs,
delete_knowledge_graph
)
# Function to initialize database
def init_db():
"""Initialize the database by creating all tables."""
Base.metadata.create_all(bind=engine)
__all__ = [
'get_db',
'models',
'init_db',
'save_knowledge_graph',
'update_knowledge_graph_status',
'get_knowledge_graph',
'get_all_knowledge_graphs',
'delete_knowledge_graph',
'KnowledgeGraph',
'Entity',
'Relation'
]