narasiahli-be/app/module/users/repository/user-expert.repository.go

74 lines
1.5 KiB
Go

package repository
import (
"fmt"
"narasi-ahli-be/app/database"
"narasi-ahli-be/app/database/entity/users"
"narasi-ahli-be/app/module/users/request"
)
type UserExpertRepository interface {
GetExperts(req request.UserExpertQueryRequest) ([]*users.Users, error)
FindExpertByID(id uint) (*users.Users, error)
}
type userExpertRepository struct {
DB *database.Database
}
func NewUserExpertRepository(db *database.Database) UserExpertRepository {
return &userExpertRepository{DB: db}
}
func (r *userExpertRepository) GetExperts(
req request.UserExpertQueryRequest,
) ([]*users.Users, error) {
fmt.Println("=== GetExperts CALLED ===")
fmt.Printf("repo instance: %+v\n", r)
if r.DB == nil {
panic("🔥 r.DB IS NIL")
}
if r.DB.DB == nil {
panic("🔥 r.DB.DB IS NIL")
}
var res []*users.Users
query := r.DB.DB.
Debug(). // 🔥 TAMBAHKAN INI
Model(&users.Users{}).
Where(
"user_role_id = ? AND (is_active = true OR is_active IS NULL)",
3,
)
if req.Name != nil {
query = query.Where("fullname ILIKE ?", "%"+*req.Name+"%")
}
if req.Type != nil {
query = query.Where("type ILIKE ?", "%"+*req.Type+"%")
}
err := query.Find(&res).Error
return res, err
}
func (r *userExpertRepository) FindExpertByID(id uint) (*users.Users, error) {
var user users.Users
err := r.DB.DB.
Where(
"id = ? AND user_role_id = ? AND (is_active = true OR is_active IS NULL)",
id, 3,
).
First(&user).
Error
if err != nil {
return nil, err
}
return &user, nil
}