timoth-y/kicksware-api

View on GitHub
services/products/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/products/core/model"
)

func (m *SneakerProduct) ToNative() *model.SneakerProduct {
    return &model.SneakerProduct{
        UniqueId:       m.UniqueId,
        BrandName:      m.BrandName,
        ModelName:      m.ModelName,
        ModelSKU:       m.ModelSKU,
        ReferenceId:    m.ReferenceId,
        Price:          m.Price,
        Type:           m.Type,
        Size:           m.Size.ToNative(),
        Color:          m.Color,
        Condition:      m.Condition,
        Description:    m.Description,
        Owner:          m.Owner,
        // Images:         m.Images,
        ConditionIndex: m.ConditionIndex,
        AddedAt:        m.AddedAt.AsTime(),
    }
}

func (m *SneakerProduct) FromNative(n *model.SneakerProduct) *SneakerProduct {
    m.UniqueId = n.UniqueId
    m.BrandName = n.BrandName
    m.ModelName = n.ModelName
    m.ModelSKU = n.ModelSKU
    m.ReferenceId = n.ReferenceId
    m.Price = n.Price
    m.Type = n.Type
    m.Size = SneakerSize{}.FromNative(n.Size)
    m.Color = n.Color
    m.Condition = n.Condition
    m.Description = n.Description
    m.Owner = n.Owner
    // m.Images         = n.Images
    m.ConditionIndex = n.ConditionIndex
    m.AddedAt = timestamppb.New(n.AddedAt)
    return m
}

func (m *SneakerSize) ToNative() model.SneakerSize {
    return model.SneakerSize{
        Europe:        m.Europe,
        UnitedStates:  m.UnitedStates,
        UnitedKingdom: m.UnitedKingdom,
        Centimeters:   m.Centimeters,
    }
}

func (m SneakerSize) FromNative(n model.SneakerSize) *SneakerSize {
    m.Europe = n.Europe
    m.UnitedStates = n.UnitedStates
    m.UnitedKingdom = n.UnitedKingdom
    m.Centimeters = n.Centimeters
    return &m
}

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

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