27 lines
842 B
Python
27 lines
842 B
Python
from typing import Optional
|
|
from sqlmodel import SQLModel, Field
|
|
from sqlalchemy import DateTime
|
|
from datetime import datetime, timezone
|
|
from sqlalchemy.ext.asyncio import AsyncAttrs
|
|
|
|
utcnow = lambda: datetime.now(tz=timezone.utc)
|
|
|
|
class BaseModel(SQLModel, AsyncAttrs):
|
|
__abstract__ = True
|
|
|
|
id: Optional[int] = Field(default=None, primary_key=True, description="主键ID")
|
|
created_at: datetime = Field(
|
|
default_factory=utcnow,
|
|
description="创建时间",
|
|
)
|
|
updated_at: datetime = Field(
|
|
sa_type=DateTime,
|
|
description="更新时间",
|
|
sa_column_kwargs={"default": utcnow, "onupdate": utcnow},
|
|
default_factory=utcnow
|
|
)
|
|
deleted_at: Optional[datetime] = Field(
|
|
default=None,
|
|
description="删除时间",
|
|
sa_column={"nullable": True}
|
|
) |