- Implemented TableBaseMixin providing generic CRUD methods and automatic timestamp management. - Introduced UUIDTableBaseMixin for models using UUID as primary keys. - Added ListResponse for standardized paginated responses. - Created TimeFilterRequest and PaginationRequest for filtering and pagination parameters. - Enhanced get_with_count method to return both item list and total count. - Included validation for time filter parameters in TimeFilterRequest. - Improved documentation and usage examples throughout the code.
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
"""
|
||
InfoResponse DTO Mixin模块
|
||
|
||
提供用于InfoResponse类型DTO的Mixin,统一定义id/created_at/updated_at字段。
|
||
|
||
设计说明:
|
||
- 这些Mixin用于**响应DTO**,不是数据库表
|
||
- 从数据库返回时这些字段永远不为空,所以定义为必填字段
|
||
- TableBase中的id=None和default_factory=now是正确的(入库前为None,数据库生成)
|
||
- 这些Mixin让DTO明确表示"返回给客户端时这些字段必定有值"
|
||
"""
|
||
from datetime import datetime
|
||
from uuid import UUID
|
||
|
||
from models.base import SQLModelBase
|
||
|
||
|
||
class IntIdInfoMixin(SQLModelBase):
|
||
"""整数ID响应mixin - 用于InfoResponse DTO"""
|
||
id: int
|
||
"""记录ID"""
|
||
|
||
|
||
class UUIDIdInfoMixin(SQLModelBase):
|
||
"""UUID ID响应mixin - 用于InfoResponse DTO"""
|
||
id: UUID
|
||
"""记录ID"""
|
||
|
||
|
||
class DatetimeInfoMixin(SQLModelBase):
|
||
"""时间戳响应mixin - 用于InfoResponse DTO"""
|
||
created_at: datetime
|
||
"""创建时间"""
|
||
|
||
updated_at: datetime
|
||
"""更新时间"""
|
||
|
||
|
||
class IntIdDatetimeInfoMixin(IntIdInfoMixin, DatetimeInfoMixin):
|
||
"""整数ID + 时间戳响应mixin"""
|
||
pass
|
||
|
||
|
||
class UUIDIdDatetimeInfoMixin(UUIDIdInfoMixin, DatetimeInfoMixin):
|
||
"""UUID ID + 时间戳响应mixin"""
|
||
pass
|