- Updated tests for listing users to validate pagination and response format. - Changed mock return values to include total count and pagination details. - Refactored user creation mocks for clarity and consistency. - Enhanced assertions to check for presence of pagination fields in responses. - Adjusted test cases for user retrieval and updates to ensure proper handling of user data. - Improved readability by restructuring mock definitions and assertions across various test files.
29 lines
911 B
Python
29 lines
911 B
Python
from datetime import UTC, datetime
|
|
from typing import Any
|
|
|
|
from sqlalchemy import event
|
|
from sqlalchemy.engine import Connection
|
|
from sqlalchemy.orm import Mapper
|
|
from sqlmodel import Field, SQLModel
|
|
|
|
|
|
class BaseModel(SQLModel):
|
|
"""Base model with common fields for all models."""
|
|
|
|
id: int | None = Field(primary_key=True, default=None)
|
|
|
|
# timestamps
|
|
created_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
|
|
updated_at: datetime = Field(default_factory=lambda: datetime.now(UTC))
|
|
|
|
|
|
# SQLAlchemy event listener to automatically update updated_at timestamp
|
|
@event.listens_for(BaseModel, "before_update", propagate=True)
|
|
def update_timestamp(
|
|
mapper: Mapper[Any], # noqa: ARG001
|
|
connection: Connection, # noqa: ARG001
|
|
target: BaseModel,
|
|
) -> None:
|
|
"""Automatically set updated_at timestamp before update operations."""
|
|
target.updated_at = datetime.now(UTC)
|