36 lines
955 B
Python
36 lines
955 B
Python
"""
|
|
©AngelaMos | 2026
|
|
base.py
|
|
|
|
Abstract SQLModel base class providing UUID primary key
|
|
and timezone-aware created_at timestamp
|
|
|
|
TimestampedModel defines id as a uuid4 primary key and
|
|
created_at as a DateTime(timezone=True) column with
|
|
CURRENT_TIMESTAMP server default. All domain models
|
|
inherit from this base
|
|
|
|
Connects to:
|
|
models/threat_event - ThreatEvent inherits
|
|
models/model_metadata - ModelMetadata inherits
|
|
"""
|
|
|
|
import uuid
|
|
from datetime import datetime
|
|
|
|
from sqlalchemy import DateTime, text
|
|
from sqlmodel import Field, SQLModel
|
|
|
|
|
|
class TimestampedModel(SQLModel):
|
|
"""
|
|
Abstract base providing UUID primary key and timezone-aware created_at.
|
|
"""
|
|
|
|
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
|
|
created_at: datetime = Field( # type: ignore[call-overload]
|
|
sa_type=DateTime(timezone=True),
|
|
sa_column_kwargs={"server_default": text("CURRENT_TIMESTAMP")},
|
|
nullable=False,
|
|
)
|