cvvvvv/internal/domain/resume.go

316 lines
14 KiB
Go

package domain
import "github.com/atombender/go-jsonschema/pkg/types"
// e.g. 2014-06-29
type Iso8601 string
type Resume struct {
// link to the version of the schema that can validate the resume
Schema *string `json:"$schema,omitempty" yaml:"$schema,omitempty" mapstructure:"$schema,omitempty"`
// Specify any awards you have received throughout your professional career
Awards []ResumeAwardsElem `json:"awards,omitempty" yaml:"awards,omitempty" mapstructure:"awards,omitempty"`
// Basics corresponds to the JSON schema field "basics".
Basics *ResumeBasics `json:"basics,omitempty" yaml:"basics,omitempty" mapstructure:"basics,omitempty"`
// Specify any certificates you have received throughout your professional career
Certificates []ResumeCertificatesElem `json:"certificates,omitempty" yaml:"certificates,omitempty" mapstructure:"certificates,omitempty"`
// Education corresponds to the JSON schema field "education".
Education []ResumeEducationElem `json:"education,omitempty" yaml:"education,omitempty" mapstructure:"education,omitempty"`
// Interests corresponds to the JSON schema field "interests".
Interests []ResumeInterestsElem `json:"interests,omitempty" yaml:"interests,omitempty" mapstructure:"interests,omitempty"`
// List any other languages you speak
Languages []ResumeLanguagesElem `json:"languages,omitempty" yaml:"languages,omitempty" mapstructure:"languages,omitempty"`
// The schema version and any other tooling configuration lives here
Meta *ResumeMeta `json:"meta,omitempty" yaml:"meta,omitempty" mapstructure:"meta,omitempty"`
// Specify career projects
Projects []ResumeProjectsElem `json:"projects,omitempty" yaml:"projects,omitempty" mapstructure:"projects,omitempty"`
// Specify your publications through your career
Publications []ResumePublicationsElem `json:"publications,omitempty" yaml:"publications,omitempty" mapstructure:"publications,omitempty"`
// List references you have received
References []ResumeReferencesElem `json:"references,omitempty" yaml:"references,omitempty" mapstructure:"references,omitempty"`
// List out your professional skill-set
Skills []ResumeSkillsElem `json:"skills,omitempty" yaml:"skills,omitempty" mapstructure:"skills,omitempty"`
// Volunteer corresponds to the JSON schema field "volunteer".
Volunteer []ResumeVolunteerElem `json:"volunteer,omitempty" yaml:"volunteer,omitempty" mapstructure:"volunteer,omitempty"`
// Work corresponds to the JSON schema field "work".
Work []ResumeWorkElem `json:"work,omitempty" yaml:"work,omitempty" mapstructure:"work,omitempty"`
}
type ResumeAwardsElem struct {
// e.g. Time Magazine
Awarder *string `json:"awarder,omitempty" yaml:"awarder,omitempty" mapstructure:"awarder,omitempty"`
// Date corresponds to the JSON schema field "date".
Date *Iso8601 `json:"date,omitempty" yaml:"date,omitempty" mapstructure:"date,omitempty"`
// e.g. Received for my work with Quantum Physics
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
// e.g. One of the 100 greatest minds of the century
Title *string `json:"title,omitempty" yaml:"title,omitempty" mapstructure:"title,omitempty"`
}
type ResumeBasics struct {
// e.g. thomas@gmail.com
Email *string `json:"email,omitempty" yaml:"email,omitempty" mapstructure:"email,omitempty"`
// URL (as per RFC 3986) to a image in JPEG or PNG format
Image *string `json:"image,omitempty" yaml:"image,omitempty" mapstructure:"image,omitempty"`
// e.g. Web Developer
Label *string `json:"label,omitempty" yaml:"label,omitempty" mapstructure:"label,omitempty"`
// Location corresponds to the JSON schema field "location".
Location *ResumeBasicsLocation `json:"location,omitempty" yaml:"location,omitempty" mapstructure:"location,omitempty"`
// Name corresponds to the JSON schema field "name".
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// Phone numbers are stored as strings so use any format you like, e.g.
// 712-117-2923
Phone *string `json:"phone,omitempty" yaml:"phone,omitempty" mapstructure:"phone,omitempty"`
// Specify any number of social networks that you participate in
Profiles []ResumeBasicsProfilesElem `json:"profiles,omitempty" yaml:"profiles,omitempty" mapstructure:"profiles,omitempty"`
// Write a short 2-3 sentence biography about yourself
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
// URL (as per RFC 3986) to your website, e.g. personal homepage
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumeBasicsLocation struct {
// To add multiple address lines, use
// . For example, 1234 Glücklichkeit Straße
// Hinterhaus 5. Etage li.
Address *string `json:"address,omitempty" yaml:"address,omitempty" mapstructure:"address,omitempty"`
// City corresponds to the JSON schema field "city".
City *string `json:"city,omitempty" yaml:"city,omitempty" mapstructure:"city,omitempty"`
// code as per ISO-3166-1 ALPHA-2, e.g. US, AU, IN
CountryCode *string `json:"countryCode,omitempty" yaml:"countryCode,omitempty" mapstructure:"countryCode,omitempty"`
// PostalCode corresponds to the JSON schema field "postalCode".
PostalCode *string `json:"postalCode,omitempty" yaml:"postalCode,omitempty" mapstructure:"postalCode,omitempty"`
// The general region where you live. Can be a US state, or a province, for
// instance.
Region *string `json:"region,omitempty" yaml:"region,omitempty" mapstructure:"region,omitempty"`
}
type ResumeBasicsProfilesElem struct {
// e.g. Facebook or Twitter
Network *string `json:"network,omitempty" yaml:"network,omitempty" mapstructure:"network,omitempty"`
// e.g. http://twitter.example.com/neutralthoughts
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
// e.g. neutralthoughts
Username *string `json:"username,omitempty" yaml:"username,omitempty" mapstructure:"username,omitempty"`
}
type ResumeCertificatesElem struct {
// e.g. 1989-06-12
Date *types.SerializableDate `json:"date,omitempty" yaml:"date,omitempty" mapstructure:"date,omitempty"`
// e.g. CNCF
Issuer *string `json:"issuer,omitempty" yaml:"issuer,omitempty" mapstructure:"issuer,omitempty"`
// e.g. Certified Kubernetes Administrator
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// e.g. http://example.com
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumeEducationElem struct {
// e.g. Arts
Area *string `json:"area,omitempty" yaml:"area,omitempty" mapstructure:"area,omitempty"`
// List notable courses/subjects
Courses []string `json:"courses,omitempty" yaml:"courses,omitempty" mapstructure:"courses,omitempty"`
// EndDate corresponds to the JSON schema field "endDate".
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
// e.g. Massachusetts Institute of Technology
Institution *string `json:"institution,omitempty" yaml:"institution,omitempty" mapstructure:"institution,omitempty"`
// grade point average, e.g. 3.67/4.0
Score *string `json:"score,omitempty" yaml:"score,omitempty" mapstructure:"score,omitempty"`
// StartDate corresponds to the JSON schema field "startDate".
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
// e.g. Bachelor
StudyType *string `json:"studyType,omitempty" yaml:"studyType,omitempty" mapstructure:"studyType,omitempty"`
// e.g. http://facebook.example.com
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumeInterestsElem struct {
// Keywords corresponds to the JSON schema field "keywords".
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
// e.g. Philosophy
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}
type ResumeLanguagesElem struct {
// e.g. Fluent, Beginner
Fluency *string `json:"fluency,omitempty" yaml:"fluency,omitempty" mapstructure:"fluency,omitempty"`
// e.g. English, Spanish
Language *string `json:"language,omitempty" yaml:"language,omitempty" mapstructure:"language,omitempty"`
}
// The schema version and any other tooling configuration lives here
type ResumeMeta struct {
// URL (as per RFC 3986) to latest version of this document
Canonical *string `json:"canonical,omitempty" yaml:"canonical,omitempty" mapstructure:"canonical,omitempty"`
// Using ISO 8601 with YYYY-MM-DDThh:mm:ss
LastModified *string `json:"lastModified,omitempty" yaml:"lastModified,omitempty" mapstructure:"lastModified,omitempty"`
// A version field which follows semver - e.g. v1.0.0
Version *string `json:"version,omitempty" yaml:"version,omitempty" mapstructure:"version,omitempty"`
}
type ResumeProjectsElem struct {
// Short summary of project. e.g. Collated works of 2017.
Description *string `json:"description,omitempty" yaml:"description,omitempty" mapstructure:"description,omitempty"`
// EndDate corresponds to the JSON schema field "endDate".
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
// Specify the relevant company/domain affiliations e.g. 'greenpeace',
// 'corporationXYZ'
Entity *string `json:"domain,omitempty" yaml:"domain,omitempty" mapstructure:"domain,omitempty"`
// Specify multiple features
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
// Specify special elements involved
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
// e.g. The World Wide Web
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// Specify your role on this project or in company
Roles []string `json:"roles,omitempty" yaml:"roles,omitempty" mapstructure:"roles,omitempty"`
// StartDate corresponds to the JSON schema field "startDate".
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
// e.g. 'volunteering', 'presentation', 'talk', 'application', 'conference'
Type *string `json:"type,omitempty" yaml:"type,omitempty" mapstructure:"type,omitempty"`
// e.g. http://www.computer.org/csdl/mags/co/1996/10/rx069-abs.html
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumePublicationsElem struct {
// e.g. The World Wide Web
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// e.g. IEEE, Computer Magazine
Publisher *string `json:"publisher,omitempty" yaml:"publisher,omitempty" mapstructure:"publisher,omitempty"`
// ReleaseDate corresponds to the JSON schema field "releaseDate".
ReleaseDate *Iso8601 `json:"releaseDate,omitempty" yaml:"releaseDate,omitempty" mapstructure:"releaseDate,omitempty"`
// Short summary of publication. e.g. Discussion of the World Wide Web, HTTP,
// HTML.
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
// e.g. http://www.computer.org.example.com/csdl/mags/co/1996/10/rx069-abs.html
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumeReferencesElem struct {
// e.g. Timothy Cook
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// e.g. Joe blogs was a great employee, who turned up to work at least once a
// week. He exceeded my expectations when it came to doing nothing.
Reference *string `json:"reference,omitempty" yaml:"reference,omitempty" mapstructure:"reference,omitempty"`
}
type ResumeSkillsElem struct {
// List some keywords pertaining to this skill
Keywords []string `json:"keywords,omitempty" yaml:"keywords,omitempty" mapstructure:"keywords,omitempty"`
// e.g. Master
Level *string `json:"level,omitempty" yaml:"level,omitempty" mapstructure:"level,omitempty"`
// e.g. Web Development
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
}
type ResumeVolunteerElem struct {
// EndDate corresponds to the JSON schema field "endDate".
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
// Specify accomplishments and achievements
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
// e.g. Facebook
Organization *string `json:"organization,omitempty" yaml:"organization,omitempty" mapstructure:"organization,omitempty"`
// e.g. Software Engineer
Position *string `json:"position,omitempty" yaml:"position,omitempty" mapstructure:"position,omitempty"`
// StartDate corresponds to the JSON schema field "startDate".
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
// Give an overview of your responsibilities at the company
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
// e.g. http://facebook.example.com
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}
type ResumeWorkElem struct {
// e.g. Social Media Company
Description *string `json:"description,omitempty" yaml:"description,omitempty" mapstructure:"description,omitempty"`
// EndDate corresponds to the JSON schema field "endDate".
EndDate *Iso8601 `json:"endDate,omitempty" yaml:"endDate,omitempty" mapstructure:"endDate,omitempty"`
// Specify multiple accomplishments
Highlights []string `json:"highlights,omitempty" yaml:"highlights,omitempty" mapstructure:"highlights,omitempty"`
// e.g. Menlo Park, CA
Location *string `json:"location,omitempty" yaml:"location,omitempty" mapstructure:"location,omitempty"`
// e.g. Facebook
Name *string `json:"name,omitempty" yaml:"name,omitempty" mapstructure:"name,omitempty"`
// e.g. Software Engineer
Position *string `json:"position,omitempty" yaml:"position,omitempty" mapstructure:"position,omitempty"`
// StartDate corresponds to the JSON schema field "startDate".
StartDate *Iso8601 `json:"startDate,omitempty" yaml:"startDate,omitempty" mapstructure:"startDate,omitempty"`
// Give an overview of your responsibilities at the company
Summary *string `json:"summary,omitempty" yaml:"summary,omitempty" mapstructure:"summary,omitempty"`
// e.g. http://facebook.example.com
Url *string `json:"url,omitempty" yaml:"url,omitempty" mapstructure:"url,omitempty"`
}