spree_cm_commissioner 1.10.0.pre.pre → 1.10.0
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 +4 -4
- data/.github/workflows/test_and_build_gem.yml +0 -2
- data/.gitignore +1 -2
- data/Gemfile.lock +1 -22
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -17
- data/app/controllers/spree/api/v2/storefront/accommodations_controller.rb +31 -14
- data/app/interactors/spree_cm_commissioner/vattanac_bank_initiator.rb +6 -25
- data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +3 -2
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -26
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +0 -10
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/order_decorator.rb +0 -15
- data/app/models/spree_cm_commissioner/product_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/stock/availability_checker.rb +25 -27
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +1 -2
- data/app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb +3 -3
- data/app/models/spree_cm_commissioner/trip_connection.rb +1 -0
- data/app/models/spree_cm_commissioner/trip_stop.rb +2 -2
- data/app/models/spree_cm_commissioner/variant_decorator.rb +20 -24
- data/app/models/spree_cm_commissioner/variant_options.rb +0 -14
- data/app/queries/spree_cm_commissioner/trip_query.rb +11 -11
- data/app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb +45 -0
- data/app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb +55 -0
- data/app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb +0 -3
- data/app/request_schemas/spree_cm_commissioner/application_request_schema.rb +1 -1
- data/app/serializers/spree/v2/storefront/accommodation_serializer.rb +0 -2
- data/app/views/spree/admin/stock_managements/index.html.erb +5 -31
- data/config/routes.rb +2 -11
- data/docker-compose.yml +1 -1
- data/lib/generators/spree_cm_commissioner/install/install_generator.rb +2 -2
- data/lib/generators/spree_cm_commissioner/install/templates/app/javascript/{spree_dashboard/spree_cm_commissioner → spree_cm_commissioner}/utilities.js +0 -4
- data/lib/spree_cm_commissioner/calendar_event.rb +1 -11
- data/lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb +6 -28
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +0 -34
- data/spree_cm_commissioner.gemspec +0 -5
- metadata +7 -71
- data/app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb +0 -42
- data/app/finders/spree_cm_commissioner/accommodations/find.rb +0 -40
- data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +0 -35
- data/app/interactors/spree_cm_commissioner/inventory_item_syncer.rb +0 -25
- data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +0 -71
- data/app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb +0 -7
- data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +0 -9
- data/app/models/spree_cm_commissioner/inventory.rb +0 -11
- data/app/models/spree_cm_commissioner/inventory_item.rb +0 -37
- data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +0 -40
- data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +0 -114
- data/app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb +0 -42
- data/app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb +0 -27
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -44
- data/app/models/spree_cm_commissioner/stock_movement_decorator.rb +0 -34
- data/app/request_schemas/spree_cm_commissioner/variant_request_schema.rb +0 -19
- data/app/views/spree/admin/stock_managements/_events_popover.html.erb +0 -17
- data/app/views/spree/admin/stock_managements/calendar.html.erb +0 -32
- data/db/migrate/20250304293518_create_cm_inventory_items.rb +0 -21
- data/db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb +0 -5
- data/lib/spree_cm_commissioner/cached_inventory_item.rb +0 -23
- data/lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb +0 -9
- data/lib/tasks/create_default_non_permanent_inventory_items.rake +0 -16
- data/lib/tasks/generate_inventory_items.rake +0 -7
@@ -34,11 +34,11 @@ module SpreeCmCommissioner
|
|
34
34
|
trips.vehicle_id AS vehicle_id'
|
35
35
|
)
|
36
36
|
.joins('INNER JOIN cm_trips AS trips ON trips.variant_id = spree_variants.id')
|
37
|
-
.joins('INNER JOIN cm_trip_stops AS boarding ON boarding.trip_id =
|
38
|
-
.joins('INNER JOIN cm_trip_stops AS drop_off ON drop_off.trip_id =
|
37
|
+
.joins('INNER JOIN cm_trip_stops AS boarding ON boarding.trip_id = spree_variants.id AND boarding.stop_type = 0')
|
38
|
+
.joins('INNER JOIN cm_trip_stops AS drop_off ON drop_off.trip_id = spree_variants.id AND drop_off.stop_type = 1')
|
39
39
|
.joins('INNER JOIN spree_vendors AS vendors ON vendors.id = spree_variants.vendor_id')
|
40
40
|
.joins('INNER JOIN spree_products AS routes ON routes.id = spree_variants.product_id')
|
41
|
-
.where('
|
41
|
+
.where('boarding.stop_id = ? AND drop_off.stop_id = ?', origin_id, destination_id)
|
42
42
|
|
43
43
|
result.map do |trip|
|
44
44
|
trip_result_options = {
|
@@ -69,9 +69,9 @@ module SpreeCmCommissioner
|
|
69
69
|
INNER JOIN spree_products AS routes2 ON routes2.id = variant2.product_id
|
70
70
|
INNER JOIN cm_trips AS trip1 ON trip1.variant_id = cm_trip_connections.from_trip_id
|
71
71
|
INNER JOIN cm_trips AS trip2 ON trip2.variant_id = cm_trip_connections.to_trip_id
|
72
|
-
INNER JOIN
|
73
|
-
INNER JOIN
|
74
|
-
INNER JOIN
|
72
|
+
INNER JOIN cm_trip_stops trip1_origin ON trip1_origin.trip_id = variant1.id AND trip1_origin.stop_type = 0
|
73
|
+
INNER JOIN cm_trip_stops trip2_origin ON trip2_origin.trip_id = variant2.id AND trip2_origin.stop_type = 0
|
74
|
+
INNER JOIN cm_trip_stops trip2_destination ON trip2_destination.trip_id = variant2.id AND trip2_destination.stop_type = 1
|
75
75
|
INNER JOIN spree_vendors AS vendor1 ON vendor1.id = variant1.vendor_id
|
76
76
|
INNER JOIN spree_vendors AS vendor2 ON vendor2.id = variant2.vendor_id'
|
77
77
|
)
|
@@ -93,12 +93,12 @@ module SpreeCmCommissioner
|
|
93
93
|
trip2.vehicle_id AS trip2_vehicle,
|
94
94
|
routes2.short_name AS route2_short_name,
|
95
95
|
routes2.name AS route2_name,
|
96
|
-
trip1_origin.
|
97
|
-
trip2_origin.
|
98
|
-
trip2_destination.
|
96
|
+
trip1_origin.stop_name AS trip1_origin,
|
97
|
+
trip2_origin.stop_name AS trip2_origin,
|
98
|
+
trip2_destination.stop_name AS trip2_destination,
|
99
99
|
vendor2.name AS trip2_vendor_name'
|
100
|
-
)
|
101
|
-
|
100
|
+
).where('trip1_origin.stop_id = ? AND trip2_destination.stop_id = ?', origin_id, destination_id
|
101
|
+
).uniq
|
102
102
|
|
103
103
|
return [] if result.blank?
|
104
104
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
module VariantAvailability
|
3
|
+
class NonPermanentStockQuery
|
4
|
+
attr_reader :variant, :except_line_item_id, :error_message
|
5
|
+
|
6
|
+
def initialize(variant:, except_line_item_id: nil)
|
7
|
+
@variant = variant
|
8
|
+
@except_line_item_id = except_line_item_id
|
9
|
+
@error_message = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def available?(quantity)
|
13
|
+
reserve_variants =
|
14
|
+
Spree::LineItem
|
15
|
+
.complete
|
16
|
+
.select('(SUM(DISTINCT spree_stock_items.count_on_hand) - SUM(spree_line_items.quantity)) AS available_quantity')
|
17
|
+
.joins(variant: :stock_items)
|
18
|
+
.where(variant_id: variant.id)
|
19
|
+
.where.not(id: except_line_item_id)
|
20
|
+
.group(:variant_id)
|
21
|
+
|
22
|
+
# there is a case when variant does not have any purchaces yet, it will return empty & always available true.
|
23
|
+
# in this case, we check with stock items directly.
|
24
|
+
|
25
|
+
available_quantity = if reserve_variants.any?
|
26
|
+
reserve_variants.sum(&:available_quantity)
|
27
|
+
else
|
28
|
+
variant.stock_items.sum(:count_on_hand)
|
29
|
+
end
|
30
|
+
if available_quantity >= quantity
|
31
|
+
true
|
32
|
+
elsif available_quantity == 1
|
33
|
+
@error_message = I18n.t('variant_availability.item_available_instock')
|
34
|
+
false
|
35
|
+
elsif available_quantity <= 0
|
36
|
+
@error_message = I18n.t('variant_availability.items_out_of_stock')
|
37
|
+
false
|
38
|
+
else
|
39
|
+
@error_message = I18n.t('variant_availability.items_available_instock', available_quantity: available_quantity)
|
40
|
+
false
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module SpreeCmCommissioner
|
2
|
+
module VariantAvailability
|
3
|
+
class PermanentStockQuery
|
4
|
+
attr_reader :variant, :from_date, :to_date, :except_line_item_id
|
5
|
+
|
6
|
+
def initialize(variant:, from_date:, to_date:, except_line_item_id: nil)
|
7
|
+
@variant = variant
|
8
|
+
@from_date = from_date
|
9
|
+
@to_date = to_date
|
10
|
+
@except_line_item_id = except_line_item_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def available?(quantity)
|
14
|
+
(from_date..from_date).all? do |booking_date|
|
15
|
+
booked_date_quantity[booking_date].nil? ||
|
16
|
+
(booked_date_quantity[booking_date] - quantity) >= 0
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def booked_date_quantity
|
21
|
+
dates_sql = ApplicationRecord.sanitize_sql_array(
|
22
|
+
[
|
23
|
+
'SELECT date FROM generate_series(?::date, ?::date, ?) AS date',
|
24
|
+
from_date,
|
25
|
+
to_date,
|
26
|
+
date_interval
|
27
|
+
]
|
28
|
+
)
|
29
|
+
|
30
|
+
@booked_variants ||=
|
31
|
+
Spree::LineItem
|
32
|
+
.complete
|
33
|
+
.select(
|
34
|
+
'(SUM(DISTINCT spree_stock_items.count_on_hand) - SUM(spree_line_items.quantity)) AS available_quantity',
|
35
|
+
'dates.date AS reservation_date'
|
36
|
+
)
|
37
|
+
.joins(variant: :stock_items)
|
38
|
+
.where(variant_id: variant.id)
|
39
|
+
.where.not(id: except_line_item_id)
|
40
|
+
.joins("INNER JOIN (#{dates_sql}) dates ON dates.date >= spree_line_items.from_date AND dates.date < spree_line_items.to_date")
|
41
|
+
.group(:variant_id, :reservation_date)
|
42
|
+
.order(:reservation_date)
|
43
|
+
.each_with_object({}) do |record, hash|
|
44
|
+
hash[record.reservation_date.to_date] = record.available_quantity
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# override this for product that have
|
49
|
+
# different date time interval than 1 day.
|
50
|
+
def date_interval
|
51
|
+
'1 day'
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -3,9 +3,6 @@ module SpreeCmCommissioner
|
|
3
3
|
params do
|
4
4
|
required(:from_date).value(:date)
|
5
5
|
required(:to_date).value(:date)
|
6
|
-
required(:state_id).value(:integer)
|
7
|
-
required(:number_of_adults).value(:integer)
|
8
|
-
required(:number_of_kids).value(:integer)
|
9
6
|
end
|
10
7
|
|
11
8
|
rule(:from_date, :to_date) do
|
@@ -9,12 +9,10 @@ module Spree
|
|
9
9
|
|
10
10
|
attributes :total_inventory, :service_availabilities
|
11
11
|
|
12
|
-
# Deprecated
|
13
12
|
attribute :total_booking do |vendor|
|
14
13
|
vendor.respond_to?(:total_booking) ? vendor.total_booking : 0
|
15
14
|
end
|
16
15
|
|
17
|
-
# Deprecated
|
18
16
|
attribute :remaining do |vendor|
|
19
17
|
vendor.respond_to?(:remaining) ? vendor.remaining : vendor.total_inventory
|
20
18
|
end
|
@@ -19,7 +19,10 @@
|
|
19
19
|
<% @variants.each do |variant| %>
|
20
20
|
<tr id="<%= spree_dom_id variant %>" data-hook="admin_product_stock_management_index_rows">
|
21
21
|
<td class="image text-center">
|
22
|
-
|
22
|
+
<%= small_image(variant) %>
|
23
|
+
<div class="mt-4">
|
24
|
+
Reserved Stock: <%= @reserved_stocks[variant.id] || 0 %></strong>
|
25
|
+
</div>
|
23
26
|
</td>
|
24
27
|
<td>
|
25
28
|
<%= variant.sku_and_options_text %>
|
@@ -32,37 +35,14 @@
|
|
32
35
|
<% end %>
|
33
36
|
</div>
|
34
37
|
<% end if can?(:update, @product) && can?(:update, variant) %>
|
35
|
-
|
36
|
-
<% if defined?(@reserved_stocks) %>
|
37
|
-
<div>
|
38
|
-
<span type="button" data-toggle="popover" data-trigger="hover" data-placement="right" data-content="This product stock will renew every day">
|
39
|
-
<%= svg_icon name: "cart-check.svg", width: '14', height: '14' %>
|
40
|
-
</span>
|
41
|
-
<%= label_tag "reserved_stock#{variant.id}", "Reserved Stock: #{@reserved_stocks[variant.id] || 0}", class: "m-0" %>
|
42
|
-
</div>
|
43
|
-
<% end %>
|
44
|
-
|
45
38
|
<% if variant.permanent_stock? %>
|
46
39
|
<div>
|
47
40
|
<span type="button" data-toggle="popover" data-trigger="hover" data-placement="right" data-content="This product stock will renew every day">
|
48
41
|
<%= svg_icon name: "info-circle-fill.svg", width: '14', height: '14' %>
|
49
42
|
</span>
|
50
|
-
<%= label_tag "permanent_stock_#{ variant.id }", Spree.t(:permanent_stock)
|
43
|
+
<%= label_tag "permanent_stock_#{ variant.id }", Spree.t(:permanent_stock) %>
|
51
44
|
</div>
|
52
45
|
<% end %>
|
53
|
-
|
54
|
-
<% if defined?(@inventory_items) %>
|
55
|
-
<% @inventory_items[variant.id]&.each do |inventory_item| %>
|
56
|
-
<div>
|
57
|
-
<%= svg_icon name: "handbag.svg", width: '14', height: '14' %>
|
58
|
-
<%= label_tag "max_capacity_#{ inventory_item.id }", "Max capacity: #{inventory_item.max_capacity}", class: "m-0" %>
|
59
|
-
</div>
|
60
|
-
<div>
|
61
|
-
<%= svg_icon name: "approve.svg", width: '14', height: '14' %>
|
62
|
-
<%= label_tag "quantity_available_#{ inventory_item.id }", "Quantity available: #{inventory_item.quantity_available}", class: "m-0" %>
|
63
|
-
</div>
|
64
|
-
<% end %>
|
65
|
-
<% end %>
|
66
46
|
</td>
|
67
47
|
|
68
48
|
<td colspan="3" class="stock_location_info">
|
@@ -73,9 +53,3 @@
|
|
73
53
|
</tbody>
|
74
54
|
</table>
|
75
55
|
</div>
|
76
|
-
|
77
|
-
<%= turbo_frame_tag "calendar", src: calendar_admin_product_stock_managements_path(year: params[:year]) do %>
|
78
|
-
<div class="spinner-border mt-2" role="status">
|
79
|
-
<span class="sr-only">Loading...</span>
|
80
|
-
</div>
|
81
|
-
<% end if @product.permanent_stock? %>
|
data/config/routes.rb
CHANGED
@@ -138,11 +138,7 @@ Spree::Core::Engine.add_routes do
|
|
138
138
|
end
|
139
139
|
end
|
140
140
|
|
141
|
-
resources :stock_managements
|
142
|
-
collection do
|
143
|
-
get :calendar
|
144
|
-
end
|
145
|
-
end
|
141
|
+
resources :stock_managements
|
146
142
|
|
147
143
|
resources :product_completion_steps do
|
148
144
|
collection do
|
@@ -523,8 +519,6 @@ Spree::Core::Engine.add_routes do
|
|
523
519
|
end
|
524
520
|
|
525
521
|
namespace :storefront do
|
526
|
-
resources :inventory_item
|
527
|
-
|
528
522
|
resources :waiting_room_sessions, only: :create
|
529
523
|
resources :vattanac_banks, only: %i[create]
|
530
524
|
resource :cart, controller: :cart, only: %i[show create destroy] do
|
@@ -550,10 +544,7 @@ Spree::Core::Engine.add_routes do
|
|
550
544
|
resource :cart_guests, only: %i[create destroy]
|
551
545
|
resources :cart_payment_method_groups, only: %i[index]
|
552
546
|
|
553
|
-
resources :accommodations, only: %i[index show]
|
554
|
-
resources :variants, only: %i[index show], module: :accommodations
|
555
|
-
end
|
556
|
-
|
547
|
+
resources :accommodations, only: %i[index show]
|
557
548
|
resources :line_items, only: %i[index show]
|
558
549
|
resources :account_checker
|
559
550
|
resource :account_recovers, only: [:update]
|
data/docker-compose.yml
CHANGED
@@ -40,8 +40,8 @@ module SpreeCmCommissioner
|
|
40
40
|
after: %r{//= require spree/backend}, verbose: true
|
41
41
|
|
42
42
|
# For NPM support
|
43
|
-
template 'app/javascript/
|
44
|
-
inject_into_file 'app/javascript/
|
43
|
+
template 'app/javascript/spree_cm_commissioner/utilities.js'
|
44
|
+
inject_into_file 'app/javascript/spree-dashboard.js', "\nimport \"./spree_cm_commissioner/utilities.js\"",
|
45
45
|
after: %r{import "@spree/dashboard"}, verbose: true
|
46
46
|
end
|
47
47
|
|
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
|
|
2
2
|
class CalendarEvent
|
3
3
|
attr_reader :from_date, :to_date, :title, :options
|
4
4
|
|
5
|
-
def initialize(from_date:, to_date:, title
|
5
|
+
def initialize(from_date:, to_date:, title:, options:)
|
6
6
|
@from_date = from_date
|
7
7
|
@to_date = to_date
|
8
8
|
@title = title
|
@@ -23,15 +23,5 @@ module SpreeCmCommissioner
|
|
23
23
|
)
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
27
|
-
def self.from_inventory_items(inventory_items)
|
28
|
-
inventory_items.map do |item|
|
29
|
-
CalendarEvent.new(
|
30
|
-
from_date: item.inventory_date,
|
31
|
-
to_date: item.inventory_date,
|
32
|
-
options: { inventory_item: item }
|
33
|
-
)
|
34
|
-
end
|
35
|
-
end
|
36
26
|
end
|
37
27
|
end
|
@@ -1,40 +1,19 @@
|
|
1
1
|
FactoryBot.define do
|
2
2
|
factory :cm_base_variant, parent: :base_variant do
|
3
|
-
is_master { false }
|
4
|
-
|
5
3
|
transient do
|
6
4
|
total_inventory { 10 }
|
7
|
-
backorderable { false }
|
8
5
|
end
|
9
6
|
|
10
7
|
after :create do |variant, evaluator|
|
11
8
|
variant.stock_items.first.adjust_count_on_hand(evaluator.total_inventory)
|
12
|
-
variant.stock_items.update_all(backorderable: evaluator.backorderable)
|
13
9
|
end
|
14
10
|
end
|
15
11
|
|
16
|
-
factory :cm_variant, parent: :
|
17
|
-
product
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
number_of_kids { nil }
|
22
|
-
end
|
23
|
-
|
24
|
-
after(:create) do |variant, evaluator|
|
25
|
-
if evaluator.number_of_adults.present?
|
26
|
-
number_of_adults = create(:cm_option_type, :number_of_adults)
|
27
|
-
variant.product.option_types << number_of_adults
|
28
|
-
variant.option_values << create(:cm_option_value, presentation: evaluator.number_of_adults, name: evaluator.number_of_adults, option_type: number_of_adults)
|
29
|
-
end
|
30
|
-
|
31
|
-
if evaluator.number_of_kids.present?
|
32
|
-
number_of_kids = create(:cm_option_type, :number_of_kids)
|
33
|
-
variant.product.option_types << number_of_kids
|
34
|
-
variant.option_values << create(:cm_option_value, presentation: evaluator.number_of_kids, name: evaluator.number_of_kids, option_type: number_of_kids)
|
35
|
-
end
|
36
|
-
|
37
|
-
variant.save!
|
12
|
+
factory :cm_variant, parent: :variant do
|
13
|
+
product do
|
14
|
+
stock_locations = [create(:stock_location)]
|
15
|
+
product = create(:product, vendor: create(:active_vendor, stock_locations: stock_locations))
|
16
|
+
product
|
38
17
|
end
|
39
18
|
end
|
40
19
|
|
@@ -45,13 +24,12 @@ FactoryBot.define do
|
|
45
24
|
duration { "1" }
|
46
25
|
route { }
|
47
26
|
end
|
48
|
-
|
49
27
|
before(:create) do |trip, evaluator|
|
50
28
|
trip.product = evaluator.route
|
51
29
|
|
52
30
|
trip.option_values = [evaluator.departure_time, evaluator.duration]
|
53
|
-
end
|
54
31
|
|
32
|
+
end
|
55
33
|
after(:create) do |trip, evaluator|
|
56
34
|
trip.stock_items = [create(:stock_item, variant: trip, stock_location: evaluator.product.vendor.stock_locations.first)]
|
57
35
|
trip.stock_items.first.adjust_count_on_hand(10)
|
@@ -19,7 +19,6 @@ require 'spree_cm_commissioner/user_session_jwt_token'
|
|
19
19
|
require 'spree_cm_commissioner/trip_result'
|
20
20
|
require 'spree_cm_commissioner/trip_query_result'
|
21
21
|
require 'spree_cm_commissioner/trip_seat_layout_result'
|
22
|
-
require 'spree_cm_commissioner/cached_inventory_item'
|
23
22
|
|
24
23
|
require 'activerecord_multi_tenant'
|
25
24
|
require 'google/cloud/recaptcha_enterprise'
|
@@ -45,36 +44,3 @@ require 'cm_app_logger'
|
|
45
44
|
require 'counter_culture'
|
46
45
|
|
47
46
|
require 'byebug' if Rails.env.development? || Rails.env.test?
|
48
|
-
|
49
|
-
module SpreeCmCommissioner
|
50
|
-
class << self
|
51
|
-
# Allows overriding the default Redis connection pool with a custom one
|
52
|
-
attr_writer :redis_pool
|
53
|
-
|
54
|
-
def redis_pool
|
55
|
-
@redis_pool ||= default_redis_pool
|
56
|
-
end
|
57
|
-
|
58
|
-
# Resets the Redis pool, useful for testing or reinitialization
|
59
|
-
def reset_redis_pool
|
60
|
-
@redis_pool = nil
|
61
|
-
end
|
62
|
-
|
63
|
-
private
|
64
|
-
|
65
|
-
def default_redis_pool
|
66
|
-
pool_size = ENV.fetch('REDIS_POOL_SIZE', '5').to_i
|
67
|
-
timeout = ENV.fetch('REDIS_TIMEOUT', '5').to_i
|
68
|
-
redis_url = ENV.fetch('REDIS_URL', 'redis://localhost:6379/12')
|
69
|
-
|
70
|
-
ConnectionPool.new(size: pool_size, timeout: timeout) do
|
71
|
-
Redis.new(url: redis_url, timeout: timeout)
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# Provides a configuration block for customizing SpreeCmCommissioner settings
|
77
|
-
def self.configure
|
78
|
-
yield self
|
79
|
-
end
|
80
|
-
end
|
@@ -54,11 +54,6 @@ Gem::Specification.new do |s|
|
|
54
54
|
s.add_dependency "rqrcode", "~> 2.0"
|
55
55
|
s.add_dependency "premailer-rails"
|
56
56
|
s.add_dependency 'counter_culture', '~> 3.2'
|
57
|
-
# Redis
|
58
|
-
s.add_dependency 'redis'
|
59
|
-
s.add_dependency 'redis-rails'
|
60
|
-
s.add_dependency 'connection_pool'
|
61
|
-
|
62
57
|
s.add_development_dependency 'pg'
|
63
58
|
s.add_development_dependency 'spree_dev_tools'
|
64
59
|
s.add_dependency 'blazer', '~> 3.0.4'
|