package friend import ( "gim/pkg/db" "gim/pkg/gerrors" "github.com/jinzhu/gorm" ) type friendRepo struct{} var FriendRepo = new(friendRepo) // Get 获取好友 func (*friendRepo) Get(userId, friendId int64) (*Friend, error) { friend := Friend{} err := db.DB.First(&friend, "user_id = ? and friend_id = ?", userId, friendId).Error if err != nil && err != gorm.ErrRecordNotFound { return nil, err } if err == gorm.ErrRecordNotFound { return nil, nil } return &friend, nil } // Save 添加好友 func (*friendRepo) Save(friend *Friend) error { return gerrors.WrapError(db.DB.Save(&friend).Error) } // Delete 删除好友 func (*friendRepo) Delete(userId, friendId int64) (err error) { friend := Friend{} //1、正向删除自己这一方 err = gerrors.WrapError(db.DB.Where("user_id = ? and friend_id = ?", userId, friendId).Delete(&friend).Error) if err != nil { return err } //2、反向删除好友这一方 err = gerrors.WrapError(db.DB.Where("user_id = ? and friend_id = ?", friendId, userId).Delete(&friend).Error) if err != nil { return err } return nil } // List 获取好友列表 func (*friendRepo) List(userId int64, status int) ([]Friend, error) { var friends []Friend err := db.DB.Where("user_id = ? and status = ?", userId, status).Find(&friends).Error return friends, gerrors.WrapError(err) }