"""文件 数据库表"""
import uuid
from datetime import UTC, datetime
from typing import Any, ClassVar
from sqlalchemy import DateTime, Float, ForeignKey, Index, String
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from .base import Base
class Document(Base):
"""文件"""
__tablename__ = "framework_document"
userId: Mapped[str] = mapped_column(String(50), ForeignKey("framework_user.id"), nullable=False)
"""用户ID"""
name: Mapped[str] = mapped_column(String(255), nullable=False)
"""文件名称"""
extension: Mapped[str] = mapped_column(String(100), nullable=False)
"""文件类型"""
size: Mapped[float] = mapped_column(Float, nullable=False)
"""文件大小"""
conversationId: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True), ForeignKey("framework_conversation.id"), nullable=False,
)
"""所属对话的ID"""
id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True), primary_key=True, default_factory=uuid.uuid4,
)
"""文件的ID"""
createdAt: Mapped[datetime] = mapped_column(
DateTime(timezone=True),
default_factory=lambda: datetime.now(tz=UTC),
nullable=False,
)
"""文件的创建时间"""
idx_user_conversation: ClassVar[Index] = Index("idx_user_id_conversation_id", "userId", "conversationId")
__table_args__: ClassVar[tuple[Any, ...]] = (
idx_user_conversation,
{"extend_existing": True},
)