更新查询方式
This commit is contained in:
@@ -1,9 +1,72 @@
|
||||
from typing import Annotated
|
||||
"""
|
||||
FastAPI 依赖注入
|
||||
|
||||
from fastapi import Depends
|
||||
包含 HTTP 端点的通用依赖:
|
||||
- SessionDep: 数据库会话依赖
|
||||
- TimeFilterRequestDep: 时间筛选查询依赖(用于 count 等统计接口)
|
||||
- TableViewRequestDep: 分页排序查询依赖(包含时间筛选 + 分页排序)
|
||||
"""
|
||||
from datetime import datetime
|
||||
from typing import Annotated, Literal, TypeAlias
|
||||
|
||||
from fastapi import Depends, Query
|
||||
from sqlmodel.ext.asyncio.session import AsyncSession
|
||||
|
||||
from models.database import get_session
|
||||
from models.mixin import TimeFilterRequest, TableViewRequest
|
||||
|
||||
SessionDep = Annotated[AsyncSession, Depends(get_session)]
|
||||
|
||||
# --- 数据库会话依赖 ---
|
||||
|
||||
SessionDep: TypeAlias = Annotated[AsyncSession, Depends(get_session)]
|
||||
"""数据库会话依赖,用于路由函数中获取数据库会话"""
|
||||
|
||||
|
||||
# --- 时间筛选依赖 ---
|
||||
|
||||
async def _get_time_filter_queries(
|
||||
created_after_datetime: Annotated[datetime | None, Query()] = None,
|
||||
created_before_datetime: Annotated[datetime | None, Query()] = None,
|
||||
updated_after_datetime: Annotated[datetime | None, Query()] = None,
|
||||
updated_before_datetime: Annotated[datetime | None, Query()] = None,
|
||||
) -> TimeFilterRequest:
|
||||
"""解析时间筛选查询参数"""
|
||||
return TimeFilterRequest(
|
||||
created_after_datetime=created_after_datetime,
|
||||
created_before_datetime=created_before_datetime,
|
||||
updated_after_datetime=updated_after_datetime,
|
||||
updated_before_datetime=updated_before_datetime,
|
||||
)
|
||||
|
||||
|
||||
TimeFilterRequestDep: TypeAlias = Annotated[TimeFilterRequest, Depends(_get_time_filter_queries)]
|
||||
"""获取时间筛选参数的依赖(用于 count 等统计接口)"""
|
||||
|
||||
|
||||
# --- 分页排序依赖 ---
|
||||
|
||||
async def _get_table_view_queries(
|
||||
offset: Annotated[int | None, Query(ge=0)] = 0,
|
||||
limit: Annotated[int | None, Query(ge=1, le=100)] = 20,
|
||||
desc: bool | None = True,
|
||||
order: Literal["created_at", "updated_at"] | None = "created_at",
|
||||
created_after_datetime: Annotated[datetime | None, Query()] = None,
|
||||
created_before_datetime: Annotated[datetime | None, Query()] = None,
|
||||
updated_after_datetime: Annotated[datetime | None, Query()] = None,
|
||||
updated_before_datetime: Annotated[datetime | None, Query()] = None,
|
||||
) -> TableViewRequest:
|
||||
"""解析分页排序和时间筛选查询参数"""
|
||||
return TableViewRequest(
|
||||
offset=offset,
|
||||
limit=limit,
|
||||
desc=desc,
|
||||
order=order,
|
||||
created_after_datetime=created_after_datetime,
|
||||
created_before_datetime=created_before_datetime,
|
||||
updated_after_datetime=updated_after_datetime,
|
||||
updated_before_datetime=updated_before_datetime,
|
||||
)
|
||||
|
||||
|
||||
TableViewRequestDep: TypeAlias = Annotated[TableViewRequest, Depends(_get_table_view_queries)]
|
||||
"""获取分页排序和时间筛选参数的依赖"""
|
||||
|
||||
Reference in New Issue
Block a user