72 lines
2.1 KiB
Go
72 lines
2.1 KiB
Go
package query
|
|
|
|
import (
|
|
"houston/entity"
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func FindContributingFactorsByIncidentId(db *gorm.DB, incidentId int) (*entity.ContributingFactorEntity, error) {
|
|
|
|
var cf entity.ContributingFactorEntity
|
|
result := db.Where("incidents_tags_contributing_factor_mapping.incident_id = ? AND contributing_factor.deleted_at is NULL AND incidents_tags_contributing_factor_mapping.deleted_at is NULL", incidentId).Joins("JOIN incidents_tags_contributing_factor_mapping on incidents_tags_contributing_factor_mapping.contributing_factor_id = contributing_factor.id").Find(&cf)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
if result.RowsAffected == 0 {
|
|
return nil, nil
|
|
}
|
|
return &cf, nil
|
|
}
|
|
|
|
func FetchAllContributingFactors(db *gorm.DB) ([]entity.ContributingFactorEntity, error) {
|
|
var cf []entity.ContributingFactorEntity
|
|
result := db.Where("deleted_at is NULL").Find(&cf)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return cf, nil
|
|
}
|
|
|
|
func UpsertContributingFactorIdToIncidentId(db *gorm.DB, cfId int, incidentId int) error {
|
|
|
|
incidentTagsContributingFactorMapping := &entity.IncidentTagsContributingFactorMapping{
|
|
ContributingFactorId: cfId,
|
|
IncidentId: incidentId,
|
|
}
|
|
var cf entity.IncidentTagsContributingFactorMapping
|
|
result := db.Where("incident_id = ? and contributing_factor_id = ? and deleted_at is NULL", incidentId, cfId).Find(&cf)
|
|
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
if result.RowsAffected == 1 {
|
|
cf.ContributingFactorId = cfId
|
|
cf.UpdatedAt = time.Now()
|
|
result := db.Save(cf)
|
|
if result != nil {
|
|
return result.Error
|
|
}
|
|
return nil
|
|
} else if result.RowsAffected == 0 {
|
|
addResult := db.Create(incidentTagsContributingFactorMapping)
|
|
if addResult != nil {
|
|
return addResult.Error
|
|
}
|
|
return nil
|
|
}
|
|
return gorm.ErrInvalidData
|
|
|
|
}
|
|
|
|
func SetContributingFactorDeletedAt(db *gorm.DB, incidentId int) error {
|
|
var cf entity.IncidentTagsContributingFactorMapping
|
|
result := db.Model(&cf).Where(" incident_id = ?", incidentId).Update("deleted_at", time.Now())
|
|
|
|
if result.Error != nil {
|
|
return result.Error
|
|
}
|
|
return nil
|
|
}
|