123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- package relation
- import (
- "github.com/gshopify/service-wrapper/model"
- "github.com/gshopify/service-wrapper/scalar"
- "github.com/mailru/dbr"
- "gshopper.com/gshopify/products/graphql/generated"
- "time"
- )
- type ProductVariant struct {
- Id string `db:"id"`
- ProductId string `db:"product_id"`
- Title string `db:"title"`
- Options []struct {
- Field0 string
- Field1 int32
- } `db:"options"`
- Price float64 `db:"price"`
- UnitPrice float64 `db:"unit_price"`
- CompareAtPrice float64 `db:"compare_at_price"`
- Barcode dbr.NullString `db:"barcode"`
- Sku dbr.NullString `db:"sku"`
- HarmonizedSystemCode dbr.NullString `db:"hs_code"`
- AllowBackorder bool `db:"allow_backorder"`
- ManageInventory bool `db:"manage_inventory"`
- OriginCountry dbr.NullString `db:"origin_country"`
- UnitPriceMeasurement struct {
- Field0 string
- Field1 string
- Field2 float64
- Field3 string
- Field4 int32
- } `db:"unit_price_measurement"`
- Weight dbr.NullFloat64 `db:"weight"`
- WeightUnit string `db:"weight_unit"`
- CreatedAt time.Time `db:"created_at"`
- UpdatedAt time.Time `db:"updated_at"`
- DeletedAt *time.Time `db:"deleted_at"`
- ShoppingProfileType dbr.NullString `db:"type"`
- }
- func (v *ProductVariant) As() *generated.ProductVariant {
- variant := generated.ProductVariant{
- AvailableForSale: false,
- CurrentlyNotInStock: false,
- QuantityAvailable: nil,
- Image: nil,
- SelectedOptions: nil,
- ID: model.NewId(model.GidVariant, v.Id),
- Title: v.Title,
- Product: &generated.Product{ID: model.NewId(model.GidProduct, v.ProductId)},
- RequiresShipping: true,
- Price: &generated.MoneyV2{
- Amount: scalar.NewDecimal(v.Price),
- CurrencyCode: generated.CurrencyCodeUsd,
- },
- CompareAtPrice: &generated.MoneyV2{
- Amount: scalar.NewDecimal(v.CompareAtPrice),
- CurrencyCode: generated.CurrencyCodeUsd,
- },
- UnitPrice: &generated.MoneyV2{
- Amount: scalar.NewDecimal(v.UnitPrice),
- CurrencyCode: generated.CurrencyCodeUsd,
- },
- UnitPriceMeasurement: &generated.UnitPriceMeasurement{
- QuantityValue: v.UnitPriceMeasurement.Field2,
- ReferenceValue: int(v.UnitPriceMeasurement.Field4),
- },
- WeightUnit: generated.WeightUnit(v.WeightUnit),
- }
- if enum := model.ShoppingProfileType(v.ShoppingProfileType.String); enum.IsValid() {
- variant.RequiresShipping = model.ShoppingProfileTypeDefault == enum
- }
- if enum := generated.UnitPriceMeasurementMeasuredType(v.UnitPriceMeasurement.Field0); enum.IsValid() {
- variant.UnitPriceMeasurement.MeasuredType = &enum
- }
- if enum := generated.UnitPriceMeasurementMeasuredUnit(v.UnitPriceMeasurement.Field1); enum.IsValid() {
- variant.UnitPriceMeasurement.QuantityUnit = &enum
- }
- if enum := generated.UnitPriceMeasurementMeasuredUnit(v.UnitPriceMeasurement.Field3); enum.IsValid() {
- variant.UnitPriceMeasurement.ReferenceUnit = &enum
- }
- if v.Weight.Valid {
- s := v.Weight.Float64
- variant.Weight = &s
- }
- if v.Sku.Valid {
- s := v.Sku.String
- variant.Sku = &s
- }
- if v.Barcode.Valid {
- s := v.Barcode.String
- variant.Barcode = &s
- }
- return &variant
- }
|