fino 1.1.2 → 1.2.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/README.md +0 -8
- data/lib/fino/cache/memory.rb +4 -0
- data/lib/fino/library.rb +9 -5
- data/lib/fino/pipe/cache.rb +3 -6
- data/lib/fino/pipe/storage.rb +4 -3
- data/lib/fino/pipe.rb +1 -1
- data/lib/fino/setting.rb +25 -7
- data/lib/fino/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fea3206069816874011b9d072929f796ad38c3c5645689fa75daf68638a0226
|
4
|
+
data.tar.gz: e8f72e2779da8c910539001ff7c0f91b0d23d44a8b2f8975c984506d8023796e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb7428b18c55226ed0c21f5de8d6cbfc219424a6986fd4ab208ae8ee4cd33fcb961fa3c112872c06b9c35a21d1148aafe1ff005e963d6c68facbf4eb4a5a5129
|
7
|
+
data.tar.gz: fbbce319a638b28bf322f65683e998f83090d159c56b62861f9a3d0df4fce3cead018864fec4bb2c81f0a8de3313fd75747cbc2bcfa8316c707266952ddb1975
|
data/README.md
CHANGED
@@ -75,11 +75,3 @@ end
|
|
75
75
|
```
|
76
76
|
|
77
77
|
<img width="1229" height="641" alt="Screenshot 2025-09-04 at 16 01 51" src="https://github.com/user-attachments/assets/646df84c-c25b-4890-9637-c481e18c9bd4" />
|
78
|
-
|
79
|
-
## TODO
|
80
|
-
|
81
|
-
- Preloading settings to be able to fetch all of them in one adapter call
|
82
|
-
- Request scoped memoization when integrating with Rails
|
83
|
-
- Nicer UI
|
84
|
-
- Basic validations (presence, range, numericality)
|
85
|
-
- Enum setting type
|
data/lib/fino/cache/memory.rb
CHANGED
data/lib/fino/library.rb
CHANGED
@@ -7,12 +7,12 @@ class Fino::Library
|
|
7
7
|
@configuration = configuration
|
8
8
|
end
|
9
9
|
|
10
|
-
def value(setting_name, at: nil)
|
11
|
-
setting(setting_name, at: at).value
|
10
|
+
def value(setting_name, at: nil, **context)
|
11
|
+
setting(setting_name, at: at).value(**context)
|
12
12
|
end
|
13
13
|
|
14
|
-
def values(*setting_names, at: nil)
|
15
|
-
settings(*setting_names, at: at).map(
|
14
|
+
def values(*setting_names, at: nil, **context)
|
15
|
+
settings(*setting_names, at: at).map { |s| s.value(**context) }
|
16
16
|
end
|
17
17
|
|
18
18
|
def setting(setting_name, at: nil)
|
@@ -37,12 +37,16 @@ class Fino::Library
|
|
37
37
|
def set(**setting_names_to_values)
|
38
38
|
at = setting_names_to_values.delete(:at)
|
39
39
|
|
40
|
+
scope = setting_names_to_values.delete(:scope)
|
41
|
+
context = { scope: scope }.compact
|
42
|
+
|
40
43
|
setting_names_to_values.each do |setting_name, value|
|
41
44
|
setting_definition = build_setting_definition(setting_name, at: at)
|
42
45
|
|
43
46
|
pipeline.write(
|
44
47
|
setting_definition,
|
45
|
-
setting_definition.type_class.deserialize(value)
|
48
|
+
setting_definition.type_class.deserialize(value),
|
49
|
+
**context
|
46
50
|
)
|
47
51
|
end
|
48
52
|
end
|
data/lib/fino/pipe/cache.rb
CHANGED
@@ -22,13 +22,10 @@ class Fino::Pipe::Cache
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
def write(setting_definition, value)
|
26
|
-
pipe.write(setting_definition, value)
|
25
|
+
def write(setting_definition, value, **context)
|
26
|
+
pipe.write(setting_definition, value, **context)
|
27
27
|
|
28
|
-
cache.
|
29
|
-
setting_definition.key,
|
30
|
-
setting_definition.type_class.build(setting_definition, value)
|
31
|
-
)
|
28
|
+
cache.delete(setting_definition.key)
|
32
29
|
end
|
33
30
|
|
34
31
|
private
|
data/lib/fino/pipe/storage.rb
CHANGED
@@ -17,8 +17,8 @@ class Fino::Pipe::Storage
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
def write(setting_definition, value)
|
21
|
-
adapter.write(setting_definition, value)
|
20
|
+
def write(setting_definition, value, **context)
|
21
|
+
adapter.write(setting_definition, value, **context)
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
@@ -27,11 +27,12 @@ class Fino::Pipe::Storage
|
|
27
27
|
|
28
28
|
def to_setting(setting_definition, raw_adapter_data)
|
29
29
|
raw_value = adapter.fetch_value_from(raw_adapter_data)
|
30
|
+
scoped_raw_values = adapter.fetch_scoped_values_from(raw_adapter_data)
|
30
31
|
|
31
32
|
setting_definition.type_class.build(
|
32
33
|
setting_definition,
|
33
34
|
raw_value,
|
34
|
-
|
35
|
+
scoped_raw_values
|
35
36
|
)
|
36
37
|
end
|
37
38
|
end
|
data/lib/fino/pipe.rb
CHANGED
data/lib/fino/setting.rb
CHANGED
@@ -14,22 +14,24 @@ module Fino::Setting
|
|
14
14
|
raise NotImplementedError
|
15
15
|
end
|
16
16
|
|
17
|
-
def build(setting_definition, raw_value,
|
17
|
+
def build(setting_definition, raw_value, scoped_raw_values)
|
18
|
+
value = raw_value.equal?(Fino::EMPTINESS) ? setting_definition.options[:default] : deserialize(raw_value)
|
19
|
+
scoped_values = scoped_raw_values.transform_values { |v| deserialize(v) }
|
20
|
+
|
18
21
|
new(
|
19
22
|
setting_definition,
|
20
|
-
|
21
|
-
|
23
|
+
value,
|
24
|
+
scoped_values
|
22
25
|
)
|
23
26
|
end
|
24
27
|
end
|
25
28
|
|
26
|
-
attr_reader :definition
|
29
|
+
attr_reader :definition
|
27
30
|
|
28
|
-
def initialize(definition, value,
|
31
|
+
def initialize(definition, value, scoped_values = {})
|
29
32
|
@definition = definition
|
30
33
|
@value = value
|
31
|
-
|
32
|
-
@options = options
|
34
|
+
@scoped_values = scoped_values
|
33
35
|
end
|
34
36
|
|
35
37
|
def name
|
@@ -40,6 +42,18 @@ module Fino::Setting
|
|
40
42
|
definition.key
|
41
43
|
end
|
42
44
|
|
45
|
+
def value(scope: nil)
|
46
|
+
scope ? scoped_values.fetch(scope.to_s, @value) : @value
|
47
|
+
end
|
48
|
+
|
49
|
+
def overriden_scopes
|
50
|
+
scoped_values.keys
|
51
|
+
end
|
52
|
+
|
53
|
+
def scope_overrides
|
54
|
+
scoped_values
|
55
|
+
end
|
56
|
+
|
43
57
|
def type
|
44
58
|
definition.type
|
45
59
|
end
|
@@ -74,4 +88,8 @@ module Fino::Setting
|
|
74
88
|
|
75
89
|
"#<#{self.class.name} #{attributes.join(', ')}>"
|
76
90
|
end
|
91
|
+
|
92
|
+
private
|
93
|
+
|
94
|
+
attr_reader :scoped_values
|
77
95
|
end
|
data/lib/fino/version.rb
CHANGED