init
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package transformer
|
||||
|
||||
import (
|
||||
"apskel-pos-be/internal/contract"
|
||||
"apskel-pos-be/internal/models"
|
||||
)
|
||||
|
||||
// Contract to Model conversions
|
||||
func CreateCustomerRequestToModel(req *contract.CreateCustomerRequest) *models.CreateCustomerRequest {
|
||||
return &models.CreateCustomerRequest{
|
||||
Name: req.Name,
|
||||
Email: req.Email,
|
||||
Phone: req.Phone,
|
||||
Address: req.Address,
|
||||
}
|
||||
}
|
||||
|
||||
func UpdateCustomerRequestToModel(req *contract.UpdateCustomerRequest) *models.UpdateCustomerRequest {
|
||||
return &models.UpdateCustomerRequest{
|
||||
Name: req.Name,
|
||||
Email: req.Email,
|
||||
Phone: req.Phone,
|
||||
Address: req.Address,
|
||||
IsActive: req.IsActive,
|
||||
}
|
||||
}
|
||||
|
||||
func ListCustomersRequestToModel(req *contract.ListCustomersRequest) *models.ListCustomersQuery {
|
||||
return &models.ListCustomersQuery{
|
||||
Page: req.Page,
|
||||
Limit: req.Limit,
|
||||
Search: req.Search,
|
||||
IsActive: req.IsActive,
|
||||
IsDefault: req.IsDefault,
|
||||
SortBy: req.SortBy,
|
||||
SortOrder: req.SortOrder,
|
||||
}
|
||||
}
|
||||
|
||||
func SetDefaultCustomerRequestToModel(req *contract.SetDefaultCustomerRequest) *models.SetDefaultCustomerRequest {
|
||||
return &models.SetDefaultCustomerRequest{
|
||||
CustomerID: req.CustomerID,
|
||||
}
|
||||
}
|
||||
|
||||
// Model to Contract conversions
|
||||
func CustomerModelToResponse(customer *models.CustomerResponse) *contract.CustomerResponse {
|
||||
return &contract.CustomerResponse{
|
||||
ID: customer.ID,
|
||||
OrganizationID: customer.OrganizationID,
|
||||
Name: customer.Name,
|
||||
Email: customer.Email,
|
||||
Phone: customer.Phone,
|
||||
Address: customer.Address,
|
||||
IsDefault: customer.IsDefault,
|
||||
IsActive: customer.IsActive,
|
||||
Metadata: customer.Metadata,
|
||||
CreatedAt: customer.CreatedAt,
|
||||
UpdatedAt: customer.UpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
func CustomerResponsesToResponses(customers []models.CustomerResponse) []contract.CustomerResponse {
|
||||
responses := make([]contract.CustomerResponse, len(customers))
|
||||
for i, customer := range customers {
|
||||
response := CustomerModelToResponse(&customer)
|
||||
if response != nil {
|
||||
responses[i] = *response
|
||||
}
|
||||
}
|
||||
return responses
|
||||
}
|
||||
|
||||
func PaginatedCustomerResponseToContract(paginatedResponse *models.PaginatedResponse[models.CustomerResponse]) *contract.PaginatedCustomerResponse {
|
||||
return &contract.PaginatedCustomerResponse{
|
||||
Data: CustomerResponsesToResponses(paginatedResponse.Data),
|
||||
TotalCount: int(paginatedResponse.Pagination.Total),
|
||||
Page: paginatedResponse.Pagination.Page,
|
||||
Limit: paginatedResponse.Pagination.Limit,
|
||||
TotalPages: paginatedResponse.Pagination.TotalPages,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user