91 lines
1.6 KiB
Go
91 lines
1.6 KiB
Go
package requestmodel
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
dbtypes "git-molva.ru/Molva/molva-backend/services/api_gateway/internal/database/types"
|
|
)
|
|
|
|
type (
|
|
Profile struct {
|
|
Id string `json:"id"`
|
|
Name string `json:"name"`
|
|
PhoneNumber string `json:"phone_number"`
|
|
Email string `json:"email"`
|
|
}
|
|
)
|
|
|
|
func (p *Profile) From(msg *dbtypes.Profile) *Profile {
|
|
if msg == nil {
|
|
return nil
|
|
}
|
|
|
|
res := &Profile{
|
|
Id: msg.Id,
|
|
Name: msg.Name,
|
|
PhoneNumber: msg.PhoneNumber,
|
|
Email: msg.Email,
|
|
}
|
|
|
|
return res
|
|
}
|
|
|
|
type (
|
|
ProfileGetRequest struct {
|
|
Id string `json:"id"`
|
|
}
|
|
|
|
ProfileGetResponse struct {
|
|
Profile *Profile `json:"profile"`
|
|
}
|
|
)
|
|
|
|
func (r *ProfileGetRequest) Validate() error {
|
|
if r == nil {
|
|
return fmt.Errorf("%w: request is nil", ErrValidation)
|
|
}
|
|
|
|
if r.Id == "" {
|
|
return fmt.Errorf("%w: ID is required", ErrValidation)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (r *ProfileGetResponse) From(msg *dbtypes.ProfileGetResponse) *ProfileGetResponse {
|
|
if msg == nil {
|
|
return nil
|
|
}
|
|
|
|
return &ProfileGetResponse{
|
|
Profile: new(Profile).From(msg.Profile),
|
|
}
|
|
}
|
|
|
|
type (
|
|
ProfileUpdateRequest struct {
|
|
Id string
|
|
Name *string `json:"name"`
|
|
PhoneNumber *string `json:"phone_number"`
|
|
Email *string `json:"email"`
|
|
}
|
|
|
|
ProfileUpdateResponse struct{}
|
|
)
|
|
|
|
func (r *ProfileUpdateRequest) Validate() error {
|
|
if r == nil {
|
|
return fmt.Errorf("%w: request is nil", ErrValidation)
|
|
}
|
|
|
|
if r.Id == "" {
|
|
return fmt.Errorf("%w: ID is required", ErrValidation)
|
|
}
|
|
|
|
if r.Name == nil && r.PhoneNumber == nil && r.Email == nil {
|
|
return fmt.Errorf("%w: nothing to update", ErrValidation)
|
|
}
|
|
|
|
return nil
|
|
}
|