FastAPI¶
FastAPI integration with dependency injection helpers for FastAPI's Depends()
system, including filter dependency builders.
Plugin¶
- class sqlspec.extensions.fastapi.SQLSpecPlugin[source]¶
Bases:
SQLSpecPluginSQLSpec integration for FastAPI applications.
Extends Starlette integration with dependency injection helpers for FastAPI's Depends() system.
- provide_session(key=None)[source]¶
- Overloads:
self, key (None) → Callable[[Request], AsyncDriverAdapterBase | SyncDriverAdapterBase]
self, key (str) → Callable[[Request], AsyncDriverAdapterBase | SyncDriverAdapterBase]
self, key (type[AsyncDatabaseConfig]) → Callable[[Request], AsyncDriverAdapterBase]
self, key (type[SyncDatabaseConfig]) → Callable[[Request], SyncDriverAdapterBase]
self, key (AsyncDatabaseConfig) → Callable[[Request], AsyncDriverAdapterBase]
self, key (SyncDatabaseConfig) → Callable[[Request], SyncDriverAdapterBase]
Create dependency factory for session injection.
Returns a callable that can be used with FastAPI's Depends() to inject a database session into route handlers.
- Parameters:
key¶ -- Optional session key (str), config type for type narrowing, or None.
- Returns:
Dependency callable for FastAPI Depends().
- provide_async_session(key=None)[source]¶
Create dependency factory for async session injection.
Type-narrowed version of provide_session() that returns AsyncDriverAdapterBase. Useful when using string keys and you know the config is async.
- Parameters:
key¶ -- Optional session key for multi-database configurations.
- Returns:
Dependency callable that returns AsyncDriverAdapterBase.
- provide_sync_session(key=None)[source]¶
Create dependency factory for sync session injection.
Type-narrowed version of provide_session() that returns SyncDriverAdapterBase. Useful when using string keys and you know the config is sync.
- Parameters:
key¶ -- Optional session key for multi-database configurations.
- Returns:
Dependency callable that returns SyncDriverAdapterBase.
- provide_connection(key=None)[source]¶
- Overloads:
self, key (None) → Callable[[Request], Any]
self, key (str) → Callable[[Request], Any]
self, key (type[AsyncDatabaseConfig]) → Callable[[Request], Any]
self, key (type[SyncDatabaseConfig]) → Callable[[Request], Any]
self, key (AsyncDatabaseConfig) → Callable[[Request], Any]
self, key (SyncDatabaseConfig) → Callable[[Request], Any]
Create dependency factory for connection injection.
Returns a callable that can be used with FastAPI's Depends() to inject a database connection into route handlers.
- Parameters:
key¶ -- Optional session key (str), config type for type narrowing, or None.
- Returns:
Dependency callable for FastAPI Depends().
- provide_async_connection(key=None)[source]¶
Create dependency factory for async connection injection.
Type-narrowed version of provide_connection() for async connections. Useful when using string keys and you know the config is async.
- Parameters:
key¶ -- Optional session key for multi-database configurations.
- Returns:
Dependency callable for async connection.
- provide_sync_connection(key=None)[source]¶
Create dependency factory for sync connection injection.
Type-narrowed version of provide_connection() for sync connections. Useful when using string keys and you know the config is sync.
- Parameters:
key¶ -- Optional session key for multi-database configurations.
- Returns:
Dependency callable for sync connection.
- static provide_filters(config, dep_defaults=None)[source]¶
Create filter dependency for FastAPI routes.
Dynamically generates a FastAPI dependency function that parses query parameters into SQLSpec filter objects. The returned callable can be used with FastAPI's Depends() for automatic filter injection.
Dependency Helpers¶
provide_filters() supports the same orderBy alias contract as the
Litestar provider. Camel-case query values are accepted by default for
configured sort_field values. Use sort_field_aliases for explicit API
names, or set sort_field_camelize=False to accept only raw configured
values. Alias values normalize to fields from sort_field before
OrderByFilter is created, so the SQL-facing sort allowlist remains strict.
- sqlspec.extensions.fastapi.provide_filters(config, dep_defaults=<sqlspec.extensions.fastapi.providers.DependencyDefaults object>)[source]¶
Create FastAPI dependency provider for filters based on configuration.
This function dynamically generates a FastAPI dependency function that parses query parameters into SQLSpec filter objects.
- class sqlspec.extensions.fastapi.DependencyDefaults[source]¶
Bases:
objectDefault values for dependency generation.
- class sqlspec.extensions.fastapi.FilterConfig[source]¶
Bases:
TypedDictConfiguration for generated FastAPI filter dependencies.
All keys are optional. A filter dependency is created only for each enabled key. Field names are SQL-facing allowlist values; generated query parameter names and order-by aliases remain API-facing.
- id_filter: NotRequired[type[UUID | int | str]]¶
Type of ID filter to enable. When set, creates an
idscollection filter.
- id_field: NotRequired[str]¶
SQL-facing field name for ID filtering. Defaults to
"id".
- sort_field: NotRequired[str | set[str] | list[str]]¶
Allowed SQL-facing field or fields for
orderBysorting.
- sort_field_aliases: NotRequired[dict[str, str]]¶
Additional API-facing
orderByaliases mapped to configuredsort_fieldvalues.
- sort_field_camelize: NotRequired[bool]¶
Whether to accept camel-case aliases for configured sort fields. Defaults to
True.
- sort_order: NotRequired[Literal['asc', 'desc']]¶
Default sort order. Defaults to
"desc".
- pagination_type: NotRequired[Literal['limit_offset']]¶
Pagination strategy to enable. Currently supports
"limit_offset".
- pagination_size: NotRequired[int]¶
Default page size for limit/offset pagination.
- search: NotRequired[str | set[str] | list[str]]¶
SQL-facing field or fields to search. Strings may be comma-separated.
- search_ignore_case: NotRequired[bool]¶
Whether search filtering is case-insensitive. Defaults to
False.
- created_at: NotRequired[bool]¶
Whether to enable
created_atbefore/after range filtering.
- updated_at: NotRequired[bool]¶
Whether to enable
updated_atbefore/after range filtering.
- not_in_fields: NotRequired[FieldNameType | set[FieldNameType] | list[str | FieldNameType]]¶
Field or fields that support
NOT INcollection filtering.
- in_fields: NotRequired[FieldNameType | set[FieldNameType] | list[str | FieldNameType]]¶
Field or fields that support
INcollection filtering.
- null_fields: NotRequired[str | set[str] | list[str]]¶
Field or fields that support
IS NULLfiltering.
- not_null_fields: NotRequired[str | set[str] | list[str]]¶
Field or fields that support
IS NOT NULLfiltering.
- boolean_fields: NotRequired[str | set[str] | list[str]]¶
Field or fields that support boolean filtering.
- choice_fields: NotRequired[ChoiceField | set[ChoiceField] | list[str | ChoiceField]]¶
Field or fields that support choices filtering.
Middleware¶
- class sqlspec.extensions.fastapi.SQLSpecAutocommitMiddleware[source]
Bases:
BaseHTTPMiddlewareMiddleware for autocommit transaction mode.
Acquires connection, commits on success status codes, rollbacks on error status codes.
- __init__(app, config_state, include_redirect=False)[source]
Initialize middleware.
- class sqlspec.extensions.fastapi.SQLSpecManualMiddleware[source]
Bases:
BaseHTTPMiddlewareMiddleware for manual transaction mode.
Acquires connection from pool, stores in request.state, releases after request. No automatic commit or rollback - user code must handle transactions.
- __init__(app, config_state)[source]
Initialize middleware.
- Parameters:
config_state¶ (
SQLSpecConfigState) -- Configuration state for this database.