gohorsejobs/backend/internal/dto/candidates.go
2025-12-22 19:18:15 -03:00

42 lines
1.6 KiB
Go

package dto
import "time"
// CandidateStats represents aggregate stats for candidates.
type CandidateStats struct {
TotalCandidates int `json:"totalCandidates"`
NewCandidates int `json:"newCandidates"`
ActiveApplications int `json:"activeApplications"`
HiringRate float64 `json:"hiringRate"`
}
// CandidateApplication represents an application entry for the candidate profile.
type CandidateApplication struct {
ID int `json:"id"`
JobTitle string `json:"jobTitle"`
Company string `json:"company"`
Status string `json:"status"`
AppliedAt time.Time `json:"appliedAt"`
}
// Candidate represents candidate profile data for backoffice.
type Candidate struct {
ID int `json:"id"`
Name string `json:"name"`
Email *string `json:"email,omitempty"`
Phone *string `json:"phone,omitempty"`
Location *string `json:"location,omitempty"`
Title *string `json:"title,omitempty"`
Experience *string `json:"experience,omitempty"`
AvatarURL *string `json:"avatarUrl,omitempty"`
Bio *string `json:"bio,omitempty"`
Skills []string `json:"skills"`
Applications []CandidateApplication `json:"applications"`
CreatedAt time.Time `json:"createdAt"`
}
// CandidateListResponse wraps candidate listing with summary statistics.
type CandidateListResponse struct {
Stats CandidateStats `json:"stats"`
Candidates []Candidate `json:"candidates"`
}