53 lines
1.4 KiB
Go
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,
|
|
}
|
|
}
|