timoth-y/kicksware-api

View on GitHub
services/orders/api/gRPC/proto/cast.go

Summary

Maintainability
A
0 mins
Test Coverage
package proto

import (
    "google.golang.org/protobuf/types/known/timestamppb"

    "go.kicksware.com/api/services/orders/core/model"
)

func (m *Order) ToNative() *model.Order {
    return &model.Order{
        UniqueID:    m.UniqueID,
        UserID:      m.UserID,
        ReferenceID: m.ReferenceID,
        ProductID:   m.ProductID,
        Price:       m.Price,
        Status:      model.OrderStatus(m.Status),
        SourceURL:   m.SourceURL,
        AddedAt:     m.AddedAt.AsTime(),
    }
}

func (m *Order) FromNative(n *model.Order) *Order {
    m.UniqueID = n.UniqueID
    m.UserID = n.UserID
    m.ReferenceID = n.ReferenceID
    m.ProductID = n.ProductID
    m.Price = n.Price
    m.Status = string(n.Status)
    m.SourceURL = n.SourceURL
    m.AddedAt = timestamppb.New(n.AddedAt)
    return m
}

func NativeToOrders(native []*model.Order) []*Order {
    users := make([]*Order, 0)
    for _, user := range native {
        users = append(users, (&Order{}).FromNative(user))
    }
    return users
}

func OrdersToNative(in []*Order) []*model.Order {
    users := make([]*model.Order, 0)
    for _, user := range in {
        users = append(users, user.ToNative())
    }
    return users
}