gohorsejobs/backend/internal/dto/auth.go
NANDO9322 ad558bc656 feat: melhorias na gestão de empresas e correções de persistência
- Backend: Correção na persistência do email da empresa (CreateCompanyUseCase) e suporte a exclusão em cascata (Cascade Delete) para evitar erro 500.
- Backend: Adicionado suporte completo para Phone, Website, Address, Description e Slug na criação.
- Backend: Correção crítica no JobService para ocultar nome de candidatos na listagem de vagas.
- Frontend: Adição da coluna 'Email' na listagem de empresas e padronização dos ícones de ação.
- Frontend: Inclusão de novas chaves de tradução (i18n) e melhorias no modal de criação.
2026-01-08 17:14:41 -03:00

74 lines
2.6 KiB
Go
Executable file

package dto
import (
"time"
)
// LoginRequest represents the login request payload
type LoginRequest struct {
Identifier string `json:"identifier" validate:"required,min=3"`
Password string `json:"password" validate:"required,min=8"`
}
// LoginResponse represents the login response
type LoginResponse struct {
Token string `json:"token"`
User UserInfo `json:"user"`
Companies []CompanyInfo `json:"companies,omitempty"`
ActiveCompanyID *string `json:"activeCompanyId,omitempty"`
}
// UserInfo represents basic user information in responses
type UserInfo struct {
ID string `json:"id"`
Identifier string `json:"identifier"`
Role string `json:"role"`
FullName string `json:"fullName"`
Language string `json:"language"`
}
// CompanyInfo represents basic company information
type CompanyInfo struct {
ID string `json:"id"`
Name string `json:"name"`
Role string `json:"role"` // Role in this company (admin or recruiter)
}
// RegisterRequest represents user registration
type RegisterRequest struct {
Identifier string `json:"identifier" validate:"required,min=3,max=50"`
Password string `json:"password" validate:"required,min=8"`
FullName string `json:"fullName" validate:"required"`
Phone *string `json:"phone,omitempty"`
WhatsApp *string `json:"whatsapp,omitempty"`
LineID *string `json:"lineId,omitempty"`
Instagram *string `json:"instagram,omitempty"`
Language string `json:"language" validate:"required,oneof=pt en es ja"`
Role string `json:"role" validate:"required,oneof=candidate recruiter admin"`
// Candidate Specific
BirthDate string `json:"birthDate,omitempty"` // YYYY-MM-DD
Address *string `json:"address,omitempty"`
City *string `json:"city,omitempty"`
State *string `json:"state,omitempty"`
ZipCode *string `json:"zipCode,omitempty"`
Education *string `json:"education,omitempty"`
Experience *string `json:"experience,omitempty"`
Skills *string `json:"skills,omitempty"` // Comma separated or just text
Objective *string `json:"objective,omitempty"`
}
// User represents a generic user profile
type User struct {
ID string `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
Role string `json:"role"`
Status string `json:"status"`
Phone *string `json:"phone,omitempty"`
Bio *string `json:"bio,omitempty"`
AvatarUrl *string `json:"avatarUrl,omitempty"`
CreatedAt time.Time `json:"createdAt"`
CompanyID *string `json:"companyId,omitempty"`
Roles []string `json:"roles,omitempty"`
}