tzispa_data 0.5.0 → 0.6.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 +5 -5
- data/CHANGELOG.md +4 -0
- data/lib/tzispa/data.rb +5 -5
- data/lib/tzispa/data/adapter_pool.rb +4 -0
- data/lib/tzispa/data/config.rb +67 -0
- data/lib/tzispa/data/repository.rb +68 -47
- data/lib/tzispa/data/version.rb +1 -1
- data/lib/tzispa_data.rb +1 -0
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: dcffc8be8acf0bee44e6f9ac69ddad7734ca600c14a5bcbda7e408f0dbdd4c79
|
4
|
+
data.tar.gz: 1563ef54f269562412bce9cf0cbb8ae2b9de758e11cdf02232595665e94280cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ee5aaf97580453cb3be9c2d6f3e7e5c220d9af6ac4169922f862ebf5c04cd53ad77639347ab4482653c5b89d69fd4fbd18acb6db5854fa1ff49f1923b948c63
|
7
|
+
data.tar.gz: d8af5d02961f890ef79911c8e676d5dbf3e05bc1ac82a59bfe815c90669bdc104aeabfbe648c1b7f9c3f10e9f11a267f6676a5119a285457b36966c04e4d351c
|
data/CHANGELOG.md
CHANGED
data/lib/tzispa/data.rb
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
module Tzispa
|
4
4
|
module Data
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
autoload :Config, 'tzispa/data/config'
|
7
|
+
autoload :AdapterPool, 'tzispa/data/adapter_pool'
|
8
|
+
autoload :Repository, 'tzispa/data/repository'
|
9
|
+
autoload :TRansporter, 'tzispa/data/transporter'
|
10
|
+
autoload :Entity, 'tzispa/data/entity'
|
11
11
|
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'tzispa/config/yaml'
|
4
|
+
|
5
|
+
module Tzispa
|
6
|
+
module Data
|
7
|
+
|
8
|
+
class Config
|
9
|
+
attr_reader :env, :config
|
10
|
+
|
11
|
+
CONFIG_FILENAME = 'database'
|
12
|
+
|
13
|
+
def initialize(env)
|
14
|
+
@cftime = nil
|
15
|
+
@env = env.to_sym
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_h
|
19
|
+
load!
|
20
|
+
config.to_h[env]&.to_h
|
21
|
+
end
|
22
|
+
|
23
|
+
def load!
|
24
|
+
if @cftime.nil?
|
25
|
+
@cftime = File.ctime(filename)
|
26
|
+
elsif @cftime != File.ctime(filename)
|
27
|
+
@config = nil
|
28
|
+
@cftime = File.ctime(filename)
|
29
|
+
end
|
30
|
+
@config ||= Tzispa::Config::Yaml.load(filename)
|
31
|
+
end
|
32
|
+
|
33
|
+
def filename
|
34
|
+
Config.filename
|
35
|
+
end
|
36
|
+
|
37
|
+
class << self
|
38
|
+
def filename
|
39
|
+
@filename ||= "config/#{CONFIG_FILENAME}.yml"
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_default(path)
|
43
|
+
hcfg = {}.tap do |cfg|
|
44
|
+
cfg['development'] = ''
|
45
|
+
cfg['deployment'] = ''
|
46
|
+
cfg['test'] = ''
|
47
|
+
end
|
48
|
+
Yaml.save(hcfg, File.join(path, filename))
|
49
|
+
end
|
50
|
+
|
51
|
+
def add_repository(name, adapter, dbconn)
|
52
|
+
hs = YAML.safe_load(File.open(filename))
|
53
|
+
hs.each_value do |v|
|
54
|
+
v[name] = {
|
55
|
+
'adapter' => adapter,
|
56
|
+
'database' => dbconn,
|
57
|
+
'connection_validation' => 'No',
|
58
|
+
'local' => 'Yes'
|
59
|
+
}
|
60
|
+
end
|
61
|
+
Yaml.save(hs, filename)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'forwardable'
|
3
4
|
require 'sequel'
|
4
5
|
require 'tzispa_utils'
|
5
6
|
require 'tzispa/data/adapter_pool'
|
7
|
+
require 'tzispa/data/config'
|
6
8
|
|
7
9
|
module Tzispa
|
8
10
|
module Data
|
@@ -18,62 +20,70 @@ module Tzispa
|
|
18
20
|
class UnknownModel < DataError; end
|
19
21
|
|
20
22
|
class Repository
|
23
|
+
extend Forwardable
|
24
|
+
include Singleton
|
21
25
|
using Tzispa::Utils::TzString
|
22
26
|
|
23
|
-
attr_reader :
|
27
|
+
attr_reader :adapters, :pool, :config
|
28
|
+
def_delegators :@adapters, :disconnect
|
24
29
|
|
25
|
-
def initialize
|
26
|
-
@config =
|
27
|
-
@root = root || LOCAL_REPO_ROOT
|
30
|
+
def initialize
|
31
|
+
@config = Config.new(Tzispa::Environment.environment)&.to_h
|
28
32
|
@pool = {}
|
29
33
|
@adapters = AdapterPool.new config
|
30
34
|
end
|
31
35
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
36
|
+
class << self
|
37
|
+
def [](model, repo_id = nil)
|
38
|
+
repo = active_repo(repo_id)
|
39
|
+
raise UnknownModel.new(model, repo) unless known?(model, repo)
|
40
|
+
instance.pool[repo][model.to_sym]
|
41
|
+
end
|
38
42
|
|
39
|
-
|
40
|
-
|
41
|
-
|
43
|
+
def disconnect
|
44
|
+
instance.disconnect
|
45
|
+
end
|
42
46
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
+
def active_repo(repo_id = nil)
|
48
|
+
repo_id || instance.adapters.default_repo
|
49
|
+
end
|
50
|
+
|
51
|
+
def known?(model, repo)
|
52
|
+
instance.pool.key?(repo) && instance.pool[repo].key?(model.to_sym)
|
53
|
+
end
|
54
|
+
|
55
|
+
def models(repo_id = nil)
|
56
|
+
instance.pool[active_repo(repo_id)].values
|
57
|
+
end
|
58
|
+
|
59
|
+
def module_const(repo_id = nil)
|
60
|
+
repo = active_repo(repo_id)
|
61
|
+
instance.pool[repo][:__repository_module] ||= instance.repository_module(repo)
|
62
|
+
end
|
47
63
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
load_config_repo(id, cfg)
|
64
|
+
def load!(domain)
|
65
|
+
instance.config.each do |id, cfg|
|
66
|
+
instance.pool[id] = {}
|
67
|
+
instance.load_config_repo(id, cfg)
|
53
68
|
domain.include module_const(id)
|
54
69
|
end
|
55
70
|
end
|
56
|
-
self
|
57
|
-
end
|
58
71
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
if config.caching
|
64
|
-
model_class.plugin :caching, adapters.cache[repo_id],
|
65
|
-
ttl: config.ttl || DEFAULT_CACHE_TTL,
|
66
|
-
ignore_exceptions: true
|
67
|
-
end
|
68
|
-
end
|
69
|
-
pool[repo_id][model_id.to_sym] = model_class
|
72
|
+
def register(model_id, model_class, repo_id, config)
|
73
|
+
return if known?(model_id, repo_id)
|
74
|
+
instance.setup_model(model_class, repo_id, config)
|
75
|
+
instance.pool[repo_id][model_id.to_sym] = model_class
|
70
76
|
end
|
71
|
-
pool[repo_id][model_id.to_sym]
|
72
77
|
end
|
73
78
|
|
74
|
-
|
75
|
-
|
76
|
-
|
79
|
+
def setup_model(model_class, repo_id, config)
|
80
|
+
return if model_class.db == adapters[repo_id]
|
81
|
+
model_class.db = adapters[repo_id]
|
82
|
+
return unless config.caching
|
83
|
+
model_class.plugin :caching, adapters.cache[repo_id],
|
84
|
+
ttl: config.ttl || DEFAULT_CACHE_TTL,
|
85
|
+
ignore_exceptions: true
|
86
|
+
end
|
77
87
|
|
78
88
|
def repository_module(repo_id)
|
79
89
|
rm = @pool[repo_id].first[1].name.split('::')
|
@@ -83,29 +93,40 @@ module Tzispa
|
|
83
93
|
|
84
94
|
def load_config_repo(id, cfg)
|
85
95
|
if cfg.local
|
86
|
-
|
87
|
-
load_local_models id, cfg
|
88
|
-
load_local_entities id
|
96
|
+
local_local(id, cfg)
|
89
97
|
else
|
90
98
|
require cfg.gem
|
91
99
|
repo_module = id.to_s.camelize.constantize
|
92
100
|
self.class.include repo_module
|
93
|
-
self.class.send "load_#{id}",
|
101
|
+
self.class.send "load_#{id}", id, cfg
|
94
102
|
end
|
95
103
|
end
|
96
104
|
|
97
|
-
|
105
|
+
private
|
106
|
+
|
107
|
+
def root(cfg)
|
108
|
+
cfg.root || LOCAL_REPO_ROOT
|
109
|
+
end
|
110
|
+
|
111
|
+
def local_local(id, cfg)
|
112
|
+
local_root = root(cfg)
|
113
|
+
load_local_helpers id, local_root
|
114
|
+
load_local_models id, cfg, local_root
|
115
|
+
load_local_entities id, local_root
|
116
|
+
end
|
117
|
+
|
118
|
+
def load_local_models(repo_id, cfg, root)
|
98
119
|
models_path = "./#{root}/#{repo_id}/model"
|
99
120
|
repo_module = "#{repo_id.to_s.camelize}::Model".constantize
|
100
121
|
Dir["#{models_path}/*.rb"].each do |file|
|
101
122
|
model_id = file.split('/').last.split('.').first
|
102
123
|
require "#{models_path}/#{model_id}"
|
103
124
|
model_class = "#{repo_module}::#{model_id.camelize}".constantize
|
104
|
-
register model_id, model_class, repo_id,
|
125
|
+
register model_id, model_class, repo_id, cfg
|
105
126
|
end
|
106
127
|
end
|
107
128
|
|
108
|
-
def load_local_entities(repo_id)
|
129
|
+
def load_local_entities(repo_id, root)
|
109
130
|
entities_path = "./#{root}/#{repo_id}/entity"
|
110
131
|
Dir["#{entities_path}/*.rb"].each do |file|
|
111
132
|
entity_id = file.split('/').last.split('.').first
|
@@ -113,7 +134,7 @@ module Tzispa
|
|
113
134
|
end
|
114
135
|
end
|
115
136
|
|
116
|
-
def load_local_helpers(repo_id)
|
137
|
+
def load_local_helpers(repo_id, root)
|
117
138
|
helpers_path = "./#{root}/#{repo_id}/helpers"
|
118
139
|
Dir["#{helpers_path}/*.rb"].each do |file|
|
119
140
|
helper_id = file.split('/').last.split('.').first
|
data/lib/tzispa/data/version.rb
CHANGED
data/lib/tzispa_data.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tzispa_data
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
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-12-
|
11
|
+
date: 2017-12-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dalli
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.7'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: sequel
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -25,19 +39,19 @@ dependencies:
|
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '5.2'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
42
|
+
name: tzispa_config
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
45
|
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
47
|
+
version: 0.1.0
|
34
48
|
type: :runtime
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
52
|
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
54
|
+
version: 0.1.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: tzispa_utils
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,6 +77,7 @@ files:
|
|
63
77
|
- README.md
|
64
78
|
- lib/tzispa/data.rb
|
65
79
|
- lib/tzispa/data/adapter_pool.rb
|
80
|
+
- lib/tzispa/data/config.rb
|
66
81
|
- lib/tzispa/data/entity.rb
|
67
82
|
- lib/tzispa/data/repository.rb
|
68
83
|
- lib/tzispa/data/transporter.rb
|
@@ -88,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
103
|
version: '0'
|
89
104
|
requirements: []
|
90
105
|
rubyforge_project:
|
91
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.7.3
|
92
107
|
signing_key:
|
93
108
|
specification_version: 4
|
94
109
|
summary: Data access for Tzispa framework
|