tzispa_data 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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