e_plat 0.7.4 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d034aa67ea9c09ef394c0f55c26bb2d41032e7a8c8e958fe4fdc0d2bd24222b5
4
- data.tar.gz: 3ba4c808ae422b28a12470957f87f88283985dbaf193767e9a3d7ae5a1f9c58c
3
+ metadata.gz: dd6ef96f210a4ce19e39876714cf947410ad47c6a93794c5f06aee1d8ec1f0f4
4
+ data.tar.gz: 6b83f5036d786165bfc0a36e3a651bea55679f1cf3c2c0672adc9b3b90ca26a1
5
5
  SHA512:
6
- metadata.gz: 394fc11195351f359b3c001b11e0a7fcab32763e8c5fd24a2c0a1be811690a0d736f5393a09e1f9d566b8bbdb06553c9df699e75d08b6b15f4e0172af546d561
7
- data.tar.gz: ee2c4ad95ec889f72f0653a8167787457529ef505fcfdf31c4287b9d478914659915633e50d80b979cc22e01d506e6a108e2567966db347c87646f36236e4739
6
+ metadata.gz: 7dc8395400075cc15f5e2437257b7147ff6331dc92c78ea93377b70b85d7711d5ce0c6dd9f2557608b2425834a5d2f68881b8b62a132d1053bbfd6c102bac0ca
7
+ data.tar.gz: a5cbdad7ccfaad6d49d633225665ee920124ecf12f2a20a8533fb8244a93db0988a66a47f9e2bc081c279ee249e3e9b83caa449744cd9a2b20650027cf958534
data/README.md CHANGED
@@ -560,6 +560,7 @@ Unfortunately it's in a Time Integer format. Haven't yet got dynamic conversion
560
560
 
561
561
  <br>
562
562
  <hr>
563
+
563
564
  <br>
564
565
 
565
566
  ## API Coverage
@@ -806,6 +807,13 @@ Unfortunately it's in a Time Integer format. Haven't yet got dynamic conversion
806
807
  <br>
807
808
 
808
809
 
810
+ > [!NOTE]
811
+ > For all resources, we also have a EPlat::ShopifyWebhook::{resource} class. These use the old REST API mappings that the webhooks still use.
812
+ > At PreProduct we interact with cached webhook hashes using these classes, e.g. `EPlat::ShopifyWebhook::Product.new({...})`.
813
+ > Meaning we can safely call getter methods and access the usual EPlat schema.
814
+
815
+
816
+
809
817
 
810
818
  <hr>
811
819
  <br>
@@ -895,6 +903,8 @@ product.as_json # hash of any updated attributes
895
903
  product.as_full_json # hash of all attributes, regardless of if they've been updated or not
896
904
  product.to_json # JSON string of any updated_attributes
897
905
  product.to_full_json # JSON string of all attributes. regardless of if they've been updated or not
906
+ product.as_eplat_json # hash of all resource's EPlat attributes, values as EPlat getters produce
907
+ product.to_eplat_json # JSON of all resource's EPlat attributes, values as EPlat getters produce
898
908
 
899
909
  ```
900
910
 
@@ -97,7 +97,7 @@ module EPlat
97
97
  when :find_one
98
98
  {first: 1}
99
99
  when :find_every
100
- {first: scope || 200}
100
+ {first: scope || 20}
101
101
  end
102
102
 
103
103
  (options[:params] || {}).with_defaults(scope_arg)
@@ -48,6 +48,35 @@ module EPlat
48
48
  end
49
49
  end
50
50
 
51
+ def to_eplat_json(options = {})
52
+ root_at_top_of_json = self.mapping.include_root_in_request_body?(self)
53
+ options[:root] = self.element_name if root_at_top_of_json
54
+
55
+ result = '{'
56
+ result << as_eplat_json.map do |key, value|
57
+ "#{ActiveSupport::JSON.encode(key.to_s)}:#{ActiveSupport::JSON.encode(value, options)}"
58
+ end * ','
59
+ result << '}'
60
+ end
61
+
62
+
63
+ def as_eplat_json
64
+ schema_keys = self.class.schema.keys
65
+ schema_keys.each_with_object({}) do |key, hash|
66
+ value = send(key)
67
+
68
+ hash[key] =
69
+ if value.is_a?(Array)
70
+ value.map { |item| item.respond_to?(:as_eplat_json) ? item.as_eplat_json : item }
71
+ elsif value.respond_to?(:as_eplat_json)
72
+ value.as_eplat_json
73
+ else
74
+ value
75
+ end
76
+ end
77
+ end
78
+
79
+
51
80
  # Create and return a class definition for a resource inside the current resource
52
81
  def create_resource_for(resource_name)
53
82
  resource = Class.new(EPlat::Base) # <- this line changed
@@ -23,7 +23,7 @@ module EPlat
23
23
  end
24
24
 
25
25
  def variant_ids
26
- product.variants.map(&:id)
26
+ product&.variants&.map(&:id) || []
27
27
  end
28
28
 
29
29
  def variant_ids=(ids)
@@ -28,7 +28,8 @@ module EPlat
28
28
  string :tax_code
29
29
  boolean :requires_shipping
30
30
  string :admin_graphql_api_id
31
- hash :image # default: {}, just for Shopify Webhooks
31
+ array :option_values
32
+ # hash :image # default: {}, just for Shopify Webhooks
32
33
  end
33
34
 
34
35
  def save
@@ -36,11 +37,13 @@ module EPlat
36
37
  super
37
38
  end
38
39
 
39
- def image_src
40
+ def image_src(images=[]) # EPlat::Product::Image => string
40
41
  if client.bigcommerce?
41
42
  image_url
42
- elsif client.shopify? && client.uses_graphql_for_products?
43
- image.try(:src)
43
+ elsif is_a?(EPlat::ShopifyWebhook::Product::Variant)
44
+ images.to_a.find{ |i| i.id == image_id }.try(:src)
45
+ elsif is_a?(EPlat::Shopify::Product::Variant)
46
+ image&.src
44
47
  end
45
48
  end
46
49
 
@@ -1,3 +1,3 @@
1
1
  module EPlat
2
- VERSION = "0.7.4"
2
+ VERSION = "0.9.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: e_plat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - oliwoodsuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-05-31 00:00:00.000000000 Z
11
+ date: 2024-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler