tzispa_data 0.4.0 → 0.4.1
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/CHANGELOG.md +5 -0
- data/lib/tzispa/data/adapter_pool.rb +19 -10
- data/lib/tzispa/data/repository.rb +15 -7
- data/lib/tzispa/data/version.rb +1 -1
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b0b31e17474d750c87dbc7376adbe897d4399d9
|
4
|
+
data.tar.gz: 2447d842fc8016fc02ba8f5e0a3723953681218b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0278a8c635236652bb18ab761ba9d91a6bef1f1cb6871b4cf1857eb7a15c2770a3a42c1851ee728043eee6732d4d41cb05510581bfb0437b4687b6ea14861806'
|
7
|
+
data.tar.gz: 24d490046f5b820932ccd2a5fb2837cc2c66a3298088f34d8a486910e3f41ab2f00cd974a1850e2f1a4a5f0e2bacc1fb6831fc17ba5113186bdaf79d13c21dab
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
Tzispa Data
|
2
2
|
|
3
|
+
## 0.4.1
|
4
|
+
- use redis for model cache
|
5
|
+
- adapter pool optimizations and bugs fixes
|
6
|
+
- setup sequel extensions individualy for adapter_pool connections
|
7
|
+
|
3
8
|
## v0.4.0
|
4
9
|
- new repository configuration schema
|
5
10
|
- code separation between models and entities into independent namespaces
|
@@ -11,25 +11,34 @@ module Tzispa
|
|
11
11
|
extend Forwardable
|
12
12
|
|
13
13
|
def_delegators :@pool, :has_key?, :keys
|
14
|
-
attr_reader :
|
14
|
+
attr_reader :default_repo
|
15
15
|
|
16
16
|
def initialize(config, default = nil)
|
17
17
|
setup_sequel
|
18
|
-
@
|
18
|
+
@default_repo = default || config.first[0]
|
19
19
|
@pool = {}.tap do |hsh|
|
20
|
-
config.each
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
config.each { |kid, vc| hsh[kid.to_sym] = connect(vc) }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def connect(config)
|
25
|
+
Sequel.connect("#{config.adapter}://#{config.database}").tap do |conn|
|
26
|
+
if config.connection_validation
|
27
|
+
conn.extension(:connection_validator)
|
28
|
+
conn.pool.connection_validation_timeout = config.validation_timeout || DEFAULT_TIMEOUT
|
29
|
+
end
|
30
|
+
if config.respond_to? :extensions
|
31
|
+
config.extensions.split(',').each { |ext| conn.extension ext.to_sym }
|
27
32
|
end
|
28
33
|
end
|
29
34
|
end
|
30
35
|
|
31
36
|
def [](name = nil)
|
32
|
-
@pool[name&.to_sym ||
|
37
|
+
@pool[name&.to_sym || default_repo]
|
38
|
+
end
|
39
|
+
|
40
|
+
def default
|
41
|
+
@pool[default_repo]
|
33
42
|
end
|
34
43
|
|
35
44
|
def setup_sequel
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'sequel'
|
4
|
+
require 'redis'
|
4
5
|
require 'tzispa/utils/string'
|
5
6
|
require 'tzispa/data/adapter_pool'
|
6
7
|
|
@@ -24,6 +25,14 @@ module Tzispa
|
|
24
25
|
|
25
26
|
LOCAL_REPO_ROOT = :repository
|
26
27
|
|
28
|
+
DEFAULT_CACHE_TTL = 900
|
29
|
+
|
30
|
+
class << self
|
31
|
+
def cache_client
|
32
|
+
@cache_client ||= Redis.new(host: 'localhost')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
27
36
|
def initialize(config, root = nil)
|
28
37
|
@config = config
|
29
38
|
@root = root || LOCAL_REPO_ROOT
|
@@ -32,18 +41,18 @@ module Tzispa
|
|
32
41
|
end
|
33
42
|
|
34
43
|
def [](model, repo_id = nil)
|
35
|
-
selected_repo = repo_id || adapters.
|
44
|
+
selected_repo = repo_id || adapters.default_repo
|
36
45
|
raise UnknownModel.new(model, selected_repo) unless pool.key?(selected_repo) &&
|
37
46
|
pool[selected_repo].key?(model.to_sym)
|
38
47
|
pool[selected_repo][model.to_sym]
|
39
48
|
end
|
40
49
|
|
41
50
|
def models(repo_id = nil)
|
42
|
-
pool[repo_id || adapters.
|
51
|
+
pool[repo_id || adapters.default_repo].values
|
43
52
|
end
|
44
53
|
|
45
54
|
def module_const(repo_id = nil)
|
46
|
-
selected_repo = repo_id || adapters.
|
55
|
+
selected_repo = repo_id || adapters.default_repo
|
47
56
|
pool[selected_repo][:__repository_module] ||= repository_module(selected_repo)
|
48
57
|
end
|
49
58
|
|
@@ -61,10 +70,9 @@ module Tzispa
|
|
61
70
|
|
62
71
|
def register(model_id, model_class, repo_id, config)
|
63
72
|
model_class.db = @adapters[repo_id]
|
64
|
-
if config.
|
65
|
-
|
66
|
-
|
67
|
-
end
|
73
|
+
if config.caching
|
74
|
+
model_class.plugin :caching, self.class.cache_client,
|
75
|
+
ttl: config.ttl || DEFAULT_CACHE_TTL
|
68
76
|
end
|
69
77
|
@pool[repo_id][model_id.to_sym] = model_class
|
70
78
|
end
|
data/lib/tzispa/data/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tzispa_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Antonio Piñero
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.31'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: redis
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.3'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.3'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: tzispa_utils
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -74,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
88
|
version: '0'
|
75
89
|
requirements: []
|
76
90
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.6.
|
91
|
+
rubygems_version: 2.6.11
|
78
92
|
signing_key:
|
79
93
|
specification_version: 4
|
80
94
|
summary: Data access for Tzispa framework
|