How rhoboro/async-fastapi-sqlalchemy works
This repository is a sample asynchronous FastAPI service for managing notebooks and notes with SQLAlchemy. A client sends requests through the application router to domain-specific views; views invoke use cases, which validate related records and perform CRUD operations through ORM models and an async database session. Notebook and note schemas shape API inputs and outputs. The README documents PostgreSQL setup and API access. The graph reflects the sampled entry points, use cases, and models; unsampled implementation details are omitted.
Main entry points: notebooks/use_cases.py Notebook use cases · notes/use_cases.py Note use cases · notebooks.py Notebook model · notes.py Note model
Components 15
API routing
- FastAPI app
app/main.py - API router
app/api/main.py
Notebook domain
- Notebook views
app/api/notebooks/views.py - Notebook API schemas
app/api/notebooks/schema.py - Notebook use cases
app/api/notebooks/use_cases.py - Notebook model
app/models/notebooks.py
Note domain
- Note views
app/api/notes/views.py - Note API schemas
app/api/notes/schema.py - Note use cases
app/api/notes/use_cases.py - Note model
app/models/notes.py
Persistence
- Model schemas
app/models/schema.py - Async DB sessions
app/db.py - Database settings
app/settings.py
Other components
- API client
- PostgreSQL
Connections 20
- API client → FastAPI app: sends requests
README.md - FastAPI app → API router: mounts at /api
app/main.py - API router → Notebook views: registers routes
app/api/main.py - API router → Note views: registers routes
app/api/main.py - Notebook views → Notebook use cases: dispatches requests
app/api/notebooks/views.py - Notebook views → Notebook API schemas: uses request and response
app/api/notebooks/views.py - Notebook use cases → Notebook model: reads and changes
app/api/notebooks/use_cases.py - Notebook use cases → Note model: checks note records
app/api/notebooks/use_cases.py - Notebook use cases → Model schemas: validates output
app/api/notebooks/use_cases.py - Note views → Note use cases: dispatches requests
app/api/notes/views.py - Note views → Note API schemas: uses request and response
app/api/notes/views.py - Note use cases → Note model: reads and changes
app/api/notes/use_cases.py - Note use cases → Notebook model: checks notebook records
app/api/notes/use_cases.py - Note use cases → Model schemas: validates output
app/api/notes/use_cases.py - Notebook use cases → Async DB sessions: opens sessions
app/api/notebooks/use_cases.py - Note use cases → Async DB sessions: opens sessions
app/api/notes/use_cases.py - Async DB sessions → Database settings: loads connection settings
app/db.py - Notebook model → PostgreSQL: queries and persists
app/models/notebooks.py - Note model → PostgreSQL: queries and persists
app/models/notes.py - Notebook model → Note model: relates notebooks to notes
app/models/notebooks.py