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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d986faff8dbc3e2fd759f03fe06790ad61e9b8f4
4
- data.tar.gz: 8db044d027d97790e03b3300b00180d195f86c85
3
+ metadata.gz: 5b0b31e17474d750c87dbc7376adbe897d4399d9
4
+ data.tar.gz: 2447d842fc8016fc02ba8f5e0a3723953681218b
5
5
  SHA512:
6
- metadata.gz: 5238d861f3add98d6ee943384b306d811d9b5f1bd8ef1b712b38627aa9cb5835654db09bfd0df0caad6955cd9708db3473253dfb4d539b2332ef7a7d48f61562
7
- data.tar.gz: 0d267d340bf788b6c1d923237976473de5ff49742ef02f5f8a49cd284e67278abc62316d0daa41abbc5d4da55e1c2f5a71ee76f4e0602da2d9013ae83fd61d0e
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 :default
14
+ attr_reader :default_repo
15
15
 
16
16
  def initialize(config, default = nil)
17
17
  setup_sequel
18
- @default = default || config.first[0]
18
+ @default_repo = default || config.first[0]
19
19
  @pool = {}.tap do |hsh|
20
- config.each do |k, v|
21
- conn = Sequel.connect "#{v.adapter}://#{v.database}"
22
- if v.connection_validation
23
- conn.extension(:connection_validator)
24
- conn.pool.connection_validation_timeout = v.validation_timeout || DEFAULT_TIMEOUT
25
- end
26
- hsh[k.to_sym] = conn
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 || default]
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.default
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.default].values
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.default
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.respond_to? :extensions
65
- config.extensions.split(',').each do |ext|
66
- model_class.db.extension ext.to_sym
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
@@ -3,7 +3,7 @@
3
3
  module Tzispa
4
4
  module Data
5
5
 
6
- VERSION = '0.4.0'
6
+ VERSION = '0.4.1'
7
7
  NAME = 'Tzispa Data'
8
8
  GEM_NAME = 'tzispa_data'
9
9
 
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.0
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-03-13 00:00:00.000000000 Z
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.10
91
+ rubygems_version: 2.6.11
78
92
  signing_key:
79
93
  specification_version: 4
80
94
  summary: Data access for Tzispa framework