fino 1.11.0 → 1.11.2

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: 9cb7f2431777711dad3fa9367500d529a5e6a29b01b074383005d88949684bed
4
- data.tar.gz: 8ecbaa90f45361302c662d5a01f17eb9deaa1d1ea4a5e4b5c25541637a52dabc
3
+ metadata.gz: 2d12f841f4cb292abb0cef952f0d45baa88fa8ca756c2745d98f15c3f15682e9
4
+ data.tar.gz: 16960d606ab7089caeb2c4274d4247d153cf1d7cbbd7a4b6f6addd5d73d14548
5
5
  SHA512:
6
- metadata.gz: 1377a99cc4ac6c9c8591194b513ce8aed0113eaf3b7b5a3af15f8242a8b1ec8ad34f2117d4c074b2bad080bcae98d5a772452a429c26ecfa6c49a4a27410f78f
7
- data.tar.gz: bdaffc316faf4d827e86d569fc90acbc239c558b2aebc4ce0849ad9ca67ced23eacb8194161f5d41934aff986d14cf0819570a91ff684bf4b9d79b79946c091b
6
+ metadata.gz: 6bde25feb4018e547f42f6ee3a0ca6df453bb678fbae110fab317f46df0fa758f05f357e74e3c05251594e4a1bb324ae123e2bf053b631e3684137a64f029328
7
+ data.tar.gz: 4b8178706b16045053ac768d3845caf30bcb877fcc48cef2ffd30ffa84310e7033fb194c9a9327dcd1e7e287de53d04f72c5627801fa4958eeb0c1427416fd60
@@ -47,17 +47,56 @@ module Fino::Settings::Numeric
47
47
  end
48
48
  end
49
49
 
50
+ class Minutes < Generic
51
+ include Time
52
+
53
+ def initialize = super("Minutes", "min")
54
+
55
+ def base_factor
56
+ 60
57
+ end
58
+ end
59
+
60
+ class Hours < Generic
61
+ include Time
62
+
63
+ def initialize = super("Hours", "hour")
64
+
65
+ def base_factor
66
+ 3600
67
+ end
68
+ end
69
+
70
+ class Days < Generic
71
+ include Time
72
+
73
+ def initialize = super("Days", "day")
74
+
75
+ def base_factor
76
+ 86_400
77
+ end
78
+ end
79
+
80
+ UNITS = {
81
+ "ms" => Milliseconds,
82
+ "milliseconds" => Milliseconds,
83
+ "sec" => Seconds,
84
+ "seconds" => Seconds,
85
+ "min" => Minutes,
86
+ "minutes" => Minutes,
87
+ "hour" => Hours,
88
+ "hours" => Hours,
89
+ "day" => Days,
90
+ "days" => Days
91
+ }.freeze
92
+
50
93
  module_function
51
94
 
52
95
  def for(identifier)
53
- case identifier.to_s
54
- when "ms", "milliseconds"
55
- Milliseconds.new
56
- when "sec", "seconds"
57
- Seconds.new
58
- else
59
- Generic.new(identifier.to_s.capitalize)
60
- end
96
+ klass = UNITS[identifier.to_s]
97
+ return klass.new if klass
98
+
99
+ Generic.new(identifier.to_s.capitalize)
61
100
  end
62
101
  end
63
102
 
@@ -37,7 +37,7 @@ module Fino
37
37
 
38
38
  Fino::Solid::Setting.upsert(
39
39
  { key: setting_definition.key, data: data },
40
- unique_by: :key
40
+ **unique_by_option(:key)
41
41
  )
42
42
  end
43
43
 
@@ -45,8 +45,8 @@ module Fino
45
45
  Fino::Solid::Setting.pluck(:key)
46
46
  end
47
47
 
48
- def clear(setting_key)
49
- Fino::Solid::Setting.where(key: setting_key).delete_all > 0
48
+ def clear(setting_key) # rubocop:disable Naming/PredicateMethod
49
+ Fino::Solid::Setting.where(key: setting_key).delete_all.positive?
50
50
  end
51
51
 
52
52
  def fetch_value_from(raw_adapter_data)
@@ -70,7 +70,7 @@ module Fino
70
70
  scope: scope.to_s,
71
71
  converted_at: time
72
72
  },
73
- unique_by: :idx_fino_conversions_unique
73
+ **unique_by_option(:idx_fino_conversions_unique)
74
74
  )
75
75
  end
76
76
 
@@ -101,6 +101,18 @@ module Fino
101
101
  memo << { percentage: percentage.to_f, value: value }
102
102
  end
103
103
  end
104
+
105
+ private
106
+
107
+ def unique_by_option(constraint)
108
+ return {} if mysql_adapter?
109
+
110
+ { unique_by: constraint }
111
+ end
112
+
113
+ def mysql_adapter?
114
+ Fino::Solid::Record.connection.adapter_name.match?(/Mysql2|Trilogy/i)
115
+ end
104
116
  end
105
117
  end
106
118
  end
data/lib/fino/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Fino
4
- VERSION = "1.11.0"
4
+ VERSION = "1.11.2"
5
5
  REQUIRED_RUBY_VERSION = ">= 3.2.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fino
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.11.0
4
+ version: 1.11.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Egor Iskrenkov
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
- rubygems_version: 4.0.3
97
+ rubygems_version: 4.0.6
98
98
  specification_version: 4
99
99
  summary: Plug & play distributed settings engine for Ruby and Rails
100
100
  test_files: []