doclib.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. """门户私有文档库:目录、文件元数据和按用户分享。"""
  2. from datetime import datetime
  3. from sqlalchemy import BigInteger, Column, DateTime, Index, Integer, SmallInteger, String, UniqueConstraint
  4. from app.core.database import Base
  5. class _PublicFields:
  6. tenant_no = Column(String(64), nullable=False)
  7. order_num = Column(Integer, nullable=True)
  8. remark = Column(String(512), nullable=True)
  9. create_by = Column(String(64), nullable=False)
  10. create_dept_id = Column(String(64), nullable=False, default='')
  11. create_time = Column(DateTime, nullable=False, default=datetime.now)
  12. update_by = Column(String(64), nullable=True)
  13. update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now)
  14. del_flag = Column(SmallInteger, nullable=False, default=0)
  15. class DoclibFolder(_PublicFields, Base):
  16. __tablename__ = 'biz_doclib_folder'
  17. __table_args__ = (Index('ix_doclib_folder_owner', 'tenant_no', 'create_by', 'parent_id', 'del_flag'),)
  18. id = Column(String(64), primary_key=True)
  19. name = Column(String(120), nullable=False)
  20. parent_id = Column(String(64), nullable=False, default='')
  21. class DoclibFile(_PublicFields, Base):
  22. __tablename__ = 'biz_doclib_file'
  23. __table_args__ = (
  24. Index('ix_doclib_file_owner', 'tenant_no', 'create_by', 'del_flag', 'create_time'),
  25. Index('ix_doclib_file_folder', 'tenant_no', 'folder_id', 'del_flag'),
  26. )
  27. id = Column(String(64), primary_key=True)
  28. name = Column(String(255), nullable=False)
  29. folder_id = Column(String(64), nullable=False, default='')
  30. size = Column(BigInteger, nullable=False)
  31. content_type = Column(String(255), nullable=False, default='application/octet-stream')
  32. object_key = Column(String(512), nullable=False)
  33. class DoclibShare(_PublicFields, Base):
  34. __tablename__ = 'biz_doclib_share'
  35. __table_args__ = (
  36. UniqueConstraint('tenant_no', 'file_id', 'user_id', name='uk_doclib_share_user'),
  37. Index('ix_doclib_share_recipient', 'tenant_no', 'user_id', 'del_flag', 'file_id'),
  38. )
  39. id = Column(String(64), primary_key=True)
  40. file_id = Column(String(64), nullable=False)
  41. user_id = Column(String(64), nullable=False)