jobs-monorepo/internal/dto/jobs.go
2026-01-26 17:33:48 +05:00

53 lines
1.4 KiB
Go

package dto
import "github.com/jobs-scraper/internal/domain"
type JobDTO struct {
ID int64 `json:"id"`
Title string `json:"title"`
Company string `json:"company"`
CompanyLink string `json:"companyLink"`
Location string `json:"location"`
JobLink string `json:"jobLink"`
JobPostTime string `json:"jobPostTime,omitempty"`
Provider domain.JobProvider `json:"provider"`
}
func JobFromDomain(j domain.Job) JobDTO {
var postTime string
if j.JobPostTime != nil {
postTime = j.JobPostTime.Format("2006-01-02")
}
return JobDTO{
ID: j.ID,
Title: j.Title,
Company: j.Company,
CompanyLink: j.CompanyLink,
Location: j.Location,
JobLink: j.JobLink,
JobPostTime: postTime,
Provider: j.Provider,
}
}
func JobsFromDomain(jobs []domain.Job) []JobDTO {
dtos := make([]JobDTO, len(jobs))
for i, j := range jobs {
dtos[i] = JobFromDomain(j)
}
return dtos
}
type JobWithDescriptionDTO struct {
JobDTO
Description string `json:"description"`
Criteria map[string]string `json:"criteria,omitempty"`
}
func JobWithDescriptionFromDomain(j domain.JobWithDescription) JobWithDescriptionDTO {
return JobWithDescriptionDTO{
JobDTO: JobFromDomain(j.Job),
Description: j.JobDescription.Description,
Criteria: j.JobDescription.Criteria,
}
}