logbert_rca / schema.py
MukeshKapoor25's picture
Refactor RCA result retrieval and schema: update endpoint to return multiple results and modify schema fields for consistency
3c9398e
from fastapi import FastAPI, Depends, HTTPException
from pydantic import BaseModel, Field
from datetime import datetime
from typing import Optional, List
# sql.py
import sqlalchemy
from sqlalchemy import (
Table, Column, String, Integer, DateTime, ForeignKey, Text, func, JSON
)
from db import metadata
rca_results = Table(
"rca_results",
metadata,
Column("id", Integer, primary_key=True),
Column("filename", String, nullable=False, index=True),
Column("app_id", String, nullable=False),
Column("score", sqlalchemy.Numeric, nullable=True),
Column("z_score", sqlalchemy.Numeric, nullable=True),
Column("undetected_ratio", sqlalchemy.Numeric, nullable=True),
Column("status", String, nullable=True),
Column("events", JSON, nullable=True),
Column("explanation", Text, nullable=True),
Column("logdate", DateTime(timezone=True), default=func.now(), nullable=False),
schema="trans"
)
# ========== Pydantic Schema ==========
class RCAResult(BaseModel):
id: int
filename: str
app_id: str
score: Optional[float] = None
z_score: Optional[float] = None
undetected_ratio: Optional[float] = None
status: Optional[str] = None
events: Optional[List[dict]] = Field(default_factory=list)
explanation: Optional[str] = None
logdate: Optional[datetime] = None
class Config:
orm_mode = True