|
|
@ -36,20 +36,20 @@ type ConversationDatabase interface {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func NewConversationDatabase(conversation relationTb.ConversationModelInterface, cache cache.ConversationCache, tx tx.Tx) ConversationDatabase {
|
|
|
|
func NewConversationDatabase(conversation relationTb.ConversationModelInterface, cache cache.ConversationCache, tx tx.Tx) ConversationDatabase {
|
|
|
|
return &ConversationDataBase{
|
|
|
|
return &conversationDatabase{
|
|
|
|
conversationDB: conversation,
|
|
|
|
conversationDB: conversation,
|
|
|
|
cache: cache,
|
|
|
|
cache: cache,
|
|
|
|
tx: tx,
|
|
|
|
tx: tx,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
type ConversationDataBase struct {
|
|
|
|
type conversationDatabase struct {
|
|
|
|
conversationDB relationTb.ConversationModelInterface
|
|
|
|
conversationDB relationTb.ConversationModelInterface
|
|
|
|
cache cache.ConversationCache
|
|
|
|
cache cache.ConversationCache
|
|
|
|
tx tx.Tx
|
|
|
|
tx tx.Tx
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) SetUsersConversationFiledTx(ctx context.Context, userIDs []string, conversation *relationTb.ConversationModel, filedMap map[string]interface{}) (err error) {
|
|
|
|
func (c *conversationDatabase) SetUsersConversationFiledTx(ctx context.Context, userIDs []string, conversation *relationTb.ConversationModel, filedMap map[string]interface{}) (err error) {
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
conversationTx := c.conversationDB.NewTx(tx)
|
|
|
|
conversationTx := c.conversationDB.NewTx(tx)
|
|
|
@ -95,7 +95,7 @@ func (c *ConversationDataBase) SetUsersConversationFiledTx(ctx context.Context,
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) UpdateUsersConversationFiled(ctx context.Context, userIDs []string, conversationID string, args map[string]interface{}) error {
|
|
|
|
func (c *conversationDatabase) UpdateUsersConversationFiled(ctx context.Context, userIDs []string, conversationID string, args map[string]interface{}) error {
|
|
|
|
_, err := c.conversationDB.UpdateByMap(ctx, userIDs, conversationID, args)
|
|
|
|
_, err := c.conversationDB.UpdateByMap(ctx, userIDs, conversationID, args)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
@ -103,7 +103,7 @@ func (c *ConversationDataBase) UpdateUsersConversationFiled(ctx context.Context,
|
|
|
|
return c.cache.DelUsersConversation(conversationID, userIDs...).ExecDel(ctx)
|
|
|
|
return c.cache.DelUsersConversation(conversationID, userIDs...).ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) CreateConversation(ctx context.Context, conversations []*relationTb.ConversationModel) error {
|
|
|
|
func (c *conversationDatabase) CreateConversation(ctx context.Context, conversations []*relationTb.ConversationModel) error {
|
|
|
|
if err := c.conversationDB.Create(ctx, conversations); err != nil {
|
|
|
|
if err := c.conversationDB.Create(ctx, conversations); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -114,7 +114,7 @@ func (c *ConversationDataBase) CreateConversation(ctx context.Context, conversat
|
|
|
|
return c.cache.DelConversationIDs(userIDs...).DelUserConversationIDsHash(userIDs...).ExecDel(ctx)
|
|
|
|
return c.cache.DelConversationIDs(userIDs...).DelUserConversationIDsHash(userIDs...).ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) SyncPeerUserPrivateConversationTx(ctx context.Context, conversations []*relationTb.ConversationModel) error {
|
|
|
|
func (c *conversationDatabase) SyncPeerUserPrivateConversationTx(ctx context.Context, conversations []*relationTb.ConversationModel) error {
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
conversationTx := c.conversationDB.NewTx(tx)
|
|
|
|
conversationTx := c.conversationDB.NewTx(tx)
|
|
|
@ -150,19 +150,19 @@ func (c *ConversationDataBase) SyncPeerUserPrivateConversationTx(ctx context.Con
|
|
|
|
return c.cache.ExecDel(ctx)
|
|
|
|
return c.cache.ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) FindConversations(ctx context.Context, ownerUserID string, conversationIDs []string) ([]*relationTb.ConversationModel, error) {
|
|
|
|
func (c *conversationDatabase) FindConversations(ctx context.Context, ownerUserID string, conversationIDs []string) ([]*relationTb.ConversationModel, error) {
|
|
|
|
return c.cache.GetConversations(ctx, ownerUserID, conversationIDs)
|
|
|
|
return c.cache.GetConversations(ctx, ownerUserID, conversationIDs)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetConversation(ctx context.Context, ownerUserID string, conversationID string) (*relationTb.ConversationModel, error) {
|
|
|
|
func (c *conversationDatabase) GetConversation(ctx context.Context, ownerUserID string, conversationID string) (*relationTb.ConversationModel, error) {
|
|
|
|
return c.cache.GetConversation(ctx, ownerUserID, conversationID)
|
|
|
|
return c.cache.GetConversation(ctx, ownerUserID, conversationID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetUserAllConversation(ctx context.Context, ownerUserID string) ([]*relationTb.ConversationModel, error) {
|
|
|
|
func (c *conversationDatabase) GetUserAllConversation(ctx context.Context, ownerUserID string) ([]*relationTb.ConversationModel, error) {
|
|
|
|
return c.cache.GetUserAllConversations(ctx, ownerUserID)
|
|
|
|
return c.cache.GetUserAllConversations(ctx, ownerUserID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) SetUserConversations(ctx context.Context, ownerUserID string, conversations []*relationTb.ConversationModel) error {
|
|
|
|
func (c *conversationDatabase) SetUserConversations(ctx context.Context, ownerUserID string, conversations []*relationTb.ConversationModel) error {
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
var conversationIDs []string
|
|
|
|
var conversationIDs []string
|
|
|
@ -208,11 +208,11 @@ func (c *ConversationDataBase) SetUserConversations(ctx context.Context, ownerUs
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) FindRecvMsgNotNotifyUserIDs(ctx context.Context, groupID string) ([]string, error) {
|
|
|
|
func (c *conversationDatabase) FindRecvMsgNotNotifyUserIDs(ctx context.Context, groupID string) ([]string, error) {
|
|
|
|
return c.cache.GetSuperGroupRecvMsgNotNotifyUserIDs(ctx, groupID)
|
|
|
|
return c.cache.GetSuperGroupRecvMsgNotNotifyUserIDs(ctx, groupID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) CreateGroupChatConversation(ctx context.Context, groupID string, userIDs []string) error {
|
|
|
|
func (c *conversationDatabase) CreateGroupChatConversation(ctx context.Context, groupID string, userIDs []string) error {
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
cache := c.cache.NewCache()
|
|
|
|
conversationID := utils.GetConversationIDBySessionType(constant.SuperGroupChatType, groupID)
|
|
|
|
conversationID := utils.GetConversationIDBySessionType(constant.SuperGroupChatType, groupID)
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
|
if err := c.tx.Transaction(func(tx any) error {
|
|
|
@ -247,18 +247,18 @@ func (c *ConversationDataBase) CreateGroupChatConversation(ctx context.Context,
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
return cache.ExecDel(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetConversationIDs(ctx context.Context, userID string) ([]string, error) {
|
|
|
|
func (c *conversationDatabase) GetConversationIDs(ctx context.Context, userID string) ([]string, error) {
|
|
|
|
return c.cache.GetUserConversationIDs(ctx, userID)
|
|
|
|
return c.cache.GetUserConversationIDs(ctx, userID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetUserConversationIDsHash(ctx context.Context, ownerUserID string) (hash uint64, err error) {
|
|
|
|
func (c *conversationDatabase) GetUserConversationIDsHash(ctx context.Context, ownerUserID string) (hash uint64, err error) {
|
|
|
|
return c.cache.GetUserConversationIDsHash(ctx, ownerUserID)
|
|
|
|
return c.cache.GetUserConversationIDsHash(ctx, ownerUserID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetAllConversationIDs(ctx context.Context) ([]string, error) {
|
|
|
|
func (c *conversationDatabase) GetAllConversationIDs(ctx context.Context) ([]string, error) {
|
|
|
|
return c.conversationDB.GetAllConversationIDs(ctx)
|
|
|
|
return c.conversationDB.GetAllConversationIDs(ctx)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *ConversationDataBase) GetUserAllHasReadSeqs(ctx context.Context, ownerUserID string) (map[string]int64, error) {
|
|
|
|
func (c *conversationDatabase) GetUserAllHasReadSeqs(ctx context.Context, ownerUserID string) (map[string]int64, error) {
|
|
|
|
return c.cache.GetUserAllHasReadSeqs(ctx, ownerUserID)
|
|
|
|
return c.cache.GetUserAllHasReadSeqs(ctx, ownerUserID)
|
|
|
|
}
|
|
|
|
}
|
|
|
|