From 3945abcb8f5d2dedce58099a0b5afcd52399d275 Mon Sep 17 00:00:00 2001 From: Shashank Shekhar Date: Wed, 20 Mar 2024 16:26:56 +0530 Subject: [PATCH] INFRA-2830 | adding version column in incident entity (#403) --- go.mod | 1 + model/base_entity.go | 9 +++++++++ model/incident/entity.go | 3 ++- model/incident/incident.go | 6 +++--- service/incident/impl/incident_service_test.go | 3 ++- service/rca/impl/rca_service_test.go | 3 +-- 6 files changed, 18 insertions(+), 7 deletions(-) create mode 100644 model/base_entity.go diff --git a/go.mod b/go.mod index 82a8065..595216f 100644 --- a/go.mod +++ b/go.mod @@ -26,6 +26,7 @@ require ( gorm.io/datatypes v1.2.0 gorm.io/driver/postgres v1.5.7 gorm.io/gorm v1.25.7-0.20240204074919-46816ad31dde + gorm.io/plugin/optimisticlock v1.1.1 ) require ( diff --git a/model/base_entity.go b/model/base_entity.go new file mode 100644 index 0000000..06f070c --- /dev/null +++ b/model/base_entity.go @@ -0,0 +1,9 @@ +package model + +import "gorm.io/gorm" +import "gorm.io/plugin/optimisticlock" + +type BaseEntity struct { + gorm.Model + Version optimisticlock.Version `gorm:"column:version;default:0"` +} diff --git a/model/incident/entity.go b/model/incident/entity.go index 9eb3bfa..7eb1a46 100644 --- a/model/incident/entity.go +++ b/model/incident/entity.go @@ -1,6 +1,7 @@ package incident import ( + "houston/model" "houston/model/product" "time" @@ -44,7 +45,7 @@ const ( // IncidentEntity all the incident created will go in this table type IncidentEntity struct { - gorm.Model + model.BaseEntity Title string `gorm:"column:title"` Description string `gorm:"column:description"` Status uint `gorm:"column:status"` diff --git a/model/incident/incident.go b/model/incident/incident.go index dafa763..fd6fcde 100644 --- a/model/incident/incident.go +++ b/model/incident/incident.go @@ -224,7 +224,7 @@ func (r *Repository) captureLogs(justification string) { } func (r *Repository) UpdateIncident(incidentEntity *IncidentEntity) error { - result := r.gormClient.Updates(incidentEntity) + result := r.gormClient.Select("*").Updates(incidentEntity) if result.Error != nil { return result.Error } @@ -239,7 +239,7 @@ func (r *Repository) UpdateIncidentWithAssociations(incidentEntity *IncidentEnti if err != nil { return err } - result := r.gormClient.Updates(incidentEntity) + result := r.gormClient.Select("*").Updates(incidentEntity) if result.Error != nil { return result.Error } @@ -249,7 +249,7 @@ func (r *Repository) UpdateIncidentWithAssociations(incidentEntity *IncidentEnti } func (r *Repository) UpdateIncidentWithJustification(incidentEntity *IncidentEntity, justification string) error { - result := r.gormClient.Updates(incidentEntity) + result := r.gormClient.Select("*").Updates(incidentEntity) if result.Error != nil { return result.Error } diff --git a/service/incident/impl/incident_service_test.go b/service/incident/impl/incident_service_test.go index 59a2319..7ab73ef 100644 --- a/service/incident/impl/incident_service_test.go +++ b/service/incident/impl/incident_service_test.go @@ -10,6 +10,7 @@ import ( "gorm.io/gorm" "houston/logger" "houston/mocks" + "houston/model" "houston/model/incident" "houston/model/incident_channel" "houston/model/severity" @@ -321,7 +322,7 @@ func (suite *IncidentServiceSuite) Test_UpdateIncident_SlackError() { func GetMockIncident() *incident.IncidentEntity { return &incident.IncidentEntity{ - Model: gorm.Model{ID: 1}, + BaseEntity: model.BaseEntity{Model: gorm.Model{ID: 1}}, Title: "Mock Title", Description: "Mock Description", Status: 1, diff --git a/service/rca/impl/rca_service_test.go b/service/rca/impl/rca_service_test.go index 48b1667..4e2c417 100644 --- a/service/rca/impl/rca_service_test.go +++ b/service/rca/impl/rca_service_test.go @@ -7,7 +7,6 @@ import ( "github.com/spf13/viper" "github.com/stretchr/testify/assert" "go.uber.org/zap" - "gorm.io/gorm" "houston/common/util" "houston/logger" "houston/mocks" @@ -670,7 +669,7 @@ func getMockUsers() *[]user.UserEntity { func GetMockIncident() *incident.IncidentEntity { return &incident.IncidentEntity{ - Model: gorm.Model{}, + BaseEntity: model.BaseEntity{}, Title: "Mock Title", Description: "Mock Description", Status: 1,