INFRA-2887 : Upsert users cron refactor (#412)

* INFRA-2887 : Upsert users cron refactor

* INFRA-2887 : Review changes

* INFRA-2887 : added UT's

* INFRA-2887 : Second round review changes

* INFRA-2887 : Add default ack

* INFRA-2887 : Add default ack

* INFRA-2887 : make flow async
This commit is contained in:
Vijay Joshi
2024-04-02 16:25:34 +05:30
committed by GitHub
parent 0d613a4bfb
commit 8cd72b46a3
18 changed files with 317 additions and 128 deletions

View File

@@ -40,3 +40,65 @@ type UserDTO struct {
RealName string `json:"real_name"`
Image string `json:"image"`
}
func (entity *UserEntity) Update(user UserEntity) (UserEntity, bool) {
setterFunctions := []func(UserEntity) bool{
entity.setNameIfNotEqual, entity.setEmailIfNotEqual, entity.setImageIfNotEqual,
entity.setRealNameIfNotEqual, entity.setActiveIfNotEqual, entity.setIsBotIfNotEqual,
}
hasUpdated := false
for _, setter := range setterFunctions {
hasUpdated = setter(user) || hasUpdated
}
return *entity, hasUpdated
}
func (entity *UserEntity) setNameIfNotEqual(user UserEntity) bool {
if entity.Name != user.Name {
entity.Name = user.Name
return true
}
return false
}
func (entity *UserEntity) setEmailIfNotEqual(user UserEntity) bool {
if entity.Email != user.Email {
entity.Email = user.Email
return true
}
return false
}
func (entity *UserEntity) setImageIfNotEqual(user UserEntity) bool {
if entity.Image != user.Image {
entity.Image = user.Image
return true
}
return false
}
func (entity *UserEntity) setRealNameIfNotEqual(user UserEntity) bool {
if entity.RealName != user.RealName {
entity.RealName = user.RealName
return true
}
return false
}
func (entity *UserEntity) setActiveIfNotEqual(user UserEntity) bool {
if entity.Active != user.Active {
entity.Active = user.Active
return true
}
return false
}
func (entity *UserEntity) setIsBotIfNotEqual(user UserEntity) bool {
if entity.IsBot != user.IsBot {
entity.IsBot = user.IsBot
return true
}
return false
}

View File

@@ -15,7 +15,7 @@ func NewUserRepository(gormClient *gorm.DB) *Repository {
}
}
func (r *Repository) InsertHoustonUsers(users []UserEntity) error {
func (r *Repository) Insert(users []UserEntity) error {
result := r.gormClient.Create(&users)
if result.Error != nil || result.RowsAffected != int64(len(users)) {
return result.Error
@@ -24,6 +24,15 @@ func (r *Repository) InsertHoustonUsers(users []UserEntity) error {
return nil
}
func (r *Repository) Update(users []UserEntity) error {
result := r.gormClient.Save(&users)
if result.Error != nil {
return result.Error
}
return nil
}
func (r *Repository) UpdateHoustonUser(user UserEntity) error {
result := r.gormClient.Select("*").Updates(&user)
if result.Error != nil || result.RowsAffected != 1 {

View File

@@ -1,7 +1,8 @@
package user
type IUserRepository interface {
InsertHoustonUsers(users []UserEntity) error
Insert(users []UserEntity) error
Update(users []UserEntity) error
UpdateHoustonUser(user UserEntity) error
GetAllHoustonUsers() (*[]UserEntity, error)
IsAHoustonUser(nameOrSlackUserId string) (bool, *UserEntity)