34 lines
720 B
Go
34 lines
720 B
Go
package job
|
|
|
|
import (
|
|
"github.com/jobs-scraper/internal/dto"
|
|
"github.com/jobs-scraper/libs/ports"
|
|
"github.com/jobs-scraper/libs/repo"
|
|
)
|
|
|
|
type GetJobs struct {
|
|
jobRepo *repo.JobRepository
|
|
}
|
|
|
|
func NewGetJobsHandler(jobRepo *repo.JobRepository) *GetJobs {
|
|
return &GetJobs{
|
|
jobRepo: jobRepo,
|
|
}
|
|
}
|
|
|
|
func (cj *GetJobs) Handle(query ports.GetJobQuery) ([]dto.JobDTO, int, error) {
|
|
filter := repo.JobFilter{
|
|
Location: query.Location,
|
|
Keywords: query.Keywords,
|
|
Provider: query.Provider,
|
|
PageSize: query.PageSize,
|
|
PageNumber: query.PageNumber,
|
|
}
|
|
|
|
results, totalCount, err := cj.jobRepo.GetAllJobs(filter)
|
|
|
|
if err != nil {
|
|
return nil, 0, err
|
|
}
|
|
return dto.JobsFromDomain(results), totalCount, nil
|
|
}
|