Assign default circle to user when leaving a circle

This commit is contained in:
Mo Tarbin 2024-12-06 23:43:38 -05:00
parent 95a9e4af5b
commit 850d472445
2 changed files with 19 additions and 0 deletions

View file

@ -191,6 +191,7 @@ func handleUserLeavingCircle(h *Handler, c *gin.Context, leavingUser *uModel.Use
h.choreRepo.UpdateChores(c, userAssignedCircleChores) h.choreRepo.UpdateChores(c, userAssignedCircleChores)
h.choreRepo.RemoveChoreAssigneeByCircleID(c, leavingUser.ID, leavingUser.CircleID) h.choreRepo.RemoveChoreAssigneeByCircleID(c, leavingUser.ID, leavingUser.CircleID)
h.circleRepo.AssignDefaultCircle(c, leavingUser.ID)
return nil return nil
} }

View file

@ -4,6 +4,7 @@ import (
"context" "context"
cModel "donetick.com/core/internal/circle/model" cModel "donetick.com/core/internal/circle/model"
uModel "donetick.com/core/internal/user/model"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -115,3 +116,20 @@ func (r *CircleRepository) GetCircleAdmins(c context.Context, circleID int) ([]*
} }
return circleAdmins, nil return circleAdmins, nil
} }
func (r *CircleRepository) GetDefaultCircle(c context.Context, userID int) (*cModel.Circle, error) {
var circle cModel.Circle
if err := r.db.WithContext(c).Raw("SELECT circles.* FROM circles LEFT JOIN user_circles on circles.id = user_circles.circle_id WHERE user_circles.user_id = ? AND user_circles.role = 'admin'", userID).Scan(&circle).Error; err != nil {
return nil, err
}
return &circle, nil
}
func (r *CircleRepository) AssignDefaultCircle(c context.Context, userID int) error {
defaultCircle, err := r.GetDefaultCircle(c, userID)
if err != nil {
return err
}
return r.db.WithContext(c).Model(&uModel.User{}).Where("id = ?", userID).Update("circle_id", defaultCircle.ID).Error
}