52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import datetime
|
|
import uuid
|
|
from enum import IntEnum
|
|
|
|
from sqlalchemy import Column, ForeignKey, Integer, DateTime, String
|
|
from sqlalchemy.dialects.postgresql import UUID
|
|
from sqlalchemy.dialects.postgresql import JSONB
|
|
|
|
from app.db import Base
|
|
from app.schemas.app_schema import FileType
|
|
|
|
|
|
class PerceptualType(IntEnum):
|
|
VISION = 1
|
|
AUDIO = 2
|
|
TEXT = 3
|
|
CONVERSATION = 4
|
|
|
|
@staticmethod
|
|
def trans_from_file_type(file_type: FileType | str):
|
|
type_map = {
|
|
FileType.IMAGE: PerceptualType.VISION,
|
|
FileType.AUDIO: PerceptualType.AUDIO,
|
|
FileType.VIDEO: PerceptualType.VISION,
|
|
FileType.DOCUMENT: PerceptualType.TEXT
|
|
}
|
|
return type_map.get(file_type, PerceptualType.TEXT)
|
|
|
|
|
|
class FileStorageService(IntEnum):
|
|
LOCAL = 1
|
|
REMOTE = 2
|
|
|
|
|
|
class MemoryPerceptualModel(Base):
|
|
__tablename__ = "memory_perceptual"
|
|
|
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
|
end_user_id = Column(UUID(as_uuid=True), ForeignKey("end_users.id"), index=True)
|
|
|
|
perceptual_type = Column(Integer, index=True, nullable=False, comment="感知类型")
|
|
|
|
storage_service = Column(Integer, default=0, comment="存储服务类型")
|
|
file_path = Column(String, nullable=False, comment="文件路径")
|
|
file_name = Column(String, nullable=False, comment="文件名称")
|
|
file_ext = Column(String, nullable=False, comment="文件后缀名")
|
|
|
|
summary = Column(String, comment="摘要")
|
|
meta_data = Column(JSONB, comment="元信息")
|
|
|
|
created_time = Column(DateTime, default=datetime.datetime.now, comment="创建时间")
|