Files
disknext/models/base.py

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}
)