41 lines
877 B
Go
41 lines
877 B
Go
|
|
package transformer
|
||
|
|
|
||
|
|
import (
|
||
|
|
"fmt"
|
||
|
|
"time"
|
||
|
|
|
||
|
|
"github.com/yourorg/go-dw-platform/services/template-service/domain"
|
||
|
|
"github.com/yourorg/go-dw-platform/services/template-service/dto"
|
||
|
|
"github.com/yourorg/go-dw-platform/services/template-service/entity"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Transformer struct{}
|
||
|
|
|
||
|
|
func New() *Transformer {
|
||
|
|
return &Transformer{}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (t *Transformer) RequestToDomain(req *dto.IngestRequest) (*domain.Order, error) {
|
||
|
|
order := &domain.Order{
|
||
|
|
OrderID: req.OrderID,
|
||
|
|
CustomerID: req.CustomerID,
|
||
|
|
Amount: req.Amount,
|
||
|
|
CreatedAt: time.Now(),
|
||
|
|
}
|
||
|
|
|
||
|
|
if err := order.Validate(); err != nil {
|
||
|
|
return nil, fmt.Errorf("transform: %w", err)
|
||
|
|
}
|
||
|
|
|
||
|
|
return order, nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func (t *Transformer) DomainToEntity(d *domain.Order) *entity.Order {
|
||
|
|
return &entity.Order{
|
||
|
|
OrderID: d.OrderID,
|
||
|
|
CustomerID: d.CustomerID,
|
||
|
|
Amount: d.Amount,
|
||
|
|
CreatedAt: d.CreatedAt,
|
||
|
|
}
|
||
|
|
}
|