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:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user