52 lines
2.2 KiB
Python
52 lines
2.2 KiB
Python
"""门户私有文档库:目录、文件元数据和按用户分享。"""
|
|
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)
|