96 lines
2.4 KiB
Go
96 lines
2.4 KiB
Go
package user
|
|
|
|
import (
|
|
"errors"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type Repository struct {
|
|
gormClient *gorm.DB
|
|
}
|
|
|
|
func NewUserRepository(gormClient *gorm.DB) *Repository {
|
|
return &Repository{
|
|
gormClient: gormClient,
|
|
}
|
|
}
|
|
|
|
func (r *Repository) InsertHoustonUsers(users []UserEntity) error {
|
|
result := r.gormClient.Create(&users)
|
|
if result.Error != nil || result.RowsAffected != int64(len(users)) {
|
|
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 {
|
|
return result.Error
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *Repository) GetAllHoustonUsers() (*[]UserEntity, error) {
|
|
var users []UserEntity
|
|
result := r.gormClient.Find(&users)
|
|
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return &users, nil
|
|
}
|
|
|
|
func (r *Repository) IsAHoustonUser(nameOrSlackUserId string) (bool, *UserEntity) {
|
|
var existingUser UserEntity
|
|
findByName := r.gormClient.Where("name = ?", nameOrSlackUserId).First(&existingUser)
|
|
if findByName.Error != nil {
|
|
findBySlackUserId := r.gormClient.Where("slack_user_id = ?", nameOrSlackUserId).First(&existingUser)
|
|
if findBySlackUserId.Error != nil {
|
|
return false, nil
|
|
}
|
|
}
|
|
return true, &existingUser
|
|
}
|
|
|
|
func (r *Repository) FindHoustonUserBySlackUserId(slackUserId string) (*UserEntity, error) {
|
|
var user UserEntity
|
|
result := r.gormClient.Where("slack_user_id = ?", slackUserId).First(&user)
|
|
if result.Error != nil {
|
|
// If the user is not found, return both entity and error as nil
|
|
if errors.Is(gorm.ErrRecordNotFound, result.Error) {
|
|
return nil, nil
|
|
}
|
|
return nil, result.Error
|
|
}
|
|
return &user, nil
|
|
}
|
|
|
|
func (r *Repository) InsertHoustonUser(user *UserEntity) error {
|
|
result := r.gormClient.Create(&user)
|
|
if result.Error != nil || result.RowsAffected != 1 {
|
|
return result.Error
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (r *Repository) GetHoustonUsersBySlackId(slackUserId []string) (*[]UserEntity, error) {
|
|
var users []UserEntity
|
|
result := r.gormClient.Where("slack_user_id IN ?", slackUserId).Find(&users)
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return &users, nil
|
|
}
|
|
|
|
func (r *Repository) GetAllActiveHoustonUserBots() ([]UserEntity, error) {
|
|
var users []UserEntity
|
|
result := r.gormClient.Where("is_bot = ? AND active = ?", true, true).Find(&users)
|
|
|
|
if result.Error != nil {
|
|
return nil, result.Error
|
|
}
|
|
return users, nil
|
|
}
|