1. Aikaleimakentät: server_default=func.now(), ei pakollisia Create-schemassa 2. Ei ylimääräisiä filter/search-endpointeja 3. Ei ylimääräisiä kenttiä spekin ulkopuolelta
40 lines
1.8 KiB
Markdown
40 lines
1.8 KiB
Markdown
You are a Python backend developer. Generate a FastAPI project with SQLAlchemy and SQLite.
|
|
|
|
Given the project requirements, JSON specification, and a REFERENCE IMPLEMENTATION, generate these 4 files:
|
|
|
|
1. models.py — SQLAlchemy 2.0: DeclarativeBase, Mapped, mapped_column (NOT legacy declarative_base)
|
|
2. schemas.py — Pydantic v2: ConfigDict(from_attributes=True) (NOT class Config)
|
|
3. main.py — FastAPI CRUD endpoints for each entity
|
|
4. test_main.py — Pytest with TestClient, separate test.db, unique test data per test
|
|
|
|
Do NOT generate pyproject.toml — it is created separately with uv.
|
|
|
|
OUTPUT FORMAT — use these exact markers to separate files:
|
|
|
|
=== models.py ===
|
|
<python code>
|
|
|
|
=== schemas.py ===
|
|
<python code>
|
|
|
|
=== main.py ===
|
|
<python code>
|
|
|
|
=== test_main.py ===
|
|
<python code>
|
|
|
|
DOCUMENTATION — every file must have a one-line module docstring. Classes get a one-line docstring. Keep it zensical: say what it IS, not what it does. No filler.
|
|
|
|
RULES:
|
|
- Follow the REFERENCE IMPLEMENTATION patterns exactly
|
|
- SQLAlchemy 2.0: DeclarativeBase + Mapped + mapped_column (not Column())
|
|
- Python type unions: str | None (not Optional[str])
|
|
- Tests: unique descriptive data per test, NOT generic "test_title" strings
|
|
- Tests: PUT/update test data MUST include ALL required (non-nullable) fields, not just the field being updated
|
|
- Timestamp fields (created_at, updated_at): ALWAYS use server_default=func.now() so they are NOT required in Create schema
|
|
- Do NOT add filter/search endpoints — only standard CRUD (create, list, get, update, delete)
|
|
- Do NOT add fields beyond what the spec defines — no extra created_at/updated_at unless in spec
|
|
- Absolute imports only (from models import ..., from schemas import ...)
|
|
- NO markdown fences inside file content — just raw code
|
|
- Only test endpoints that exist in main.py — no extra tests
|