Loading...
Loading...
Generate pure mapper functions for transformations between layers, HTTP DTOs to use case inputs dtos, use case to response dto, etc.
npx skill4agent add cristiano-pacheco/ai-tools go-mapperinternal/modules/<module>/mapper/<name>_mapper.gouser_mapper.goTofunc ToXxx(input InputType) OutputType
func ToXxx(input InputType) (OutputType, error)
func ToXxx(a TypeA, b TypeB) OutputTypepackage mapper
import (
"github.com/cristiano-pacheco/pingo/internal/modules/user/dto"
"github.com/cristiano-pacheco/pingo/internal/modules/user/model"
"github.com/cristiano-pacheco/pingo/internal/modules/user/usecase"
)
func ToCreateUserInput(req dto.CreateUserRequest) usecase.CreateUserInput {
return usecase.CreateUserInput{
Name: req.Name,
Email: req.Email,
}
}
func ToUserResponse(u model.UserModel) dto.UserResponse {
return dto.UserResponse{
ID: u.ID,
Name: u.Name,
Email: u.Email,
CreatedAt: u.CreatedAt,
}
}
func ToUserListResponse(models []model.UserModel) []dto.UserResponse {
responses := make([]dto.UserResponse, len(models))
for i, u := range models {
responses[i] = ToUserResponse(u)
}
return responses
}package mapper
import (
"github.com/cristiano-pacheco/pingo/internal/modules/order/dto"
"github.com/cristiano-pacheco/pingo/internal/modules/order/model"
)
func ToOrderResponse(order model.OrderModel, items []model.OrderItemModel) dto.OrderResponse {
return dto.OrderResponse{
ID: order.ID,
Total: order.Total,
Items: toOrderItemResponses(items),
}
}
func toOrderItemResponses(items []model.OrderItemModel) []dto.OrderItemResponse {
responses := make([]dto.OrderItemResponse, len(items))
for i, item := range items {
responses[i] = dto.OrderItemResponse{
ID: item.ID,
Name: item.ProductName,
Quantity: item.Quantity,
Price: item.Price,
}
}
return responses
}package mapper
import (
"github.com/cristiano-pacheco/pingo/internal/modules/product/dto"
"github.com/cristiano-pacheco/pingo/internal/modules/product/errs"
"github.com/cristiano-pacheco/pingo/internal/modules/product/model"
)
func ToProductModel(req dto.CreateProductRequest) (model.ProductModel, error) {
price, err := parsePrice(req.Price)
if err != nil {
return model.ProductModel{}, errs.ErrInvalidPrice
}
return model.ProductModel{
Name: req.Name,
Price: price,
}, nil
}func ToArticleResponse(a model.ArticleModel) dto.ArticleResponse {
return dto.ArticleResponse{
ID: a.ID,
Title: a.Title,
Author: toAuthorResponse(a),
}
}
func ToArticleListResponse(models []model.ArticleModel) []dto.ArticleResponse {
responses := make([]dto.ArticleResponse, len(models))
for i, a := range models {
responses[i] = ToArticleResponse(a)
}
return responses
}
func toAuthorResponse(a model.ArticleModel) dto.AuthorResponse {
return dto.AuthorResponse{
ID: a.AuthorID,
Name: a.AuthorName,
}
}<name>_mapper.gomapper/ToXxxXxxToUserResponseToCreateUserInputtoXxxToXxxListToXxxListResponseToTocontext.ContextTomapper/<name>_mapper.gomake lintmake nilaway