initial commit

This commit is contained in:
m.zare
2026-04-10 18:25:21 +03:30
commit 77ca6c34a3
263 changed files with 34470 additions and 0 deletions

190
internal/dto/profile.go Normal file
View File

@@ -0,0 +1,190 @@
package dto
import (
"base/pkg/validation"
"github.com/google/uuid"
)
type CreateProfileRequest struct {
Handle string `json:"handle"`
PageSectionOrder map[string]int `json:"page_section_order"`
Hero HeroDTO `json:"hero"`
About AboutDTO `json:"about"`
Skills []SkillDTO `json:"skills"`
Contact ContactDTO `json:"contact"`
PageSetting PageSettingDTO `json:"page_setting"`
}
func (*CreateProfileRequest) Schema() validation.Schema {
return validation.Schema{
"handle": validation.Rule{
Field: "handle",
Type: validation.ValidationTypeString,
Required: true,
},
}
}
type HeroDTO struct {
RoleID *uuid.UUID `json:"role_id"`
RoleLevel string `json:"role_level"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Company string `json:"company"`
ShortDescription string `json:"short_description"`
ResumeLink string `json:"resume_link"`
CTAEnabled bool `json:"cta_enabled"`
Avatar string `json:"avatar"`
}
func (*HeroDTO) Schema() validation.Schema { return validation.Schema{} }
type AboutDTO struct {
ProfilePicture string `json:"profile_picture"`
About string `json:"about"`
Achievements []AchievementDTO `json:"achievements"`
}
type AchievementDTO struct {
Title string `json:"title"`
Value string `json:"value"`
Enabled bool `json:"enabled"`
}
type SkillDTO struct {
SkillName string `json:"skill_name"`
Level string `json:"level"`
}
type ContactDTO struct {
Email string `json:"email"`
Phone string `json:"phone"`
SocialLinks []SocialLinkDTO `json:"social_links"`
}
func (*ContactDTO) Schema() validation.Schema { return validation.Schema{} }
type SocialLinkDTO struct {
LinkType string `json:"link_type"`
Link string `json:"link"`
}
type PageSettingDTO struct {
VisibilityLevel string `json:"visibility_level"`
}
func (*PageSettingDTO) Schema() validation.Schema {
return validation.Schema{}
}
type UpdateProfileRequest struct {
ID string `uri:"id"`
Handle string `json:"handle"`
PageSectionOrder map[string]int `json:"page_section_order"`
Hero HeroDTO `json:"hero"`
About AboutDTO `json:"about"`
Skills []SkillDTO `json:"skills"`
Contact ContactDTO `json:"contact"`
PageSetting PageSettingDTO `json:"page_setting"`
}
func (*UpdateProfileRequest) Schema() validation.Schema {
return validation.Schema{
"id": validation.Rule{
Field: "id",
Type: validation.ValidationTypeString,
Required: true,
},
}
}
type GetProfileRequest struct {
ID string `uri:"id"`
}
func (*GetProfileRequest) Schema() validation.Schema {
return validation.Schema{
"id": validation.Rule{
Field: "id",
Type: validation.ValidationTypeString,
Required: true,
},
}
}
type GetProfileByHandleRequest struct {
Handle string `uri:"handle"`
}
func (*GetProfileByHandleRequest) Schema() validation.Schema {
return validation.Schema{
"handle": validation.Rule{
Field: "handle",
Type: validation.ValidationTypeString,
Required: true,
},
}
}
type ListProfilesRequest struct {
RoleID *uuid.UUID `form:"role_id"`
FirstName string `form:"first_name"`
LastName string `form:"last_name"`
Company string `form:"company"`
SkillName string `form:"skill_name"`
Page uint `form:"page"`
PageSize uint `form:"page_size"`
SortedBy string `form:"sorted_by"`
Ascending bool `form:"ascending"`
}
func (*ListProfilesRequest) Schema() validation.Schema {
return validation.Schema{}
}
type ProfileResponse struct {
ID uuid.UUID `json:"id"`
Handle string `json:"handle"`
PageSectionOrder map[string]int `json:"page_section_order"`
Hero HeroDTO `json:"hero"`
About AboutDTO `json:"about"`
Skills []SkillDTO `json:"skills"`
Contact ContactDTO `json:"contact"`
PageSetting PageSettingDTO `json:"page_setting"`
}
type ListProfilesResponse struct {
Profiles []ProfileResponse `json:"profiles"`
Total int `json:"total"`
Page uint `json:"page"`
PageSize uint `json:"page_size"`
}
type DeleteProfileRequest struct {
ID string `uri:"id"`
}
func (*DeleteProfileRequest) Schema() validation.Schema {
return validation.Schema{
"id": validation.Rule{
Field: "id",
Type: validation.ValidationTypeString,
Required: true,
},
}
}
// SkillsUpdateRequest for PUT page-sections/skills
type SkillsUpdateRequest struct {
Skills []SkillDTO `json:"skills"`
}
func (*SkillsUpdateRequest) Schema() validation.Schema { return validation.Schema{} }
// PageSectionsResponse for GET page-sections (hero, contact, skills, page_section_order)
type PageSectionsResponse struct {
Hero HeroDTO `json:"hero"`
Contact ContactDTO `json:"contact"`
Skills []SkillDTO `json:"skills"`
PageSectionOrder map[string]int `json:"page_section_order"`
}