feat(chat): 聊天单向删除

This commit is contained in:
xingc
2025-05-15 18:24:05 +08:00
parent 99f15cff84
commit cc097a587f
8 changed files with 147 additions and 43 deletions

View File

@@ -97,7 +97,7 @@ class User(BaseModel, DateModel):
foreign_keys='UserFollows.followed_id',
cascade='all, delete-orphan'
)
chats: Mapped[List['Chat']] = relationship(secondary='chat_participant', back_populates='users')
chats: Mapped[List['Chat']] = relationship(secondary='system_chat_participant', back_populates='users')
messages: Mapped[List['Message']] = relationship(back_populates='user')
read_statuses: Mapped[List['ReadStatus']] = relationship(back_populates='user')
@@ -261,7 +261,7 @@ class Chat(BaseModel, DateModel):
guid: Mapped[uuid.UUID] = mapped_column(String(36), nullable=True, default=lambda: str(uuid.uuid4()))
users: Mapped[List['User']] = relationship(secondary='chat_participant', back_populates='chats')
users: Mapped[List['User']] = relationship(secondary='system_chat_participant', back_populates='chats')
messages: Mapped[List['Message']] = relationship(back_populates='chat', cascade='all,delete')
is_deleted: Mapped[bool] = mapped_column(Boolean, default=False)
read_statuses: Mapped[List['ReadStatus']] = relationship(back_populates='chat', cascade='all,delete')
@@ -320,17 +320,18 @@ class PointsTransaction(BaseModel, DateModel):
user_id: Mapped[int] = mapped_column(Integer, comment='用户id')
transaction_type: Mapped[int] = mapped_column(Integer, comment='交易类型1-充值 2-消费 3-赠送 4-过期 5-系统调整')
product_id: Mapped[int] = mapped_column(Integer, nullable=True, comment='关联产品id')
points : Mapped[int] = mapped_column(Integer, comment='积分数量(正数表示增加,负数表示减少)')
balance : Mapped[int] = mapped_column(Integer, comment='交易后余额')
status : Mapped[int] = mapped_column(Integer, default=1, comment='状态0-无效 1-有效 2-已撤销')
points: Mapped[int] = mapped_column(Integer, comment='积分数量(正数表示增加,负数表示减少)')
balance: Mapped[int] = mapped_column(Integer, comment='交易后余额')
status: Mapped[int] = mapped_column(Integer, default=1, comment='状态0-无效 1-有效 2-已撤销')
description: Mapped[str] = mapped_column(String(255), nullable=True, comment='交易描述')
chat_participant = Table(
'chat_participant',
BaseModel.metadata,
Column('user_id', Integer, ForeignKey('system_users.user_id'), primary_key=True),
Column('chat_id', Integer, ForeignKey('system_chats.id'), primary_key=True),
comment='聊天参与者关联表'
)
class ChatParticipant(BaseModel):
__tablename__ = 'system_chat_participant'
__table_args__ = (
{'comment': '聊天参与者关联表'}
)
id: None = None
user_id: Mapped[int] = mapped_column(Integer, ForeignKey('system_users.user_id'), primary_key=True)
chat_id: Mapped[int] = mapped_column(Integer, ForeignKey('system_chats.id'), primary_key=True)
is_deleted: Mapped[bool] = mapped_column(Boolean, default=False)