fino-redis 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/redis/adapter.rb +19 -2
- data/lib/fino/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d008dcb98a7f099164cd0b185da4f9de189799f7b9cb8ac4256a87795664d223
|
4
|
+
data.tar.gz: 2057b0ec99f232cdcdc8a07b2af87a29d7151b3dca1e300dabf3270479a502d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3bd8407f21f3d6b69bac82d263646723109d3e2ff92453dde4b1c13687c9b9496ba26a1d3f3d5cbf0956ac3048e870e1a70aee8d6a2185194663214fe606c4ed
|
7
|
+
data.tar.gz: 7811852bc152a9c24f8baa5a7a5ea91daf63a986017543274bff80c84ffabd606224c17288fdaa60a2487014e75e5d59cfe6abab9759ca9ceeec24109c53fea8
|
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/redis/adapter.rb
CHANGED
@@ -15,8 +15,12 @@ class Fino::Redis::Adapter
|
|
15
15
|
redis.hgetall(redis_key_for(setting_definition))
|
16
16
|
end
|
17
17
|
|
18
|
-
def write(setting_definition, value)
|
19
|
-
|
18
|
+
def write(setting_definition, value, **context)
|
19
|
+
key = redis_key_for(setting_definition)
|
20
|
+
hash_key = redis_hash_value_key_for(context)
|
21
|
+
value = setting_definition.type_class.serialize(value)
|
22
|
+
|
23
|
+
redis.hset(key, hash_key, value)
|
20
24
|
end
|
21
25
|
|
22
26
|
def read_multi(setting_definitions)
|
@@ -31,10 +35,23 @@ class Fino::Redis::Adapter
|
|
31
35
|
raw_adapter_data.key?(VALUE_KEY) ? raw_adapter_data.delete(VALUE_KEY) : Fino::EMPTINESS
|
32
36
|
end
|
33
37
|
|
38
|
+
def fetch_scoped_values_from(raw_adapter_data)
|
39
|
+
raw_adapter_data.each_with_object({}) do |(key, value), memo|
|
40
|
+
next unless key.start_with?("s/")
|
41
|
+
|
42
|
+
scope = key.split("/", 3)[1]
|
43
|
+
memo[scope] = value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
34
47
|
private
|
35
48
|
|
36
49
|
attr_reader :redis, :redis_namespace
|
37
50
|
|
51
|
+
def redis_hash_value_key_for(context)
|
52
|
+
context[:scope] ? "s/#{context[:scope]}/#{VALUE_KEY}" : VALUE_KEY
|
53
|
+
end
|
54
|
+
|
38
55
|
def redis_key_for(setting_definition)
|
39
56
|
"#{redis_namespace}:#{setting_definition.path.join(':')}"
|
40
57
|
end
|
data/lib/fino/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fino-redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Egor Iskrenkov
|
@@ -15,14 +15,14 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 1.
|
18
|
+
version: 1.2.0
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 1.
|
25
|
+
version: 1.2.0
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: redis
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|