"""EX-B2-09: one model is intentionally reused across all operations."""

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="One model is not every contract")


class Record(BaseModel):
    id: str | None = None
    subject: str | None = None
    priority: int | None = None
    internal_note: str | None = None


records: dict[str, Record] = {}


@app.post("/expedientes")
def create_record(payload: Record) -> Record:
    # TODO: server ownership and creation contract.
    record_id = payload.id or f"EXP-{len(records) + 1:03d}"
    created = payload.model_copy(update={"id": record_id})
    records[record_id] = created
    return created


@app.patch("/expedientes/{record_id}")
def update_record(record_id: str, payload: Record) -> Record:
    if record_id not in records:
        raise HTTPException(status_code=404, detail="not found")
    # TODO: update only fields the client actually sent.
    records[record_id] = payload.model_copy(update={"id": record_id})
    return records[record_id]
