Files
houston-be/pkg/postgres/query/contributing_factor.go

72 lines
2.1 KiB
Go
Raw Normal View History

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.Find(&cf).Where("deleted_at is NULL")
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.Find(&cf).Where("incident_id = ? and contributing_factor_id = ? and deleted_at is NULL", incidentId, cfId)
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
}