* INFRA-2887 : Incident reminder cron refactor/reimplementation * INFRA-2887 : remove cron code * INFRA-2887 : remove comment * INFRA-2887 : Minor changes * INFRA-2887 : PR comments * INFRA-3121 : CLEANUP CRON, remove shedlock table and add UT's * INFRA-2887 : Add default ack * INFRA-2887 : Handler changes
139 lines
4.2 KiB
Go
139 lines
4.2 KiB
Go
package teamUser
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
"houston/model/teamUser"
|
|
)
|
|
|
|
type teamUserRepositoryImpl struct {
|
|
gormClient *gorm.DB
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) AddTeamUser(teamUser teamUser.TeamUserEntity) (*teamUser.TeamUserEntity, error) {
|
|
result := repo.gormClient.Create(&teamUser)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
|
|
return &teamUser, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUsersByTeamId(teamId uint) ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
result := repo.gormClient.Where("team_id = ?", teamId).Preload("Team").Preload("User").Find(&teamUsers)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
|
|
return teamUsers, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUserByTeamIdAndUserId(teamId, userId uint) (teamUser.TeamUserEntity, error) {
|
|
var teamUser teamUser.TeamUserEntity
|
|
result := repo.gormClient.Where("team_id = ? AND user_id = ?", teamId, userId).Preload("Team").Preload("User").First(&teamUser)
|
|
if result.Error != nil {
|
|
return teamUser, result.Error
|
|
}
|
|
|
|
return teamUser, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamsByUserId(userId uint) ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
result := repo.gormClient.
|
|
Joins("JOIN team ON team_user.team_id = team.id").
|
|
Preload("Team").
|
|
Where("team_user.user_id = ? AND team.active = ?", userId, true).
|
|
Find(&teamUsers)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
if result.RowsAffected == 0 {
|
|
return nil, gorm.ErrRecordNotFound
|
|
}
|
|
|
|
return teamUsers, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) RemoveTeamUserByTeamIdAndUserId(teamId, userId uint) error {
|
|
result := repo.gormClient.Where("team_id = ? AND user_id = ?", teamId, userId).Delete(&teamUser.TeamUserEntity{})
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUserByTeamIdAndUserEmailId(teamId uint, userEmailId string) (*teamUser.TeamUserEntity, error) {
|
|
var teamUser teamUser.TeamUserEntity
|
|
if err := repo.gormClient.
|
|
Preload("User").
|
|
Preload("Team").
|
|
Joins("JOIN houston_user ON houston_user.id = team_user.user_id").
|
|
Where("houston_user.email = ? AND team_user.team_id = ?", userEmailId, teamId).
|
|
First(&teamUser).
|
|
Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &teamUser, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUsersByTeamIdAndUserEmailIds(teamId uint, userEmailIds []string) ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
if err := repo.gormClient.
|
|
Preload("User").
|
|
Joins("JOIN houston_user ON houston_user.id = team_user.user_id").
|
|
Where("houston_user.email IN (?) AND team_user.team_id = ?", userEmailIds, teamId).
|
|
Find(&teamUsers).
|
|
Error; err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return teamUsers, nil
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUsersWithMinimumSeverityIdLessThanOrEqualToGivenSeverity(teamId, severityId uint) ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
|
|
err := repo.gormClient.Table("team_user").
|
|
Preload("User").
|
|
Select("team_user.*").
|
|
Joins("JOIN team_user_severity tus ON team_user.id = tus.team_user").
|
|
Joins("JOIN team_severity ts ON tus.team_severity = ts.id").
|
|
Joins("JOIN severity s ON ts.severity_id = s.id").
|
|
Joins("JOIN severity s2 ON s2.id = ?", severityId).
|
|
Where("team_user.team_id = ?", teamId).
|
|
Where("s.priority >= s2.priority").
|
|
Find(&teamUsers).
|
|
Error
|
|
|
|
return teamUsers, err
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetTeamUsersForGivenSeverity(teamId, severityId uint) ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
|
|
err := repo.gormClient.Table("team_user").
|
|
Preload("User").
|
|
Joins("JOIN team_user_severity tus ON team_user.id = tus.team_user").
|
|
Joins("JOIN team_severity ts ON tus.team_severity = ts.id").
|
|
Joins("JOIN severity s ON ts.severity_id = s.id").
|
|
Where("team_user.team_id = ?", teamId).
|
|
Where("s.id = ?", severityId).
|
|
Find(&teamUsers).
|
|
Error
|
|
|
|
return teamUsers, err
|
|
}
|
|
|
|
func (repo *teamUserRepositoryImpl) GetAllTeamUsers() ([]teamUser.TeamUserEntity, error) {
|
|
var teamUsers []teamUser.TeamUserEntity
|
|
result := repo.gormClient.Preload("Team").Preload("User").Find(&teamUsers)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
|
|
return teamUsers, nil
|
|
}
|