item_builder 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a282b5d0e47296160a4c416f8b0c5d58b9518b1ad6a029b8d492ba160aba75fb
4
+ data.tar.gz: cc5df2d4460c439ed7d30177eeabfb0d9888de95c5ad23728840d31174b2aa11
5
+ SHA512:
6
+ metadata.gz: c379cb1afbf42e8d32b913d1bcab782ac5f3e81f77192b795854ea8c90141c268abb9acf554131a69df42303a238eb08cdcbb495da7b3d0b749d0bea4326673c
7
+ data.tar.gz: 1df9e9b7ad47e6cd949aad4db8edf5ec49370e38c2eb358d15edd54dc2d123c42a85b33ad1dddb1d06001b160b3035b34f4a0a2d3790a7ffc89d18b204afeb27
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/version'
4
+ require 'item_builder/configuration'
5
+ require 'item_builder/modes'
6
+ require 'item_builder/modes/base_service'
7
+ require 'item_builder/modes/price_service'
8
+ require 'item_builder/modes/quantity_service'
9
+ require 'item_builder/modes/simple_service'
10
+ require 'item_models'
11
+
12
+ module ItemBuilder
13
+ class << self
14
+ def build(listing_ids, mode)
15
+ @mode = mode
16
+ VariantListing.where(id: listing_ids).map do |listing|
17
+ modes[mode].new(listing: listing).perform
18
+ end
19
+ end
20
+
21
+ def modes
22
+ {
23
+ price: ItemBuilder::Modes::PriceService,
24
+ quantity: ItemBuilder::Modes::QuantityService,
25
+ simple: ItemBuilder::Modes::SimpleService
26
+ }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ForstokTrigger
4
+ # This Configuration class is for initialize config to database
5
+ class Configuration
6
+ attr_accessor :db, :host, :port, :username, :password
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes/base_service'
4
+ require 'item_builder/modes/price_service'
5
+ require 'item_builder/modes/quantity_service'
6
+ require 'item_builder/modes/simple_service'
7
+ module ItemBuilder
8
+ module Modes
9
+ attr_reader :listing
10
+ def initialize(args)
11
+ @listing = args.fetch(:listing)
12
+ end
13
+
14
+ def base
15
+ {
16
+ id: listing.id,
17
+ local_id: listing.local_id,
18
+ local_item_id: listing.local_item_id,
19
+ sku: listing.sku
20
+ }
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes.rb'
4
+ module ItemBuilder
5
+ module Modes
6
+ class BaseService
7
+ attr_reader :listing
8
+ def initialize(args)
9
+ @listing = args.fetch(listing)
10
+ end
11
+
12
+ def perform
13
+ {
14
+ id: listing.id,
15
+ local_id: listing.local_id,
16
+ local_item_id: listing.local_item_id,
17
+ sku: listing.sku
18
+ }
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes.rb'
4
+ module ItemBuilder
5
+ module Modes
6
+ class PriceService
7
+ include Modes
8
+
9
+ def perform
10
+ to_h.merge(base)
11
+ end
12
+
13
+ def to_h
14
+ {
15
+ price: listing.price,
16
+ sale_price: listing.sale_price,
17
+ sale_start_at: listing.sale_start_at,
18
+ sale_end_at: listing.sale_end_at
19
+ }
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'warehouse_models'
4
+ require 'item_builder/modes.rb'
5
+ module ItemBuilder
6
+ module Modes
7
+ class QuantityService
8
+ include Modes
9
+
10
+ def perform
11
+ to_h.merge(base)
12
+ end
13
+
14
+ def to_h
15
+ {
16
+ quantity: warehouse.quantity
17
+ }
18
+ end
19
+
20
+ def warehouse
21
+ WarehouseSpace.find_by(item_variant_id: listing.variant_id)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes/quantity_service.rb'
4
+ require 'item_builder/modes/price_service.rb'
5
+ require 'item_builder/modes.rb'
6
+ module ItemBuilder
7
+ module Modes
8
+ class SimpleService
9
+ include Modes
10
+
11
+ def perform
12
+ to_h.merge(base)
13
+ end
14
+
15
+ def to_h
16
+ quantity.merge(price)
17
+ end
18
+
19
+ def quantity
20
+ QuantityService.new(listing: listing).to_h
21
+ end
22
+
23
+ def price
24
+ PriceService.new(listing: listing).to_h
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ItemBuilder
4
+ VERSION = '0.1.0'
5
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: item_builder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - okaaryanata
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-03-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.17.2
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.17.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 11.1.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 11.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '3.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '3.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 0.79.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 0.79.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: item_models
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.0.7
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.0.7
97
+ - !ruby/object:Gem::Dependency
98
+ name: warehouse_models
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 0.1.2
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 0.1.2
111
+ description: Forstok Gem to build item
112
+ email:
113
+ - oka.aryanata9@gmail.com
114
+ executables: []
115
+ extensions: []
116
+ extra_rdoc_files: []
117
+ files:
118
+ - lib/item_builder.rb
119
+ - lib/item_builder/configuration.rb
120
+ - lib/item_builder/modes.rb
121
+ - lib/item_builder/modes/base_service.rb
122
+ - lib/item_builder/modes/price_service.rb
123
+ - lib/item_builder/modes/quantity_service.rb
124
+ - lib/item_builder/modes/simple_service.rb
125
+ - lib/item_builder/version.rb
126
+ homepage:
127
+ licenses: []
128
+ metadata: {}
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: 2.3.0
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
143
+ requirements: []
144
+ rubygems_version: 3.1.2
145
+ signing_key:
146
+ specification_version: 4
147
+ summary: Item builder
148
+ test_files: []