Files
findreve/model/object.py
2025-10-05 12:41:33 +08:00

45 lines
1.5 KiB
Python

from typing import Literal, TYPE_CHECKING
from sqlmodel import Field, Column, String, DateTime, Relationship
from .base import TableBase, IdMixin
from datetime import datetime
if TYPE_CHECKING:
from .user import User
class Object(IdMixin, TableBase, table=True):
user_id: int = Field(foreign_key="user.id", index=True, nullable=False, description="所属用户ID")
key: str = Field(index=True, nullable=False, unique=True, description="物品外部ID")
type: Literal['normal', 'car'] = Field(
default='normal',
description="物品类型",
sa_column=Column(
String,
default='normal',
nullable=False
)
)
name: str = Field(nullable=False, description="物品名称")
icon: str | None = Field(default=None, description="物品图标")
status: Literal['ok', 'lost'] = Field(
default='ok',
description="物品状态",
sa_column=Column(
String,
default='ok',
nullable=False
)
)
phone: str | None = Field(default=None, description="联系电话")
description: str | None = Field(default=None, description="物品描述")
find_ip: str | None = Field(default=None, description="最后一次发现的IP地址")
lost_at: datetime | None = Field(
default=None,
description="物品标记为丢失的时间",
sa_column=Column(
DateTime,
nullable=True
)
)
user: "User" = Relationship(back_populates="objects")