"""门户私有文档库:目录、文件元数据和按用户分享。""" from datetime import datetime from sqlalchemy import BigInteger, Column, DateTime, Index, Integer, SmallInteger, String, UniqueConstraint from app.core.database import Base class _PublicFields: tenant_no = Column(String(64), nullable=False) order_num = Column(Integer, nullable=True) remark = Column(String(512), nullable=True) create_by = Column(String(64), nullable=False) create_dept_id = Column(String(64), nullable=False, default='') create_time = Column(DateTime, nullable=False, default=datetime.now) update_by = Column(String(64), nullable=True) update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) del_flag = Column(SmallInteger, nullable=False, default=0) class DoclibFolder(_PublicFields, Base): __tablename__ = 'biz_doclib_folder' __table_args__ = (Index('ix_doclib_folder_owner', 'tenant_no', 'create_by', 'parent_id', 'del_flag'),) id = Column(String(64), primary_key=True) name = Column(String(120), nullable=False) parent_id = Column(String(64), nullable=False, default='') class DoclibFile(_PublicFields, Base): __tablename__ = 'biz_doclib_file' __table_args__ = ( Index('ix_doclib_file_owner', 'tenant_no', 'create_by', 'del_flag', 'create_time'), Index('ix_doclib_file_folder', 'tenant_no', 'folder_id', 'del_flag'), ) id = Column(String(64), primary_key=True) name = Column(String(255), nullable=False) folder_id = Column(String(64), nullable=False, default='') size = Column(BigInteger, nullable=False) content_type = Column(String(255), nullable=False, default='application/octet-stream') object_key = Column(String(512), nullable=False) class DoclibShare(_PublicFields, Base): __tablename__ = 'biz_doclib_share' __table_args__ = ( UniqueConstraint('tenant_no', 'file_id', 'user_id', name='uk_doclib_share_user'), Index('ix_doclib_share_recipient', 'tenant_no', 'user_id', 'del_flag', 'file_id'), ) id = Column(String(64), primary_key=True) file_id = Column(String(64), nullable=False) user_id = Column(String(64), nullable=False)