Files
houston-be/repository/teamUser/team_user_repository_impl.go
Vijay Joshi 602db7741c INFRA-2887 : Incident reminder dm cron refactor/re-implementation (#413)
* 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
2024-04-02 18:49:11 +05:30

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
}