feat(chat): 单向聊天可二次激活 单向聊天可二次激活,未删除方聊天消息保留,双向删除后记录清空
This commit is contained in:
@@ -99,7 +99,7 @@ class User(BaseModel, DateModel):
|
||||
)
|
||||
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')
|
||||
chat_participants: Mapped[List['ChatParticipant']] = relationship(back_populates='user')
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.user_id}'
|
||||
@@ -264,7 +264,7 @@ class Chat(BaseModel, DateModel):
|
||||
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')
|
||||
chat_participants: Mapped[List['ChatParticipant']] = relationship(back_populates='chat', cascade='all,delete')
|
||||
|
||||
|
||||
class Message(BaseModel, DateModel):
|
||||
@@ -292,25 +292,6 @@ class Message(BaseModel, DateModel):
|
||||
return f'{self.content}'
|
||||
|
||||
|
||||
class ReadStatus(BaseModel, DateModel):
|
||||
__tablename__ = 'system_read_status'
|
||||
__table_args__ = (
|
||||
Index('idx_read_status_on_chat_id', 'chat_id'),
|
||||
Index('idx_read_status_on_user_id', 'user_id'),
|
||||
{'comment': '聊天消息读取状态表'}
|
||||
)
|
||||
|
||||
last_read_message_id: Mapped[int] = mapped_column(nullable=True)
|
||||
user_id: Mapped[int] = mapped_column(ForeignKey('system_users.user_id'))
|
||||
chat_id: Mapped[int] = mapped_column(ForeignKey('system_chats.id'))
|
||||
|
||||
chat: Mapped['Chat'] = relationship(back_populates='read_statuses')
|
||||
user: Mapped['User'] = relationship(back_populates='read_statuses')
|
||||
|
||||
def __str__(self):
|
||||
return f'User: {self.user_id}, Message: {self.last_read_message_id}'
|
||||
|
||||
|
||||
class PointsTransaction(BaseModel, DateModel):
|
||||
__tablename__ = 'system_points_transaction'
|
||||
__table_args__ = (
|
||||
@@ -335,3 +316,8 @@ class ChatParticipant(BaseModel):
|
||||
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)
|
||||
last_read_message_id: Mapped[int] = mapped_column(default=0, nullable=True)
|
||||
last_del_message_id: Mapped[int] = mapped_column(default=0, nullable=True)
|
||||
|
||||
chat: Mapped['Chat'] = relationship(back_populates='chat_participants')
|
||||
user: Mapped['User'] = relationship(back_populates='chat_participants')
|
||||
|
||||
Reference in New Issue
Block a user