REFERENCE PATTERNS (follow exactly): STACK: SQLAlchemy 2.0 + Pydantic v2 + FastAPI + SQLite models.py: from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column class Base(DeclarativeBase): pass Fields: Mapped[type] = mapped_column(SqlType, default=...) Nullable: Mapped[str | None] = mapped_column(Text, default=None) Status: Mapped[str] = mapped_column(String(20), default="pending") FK: Mapped[int] = mapped_column(ForeignKey("table.id")) End: Base.metadata.create_all(bind=engine) schemas.py: class EntityCreate(BaseModel): fields with defaults class EntityResponse(EntityCreate): id: int model_config = ConfigDict(from_attributes=True) main.py: def get_db(): yield SessionLocal(); finally close POST /{table}/ → 201, model_dump() GET /{table}/ → list GET /{table}/{id} → 404 if not found PUT /{table}/{id} → model_dump(), setattr loop DELETE /{table}/{id} → 204 test_main.py: test.db + override_get_db + TestClient Unique Finnish data per test ("Osta maitoa", "Haettava tehtävä"...) test_create → 201 + assert "id" in json test_list → post first, get, assert len >= 1 test_get_by_id → post, get by id, assert id matches test_not_found → get /99999 → 404 test_update → post, put with ALL required fields, assert 200 test_delete → post, delete 204, get again → 404