"""Pydantic request/response models.""" from __future__ import annotations from datetime import datetime from pydantic import BaseModel, ConfigDict class GameCreate(BaseModel): name: str notes: str | None = None class GameOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int name: str notes: str | None = None class SnapshotOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int game_id: int | None binary_name: str sha256: str engine: str | None compiler: str | None schema_version: int | None n_types: int n_methods: int n_events: int n_fields: int created_at: datetime class SnapshotDetail(SnapshotOut): data: dict class GameDetail(GameOut): snapshots: list[SnapshotOut] = [] class SimilarHit(BaseModel): snapshot: SnapshotOut overall: int # pooled surface-overlap score 0–100 fuzzy: int | None # ssdeep similarity of the raw binary, when available axes: dict # per-axis {shared, only_a, only_b, score} class JobOut(BaseModel): model_config = ConfigDict(from_attributes=True) id: int rq_id: str | None status: str source_name: str game_name: str | None snapshot_id: int | None dll_name: str | None error: str | None created_at: datetime updated_at: datetime