Files
houston-be/model/user/model.go

97 lines
2.1 KiB
Go

package user
import "gorm.io/gorm"
type UserEntity struct {
gorm.Model
Name string
SlackUserId string
Active bool
IsBot bool
Email string
RealName string
Image string
}
func (UserEntity) TableName() string {
return "houston_user"
}
func (entity UserEntity) ToDTO() *UserDTO {
return &UserDTO{
ID: entity.ID,
Name: entity.Name,
SlackUserId: entity.SlackUserId,
Active: entity.Active,
IsBot: entity.IsBot,
Email: entity.Email,
RealName: entity.RealName,
Image: entity.Image,
}
}
type UserDTO struct {
ID uint `json:"id"`
Name string `json:"name"`
SlackUserId string `json:"slack_user_id"`
Active bool `json:"active"`
IsBot bool `json:"is_bot"`
Email string `json:"email"`
RealName string `json:"real_name"`
Image string `json:"image"`
}
func (entity *UserEntity) Update(user UserEntity) (UserEntity, bool) {
setterFunctions := []func(UserEntity) bool{
entity.setNameIfNotEqual, 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) 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
}