|
|
// Copyright © 2023 OpenIM. All rights reserved.
|
|
|
//
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
// You may obtain a copy of the License at
|
|
|
//
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
//
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
// See the License for the specific language governing permissions and
|
|
|
// limitations under the License.
|
|
|
|
|
|
package relation
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
"time"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
FriendModelTableName = "friends"
|
|
|
)
|
|
|
|
|
|
type FriendModel struct {
|
|
|
OwnerUserID string `gorm:"column:owner_user_id;primary_key;size:64"`
|
|
|
FriendUserID string `gorm:"column:friend_user_id;primary_key;size:64"`
|
|
|
Remark string `gorm:"column:remark;size:255"`
|
|
|
CreateTime time.Time `gorm:"column:create_time;autoCreateTime"`
|
|
|
AddSource int32 `gorm:"column:add_source"`
|
|
|
OperatorUserID string `gorm:"column:operator_user_id;size:64"`
|
|
|
Ex string `gorm:"column:ex;size:1024"`
|
|
|
}
|
|
|
|
|
|
func (FriendModel) TableName() string {
|
|
|
return FriendModelTableName
|
|
|
}
|
|
|
|
|
|
type FriendModelInterface interface {
|
|
|
// 插入多条记录
|
|
|
Create(ctx context.Context, friends []*FriendModel) (err error)
|
|
|
// 删除ownerUserID指定的好友
|
|
|
Delete(ctx context.Context, ownerUserID string, friendUserIDs []string) (err error)
|
|
|
// 更新ownerUserID单个好友信息 更新零值
|
|
|
UpdateByMap(ctx context.Context, ownerUserID string, friendUserID string, args map[string]interface{}) (err error)
|
|
|
// 更新好友信息的非零值
|
|
|
Update(ctx context.Context, friends []*FriendModel) (err error)
|
|
|
// 更新好友备注(也支持零值 )
|
|
|
UpdateRemark(ctx context.Context, ownerUserID, friendUserID, remark string) (err error)
|
|
|
// 获取单个好友信息,如没找到 返回错误
|
|
|
Take(ctx context.Context, ownerUserID, friendUserID string) (friend *FriendModel, err error)
|
|
|
// 查找好友关系,如果是双向关系,则都返回
|
|
|
FindUserState(ctx context.Context, userID1, userID2 string) (friends []*FriendModel, err error)
|
|
|
// 获取 owner指定的好友列表 如果有friendUserIDs不存在,也不返回错误
|
|
|
FindFriends(ctx context.Context, ownerUserID string, friendUserIDs []string) (friends []*FriendModel, err error)
|
|
|
// 获取哪些人添加了friendUserID 如果有ownerUserIDs不存在,也不返回错误
|
|
|
FindReversalFriends(
|
|
|
ctx context.Context,
|
|
|
friendUserID string,
|
|
|
ownerUserIDs []string,
|
|
|
) (friends []*FriendModel, err error)
|
|
|
// 获取ownerUserID好友列表 支持翻页
|
|
|
FindOwnerFriends(
|
|
|
ctx context.Context,
|
|
|
ownerUserID string,
|
|
|
pageNumber, showNumber int32,
|
|
|
) (friends []*FriendModel, total int64, err error)
|
|
|
// 获取哪些人添加了friendUserID 支持翻页
|
|
|
FindInWhoseFriends(
|
|
|
ctx context.Context,
|
|
|
friendUserID string,
|
|
|
pageNumber, showNumber int32,
|
|
|
) (friends []*FriendModel, total int64, err error)
|
|
|
// 获取好友UserID列表
|
|
|
FindFriendUserIDs(ctx context.Context, ownerUserID string) (friendUserIDs []string, err error)
|
|
|
NewTx(tx any) FriendModelInterface
|
|
|
}
|