74 lines
1.5 KiB
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("work_type = ?", *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
|
|
}
|