ree_lib 1.0.100 → 1.0.102
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ree_lib/packages/ree_dao/Package.schema.json +7 -0
- data/lib/ree_lib/packages/ree_dao/package/ree_dao/functions/agg_contract_for.rb +24 -0
- data/lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/agg_contract_for.schema.json +28 -0
- data/lib/ree_lib/packages/ree_dao/spec/ree_dao/functions/load_agg/agg_spec.rb +3 -1
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper/functions/build_mapper_factory.rb +8 -42
- data/lib/ree_lib/packages/ree_mapper/package/ree_mapper.rb +10 -6
- data/lib/ree_lib/packages/ree_mapper/spec/ree_mapper/dsl/dsl_spec.rb +4 -4
- data/lib/ree_lib/packages/ree_mapper/spec/spec_helper.rb +0 -9
- data/lib/ree_lib/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 610961c832fe41c44de5956cddfdd9497c729af2446e44bcd3bcddacf68cf0bd
|
4
|
+
data.tar.gz: 31095b276ff9541504867a55ebd5d1edcd2bce13d60cd7c994b734863a14479d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44b5c42d66744b6e36c9c127162e846d91b0e5fe705e893fdeb0a45038f6e1777949ecf2b0d778c23db4592cd5f221b2d772ac2ab624e45f1de4fcc2d745f899
|
7
|
+
data.tar.gz: f7f437b8324816fdc02639570e64d1425ffeea53d71e8761178633b8826035062baf78ef891c4b96da96a380f2d2a9e92522ad13a800d10b112b165cc7419cf7
|
data/Gemfile.lock
CHANGED
@@ -40,6 +40,13 @@
|
|
40
40
|
"fn"
|
41
41
|
]
|
42
42
|
},
|
43
|
+
{
|
44
|
+
"name": "agg_contract_for",
|
45
|
+
"schema": "packages/ree_dao/schemas/ree_dao/functions/agg_contract_for.schema.json",
|
46
|
+
"tags": [
|
47
|
+
"fn"
|
48
|
+
]
|
49
|
+
},
|
43
50
|
{
|
44
51
|
"name": "build_connection",
|
45
52
|
"schema": "packages/ree_dao/schemas/ree_dao/functions/build_connection.schema.json",
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class ReeDao::AggContractFor
|
4
|
+
include Ree::FnDSL
|
5
|
+
|
6
|
+
fn :agg_contract_for do
|
7
|
+
target :class
|
8
|
+
with_caller
|
9
|
+
end
|
10
|
+
|
11
|
+
contract(Any => nil)
|
12
|
+
def call(klass)
|
13
|
+
get_caller.contract(
|
14
|
+
Or[Sequel::Dataset, ArrayOf[Integer], Integer, ArrayOf[klass]],
|
15
|
+
Ksplat[
|
16
|
+
only?: ArrayOf[Symbol],
|
17
|
+
except?: ArrayOf[Symbol],
|
18
|
+
RestKeys => Any
|
19
|
+
] => ArrayOf[klass]
|
20
|
+
)
|
21
|
+
|
22
|
+
nil
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"schema_type": "object",
|
3
|
+
"schema_version": "1.1",
|
4
|
+
"name": "agg_contract_for",
|
5
|
+
"path": "packages/ree_dao/package/ree_dao/functions/agg_contract_for.rb",
|
6
|
+
"mount_as": "fn",
|
7
|
+
"class": "ReeDao::AggContractFor",
|
8
|
+
"factory": null,
|
9
|
+
"methods": [
|
10
|
+
{
|
11
|
+
"doc": "",
|
12
|
+
"throws": [
|
13
|
+
|
14
|
+
],
|
15
|
+
"return": "Any",
|
16
|
+
"args": [
|
17
|
+
{
|
18
|
+
"arg": "klass",
|
19
|
+
"arg_type": "req",
|
20
|
+
"type": "Any"
|
21
|
+
}
|
22
|
+
]
|
23
|
+
}
|
24
|
+
],
|
25
|
+
"links": [
|
26
|
+
|
27
|
+
]
|
28
|
+
}
|
@@ -87,7 +87,7 @@ RSpec.describe :agg do
|
|
87
87
|
include ReeDao::AggregateDSL
|
88
88
|
|
89
89
|
aggregate :agg_users do
|
90
|
-
link :users, from: :ree_dao_agg_test
|
90
|
+
link :users, from: :ree_dao_agg_test, import: -> { User }
|
91
91
|
link :organizations_dao, from: :ree_dao_agg_test
|
92
92
|
link :user_passports, from: :ree_dao_agg_test
|
93
93
|
link :books, from: :ree_dao_agg_test
|
@@ -96,8 +96,10 @@ RSpec.describe :agg do
|
|
96
96
|
link :reviews, from: :ree_dao_agg_test
|
97
97
|
link :review_authors, from: :ree_dao_agg_test
|
98
98
|
link :agg, from: :ree_dao
|
99
|
+
link :agg_contract_for, from: :ree_dao
|
99
100
|
end
|
100
101
|
|
102
|
+
agg_contract_for User
|
101
103
|
def call(ids_or_scope, **opts)
|
102
104
|
agg(users, ids_or_scope, **opts) do |users_list|
|
103
105
|
belongs_to :organization
|
@@ -4,56 +4,20 @@ class ReeMapper::BuildMapperFactory
|
|
4
4
|
include Ree::FnDSL
|
5
5
|
|
6
6
|
fn :build_mapper_factory do
|
7
|
-
with_caller
|
8
7
|
link 'ree_mapper/mapper', -> { Mapper }
|
9
8
|
link 'ree_mapper/mapper_factory', -> { MapperFactory }
|
10
9
|
link 'ree_mapper/mapper_strategy', -> { MapperStrategy }
|
11
10
|
end
|
12
11
|
|
13
|
-
SEMAPHORE = Mutex.new
|
14
|
-
|
15
12
|
contract(ArrayOf[MapperStrategy] => SubclassOf[MapperFactory])
|
16
13
|
def call(strategies:)
|
17
|
-
|
18
|
-
get_caller
|
19
|
-
else
|
20
|
-
name = get_caller.class.to_s.split("::").first
|
21
|
-
Object.const_get(name)
|
22
|
-
end
|
23
|
-
|
24
|
-
klass = nil
|
25
|
-
|
26
|
-
SEMAPHORE.synchronize do
|
27
|
-
if klass = mod.instance_variable_get(:@mapper_factory)
|
28
|
-
klass.instance_eval do
|
29
|
-
@strategies = strategies
|
30
|
-
end
|
31
|
-
else
|
32
|
-
klass = Class.new(ReeMapper::MapperFactory)
|
33
|
-
|
34
|
-
klass.instance_eval do
|
35
|
-
@types = {}
|
36
|
-
@wrappers = {}
|
37
|
-
@strategies = strategies
|
38
|
-
end
|
14
|
+
klass = Class.new(ReeMapper::MapperFactory)
|
39
15
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
klass
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def register_default_types(klass)
|
52
|
-
types = klass.instance_variable_get(:@types)
|
53
|
-
strategies = klass.instance_variable_get(:@strategies)
|
54
|
-
|
55
|
-
return if !types.empty?
|
56
|
-
return if strategies.empty?
|
16
|
+
klass.instance_eval {
|
17
|
+
@types = {}
|
18
|
+
@wrappers = {}
|
19
|
+
@strategies = strategies
|
20
|
+
}
|
57
21
|
|
58
22
|
klass.register_type(:bool, ReeMapper::Bool.new)
|
59
23
|
klass.register_type(:date_time, ReeMapper::DateTime.new)
|
@@ -66,5 +30,7 @@ class ReeMapper::BuildMapperFactory
|
|
66
30
|
klass.register_type(:rational, ReeMapper::Rational.new)
|
67
31
|
|
68
32
|
klass.register_wrapper(:array, ReeMapper::Array)
|
33
|
+
|
34
|
+
klass
|
69
35
|
end
|
70
36
|
end
|
@@ -67,13 +67,20 @@ module ReeMapper
|
|
67
67
|
factory = mod.instance_variable_get(:@mapper_factory)
|
68
68
|
return factory if factory
|
69
69
|
|
70
|
-
|
70
|
+
if !mod.instance_variable_get(:@mapper_semaphore)
|
71
|
+
mod.instance_variable_set(:@mapper_semaphore, Mutex.new)
|
72
|
+
end
|
73
|
+
|
74
|
+
mod.instance_variable_get(:@mapper_semaphore).synchronize do
|
75
|
+
factory = self.build_mapper_factory(mod)
|
76
|
+
mod.instance_variable_set(:@mapper_factory, factory)
|
77
|
+
end
|
78
|
+
|
79
|
+
factory
|
71
80
|
end
|
72
81
|
|
73
82
|
private
|
74
83
|
|
75
|
-
require_relative "./ree_mapper/functions/build_mapper_factory"
|
76
|
-
|
77
84
|
def self.build_mapper_factory(mod)
|
78
85
|
pckg_name = ReeString::Underscore.new.call(mod.name)
|
79
86
|
factory_path = "#{pckg_name}/mapper_factory"
|
@@ -82,9 +89,6 @@ module ReeMapper
|
|
82
89
|
return Object.const_get("#{mod.name}::MapperFactory").new
|
83
90
|
end
|
84
91
|
|
85
|
-
factory = ReeMapper::BuildMapperFactory.new
|
86
|
-
factory.set_caller(mod).call(strategies: [])
|
87
|
-
|
88
92
|
mapper_factory_klass = if package_file_exists?(factory_path) && mod != self
|
89
93
|
package_require(factory_path)
|
90
94
|
Object.const_get("#{mod.name}::MapperFactory")
|
@@ -1,12 +1,3 @@
|
|
1
1
|
RSpec.configure do |config|
|
2
2
|
config.extend Ree::RSpecLinkDSL
|
3
|
-
|
4
|
-
config.before :each do
|
5
|
-
reset_mapper_factory(self)
|
6
|
-
end
|
7
3
|
end
|
8
|
-
|
9
|
-
def reset_mapper_factory(mod)
|
10
|
-
mod = Object.const_get(self.class.to_s.split("::").first)
|
11
|
-
mod.instance_variable_set(:@mapper_factory, nil)
|
12
|
-
end
|
data/lib/ree_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ree_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.102
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ruslan Gatiyatov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ree
|
@@ -331,6 +331,7 @@ files:
|
|
331
331
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/dataset_extensions.rb
|
332
332
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/dsl.rb
|
333
333
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/functions/agg.rb
|
334
|
+
- lib/ree_lib/packages/ree_dao/package/ree_dao/functions/agg_contract_for.rb
|
334
335
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_connection.rb
|
335
336
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_dao.rb
|
336
337
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/functions/build_pg_connection.rb
|
@@ -343,6 +344,7 @@ files:
|
|
343
344
|
- lib/ree_lib/packages/ree_dao/package/ree_dao/wrappers/pg_jsonb.rb
|
344
345
|
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/beans/connections.schema.json
|
345
346
|
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/agg.schema.json
|
347
|
+
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/agg_contract_for.schema.json
|
346
348
|
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_connection.schema.json
|
347
349
|
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_dao.schema.json
|
348
350
|
- lib/ree_lib/packages/ree_dao/schemas/ree_dao/functions/build_pg_connection.schema.json
|