Coverage for src / idx_api / models / base.py: 100%
9 statements
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-28 11:09 -0700
« prev ^ index » next coverage.py v7.13.1, created at 2025-12-28 11:09 -0700
1"""Base model with common functionality."""
3from datetime import datetime, timezone
4from typing import Any
6from sqlalchemy import DateTime
7from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
10class Base(DeclarativeBase):
11 """Base class for all models."""
13 pass
16class TimestampMixin:
17 """Mixin for created_at and updated_at timestamps."""
19 created_at: Mapped[datetime] = mapped_column(
20 DateTime(timezone=True),
21 nullable=False,
22 default=lambda: datetime.now(timezone.utc),
23 )
24 updated_at: Mapped[datetime] = mapped_column(
25 DateTime(timezone=True),
26 nullable=False,
27 default=lambda: datetime.now(timezone.utc),
28 onupdate=lambda: datetime.now(timezone.utc),
29 )