refactor: update repository interfaces and improve dependency injection
- Refactored repository structures to use interfaces instead of concrete types, enhancing flexibility and testability. - Updated various repository methods to accept interfaces, allowing for better dependency management. - Modified wire generation to accommodate new repository interfaces, ensuring proper service injection throughout the application. - Enhanced handler methods to utilize DTOs for filtering and data handling, improving code clarity and maintainability.
This commit is contained in:
@@ -17,6 +17,7 @@ type GroupRepository interface {
|
||||
Update(group *model.Group) error
|
||||
Delete(id string) error
|
||||
GetByOwnerID(ownerID string, page, pageSize int) ([]model.Group, int64, error)
|
||||
TransferOwner(groupID, oldOwnerID, newOwnerID string) error
|
||||
|
||||
// 群成员操作
|
||||
AddMember(member *model.GroupMember) error
|
||||
@@ -90,6 +91,32 @@ func (r *groupRepository) Update(group *model.Group) error {
|
||||
return r.db.Save(group).Error
|
||||
}
|
||||
|
||||
// TransferOwner 转让群主(在事务中更新群主和角色)
|
||||
func (r *groupRepository) TransferOwner(groupID, oldOwnerID, newOwnerID string) error {
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
// 更新群组的群主
|
||||
if err := tx.Model(&model.Group{}).Where("id = ?", groupID).Update("owner_id", newOwnerID).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新原群主为管理员
|
||||
if err := tx.Model(&model.GroupMember{}).
|
||||
Where("group_id = ? AND user_id = ?", groupID, oldOwnerID).
|
||||
Update("role", model.GroupRoleAdmin).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// 更新新群主为群主
|
||||
if err := tx.Model(&model.GroupMember{}).
|
||||
Where("group_id = ? AND user_id = ?", groupID, newOwnerID).
|
||||
Update("role", model.GroupRoleOwner).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// Delete 删除群组
|
||||
func (r *groupRepository) Delete(id string) error {
|
||||
return r.db.Transaction(func(tx *gorm.DB) error {
|
||||
|
||||
Reference in New Issue
Block a user