jungle_path 0.0.14 → 0.0.15
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/lib/jungle_path/app/config/config.rb +8 -7
- data/lib/jungle_path/app/schemas/schema.rb +22 -0
- data/lib/jungle_path/app/schemas/views.rb +34 -4
- data/lib/jungle_path/authentication/data_provider/default.rb +9 -1
- data/lib/jungle_path/query/sql_string.rb +3 -0
- data/lib/jungle_path/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4eb52d315417ae17e52f0f5ea2572caa5a294ed3
|
4
|
+
data.tar.gz: 57f7a7df31b7ac7e2ddab756ea1dc1303cd7a44b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 783267b10234d3082bdf1891abc3a1154672eb9fa3ddeeb6ccebe7ef85f803d84c17ddd30ee3948f5a8f09cd2fb8a6750e85d0211b15578e9f738cad3eb49cfe
|
7
|
+
data.tar.gz: 9f25bb3f0dc97291d6db2e8a1984c148d47268c2487957370f6c4a0cadfdcd55da5c6c7f9e9190d9dd8373ce6b140a67ee432bff888b95bf425739eb45e2d604
|
@@ -209,18 +209,19 @@ module Config
|
|
209
209
|
# Replace usage of a table in a query with the given view or parameterized function
|
210
210
|
jungle.role_table_filters = {
|
211
211
|
user: [
|
212
|
-
{table_name: :contact, replacement: :filter_contact}
|
212
|
+
{table_name: :contact, replacement: :filter_contact},
|
213
|
+
{table_name: :test, replacement: :filter_test}
|
213
214
|
]
|
214
|
-
# more...
|
215
215
|
}
|
216
216
|
end
|
217
217
|
|
218
218
|
def self.restriction_table_filters
|
219
|
-
jungle.restriction_table_filters = {
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
}
|
219
|
+
#jungle.restriction_table_filters = {
|
220
|
+
# me_related:[
|
221
|
+
# {table_name: :contact, replacement: :filter_contact}
|
222
|
+
# ]
|
223
|
+
#}
|
224
|
+
jungle.restriction_table_filters = {}
|
224
225
|
end
|
225
226
|
|
226
227
|
def self.user_table_filters
|
@@ -32,6 +32,17 @@ module Schema
|
|
32
32
|
)
|
33
33
|
end
|
34
34
|
|
35
|
+
class Test < Schema::Base
|
36
|
+
self.description = ""
|
37
|
+
define(
|
38
|
+
[:id, :primary_key],
|
39
|
+
[:name, :string],
|
40
|
+
[:email, :string],
|
41
|
+
[:user_id, :foreign_key, :user, :unique],
|
42
|
+
[:audit_user]
|
43
|
+
)
|
44
|
+
end
|
45
|
+
|
35
46
|
class FilterContact < Schema::Base
|
36
47
|
self.description = "Test View filter stuff."
|
37
48
|
define(
|
@@ -44,6 +55,17 @@ module Schema
|
|
44
55
|
self.view = Views.filter_contact
|
45
56
|
end
|
46
57
|
|
58
|
+
class FilterTest < Schema::Base
|
59
|
+
self.description = "Test View filter stuff."
|
60
|
+
define(
|
61
|
+
[:id, :primary_key],
|
62
|
+
[:name, :string],
|
63
|
+
[:email, :string],
|
64
|
+
[:user_id, :foreign_key, :user],
|
65
|
+
[:audit_user]
|
66
|
+
)
|
67
|
+
self.view = Views.filter_test
|
68
|
+
end
|
47
69
|
|
48
70
|
class Practice < Schema::Base
|
49
71
|
self.description = ""
|
@@ -3,7 +3,7 @@ require 'jungle_path/db_model/view'
|
|
3
3
|
|
4
4
|
module Views
|
5
5
|
def self.filter_contact
|
6
|
-
@
|
6
|
+
@filter_contact = JunglePath::DBModel::View.new(
|
7
7
|
JunglePath::SQL::Helpers.sql("
|
8
8
|
create or replace function filter_contact(p_contact_id int)
|
9
9
|
returns table (
|
@@ -26,9 +26,39 @@ module Views
|
|
26
26
|
language sql;
|
27
27
|
"),
|
28
28
|
"drop function filter_contact(int)",
|
29
|
-
[:
|
29
|
+
[:contact],
|
30
30
|
[:contact_id]
|
31
|
-
) unless @
|
32
|
-
@
|
31
|
+
) unless @filter_contact
|
32
|
+
@filter_contact
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.filter_test
|
36
|
+
@filter_test = JunglePath::DBModel::View.new(
|
37
|
+
JunglePath::SQL::Helpers.sql("
|
38
|
+
create or replace function filter_test(p_contact_id int)
|
39
|
+
returns table (
|
40
|
+
id int,
|
41
|
+
name text,
|
42
|
+
email text,
|
43
|
+
user_id int,
|
44
|
+
created_at timestamp,
|
45
|
+
created_by_user_id int,
|
46
|
+
updated_at timestamp,
|
47
|
+
updated_by_user_id int
|
48
|
+
)
|
49
|
+
as
|
50
|
+
$body$
|
51
|
+
select
|
52
|
+
a.*
|
53
|
+
from contact a
|
54
|
+
where a.id = p_contact_id
|
55
|
+
$body$
|
56
|
+
language sql;
|
57
|
+
"),
|
58
|
+
"drop function filter_test(int)",
|
59
|
+
[:contact, :test],
|
60
|
+
[:contact_id]
|
61
|
+
) unless @filter_test
|
62
|
+
@filter_test
|
33
63
|
end
|
34
64
|
end
|
@@ -103,25 +103,33 @@ module JunglePath
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def get_table_filters(identity, no_cache=false)
|
106
|
+
puts "get_table_filters!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
106
107
|
filters = {}
|
107
108
|
|
108
|
-
|
109
|
+
puts "@role_table_filters: #{@role_table_filters} ------------------------------------------------------------------------------------"
|
110
|
+
puts "identity.role: #{identity.role}"
|
111
|
+
temp_filters = (@role_table_filters && @role_table_filters[identity.role[:name]]) || []
|
112
|
+
puts "temp_filters: #{temp_filters} ------------------------------------------------------------------------------------"
|
109
113
|
temp_filters.each do |filter|
|
114
|
+
puts "role filter: #{filter}."
|
110
115
|
filters[filter[:table_name]] = filter
|
111
116
|
end
|
112
117
|
|
113
118
|
identity.authorization_filter.restrictions.each do |restriction|
|
114
119
|
temp_filters = (@restriction_table_filters && @restriction_table_filters[restriction]) || []
|
115
120
|
temp_filters.each do |filter|
|
121
|
+
puts "restriction filter: #{filter}."
|
116
122
|
filters[filter[:table_name]] = filter
|
117
123
|
end
|
118
124
|
end
|
119
125
|
|
120
126
|
temp_filters = (@user_table_filters && @user_table_filters[identity.user.id]) || []
|
121
127
|
temp_filters.each do |filter|
|
128
|
+
puts "user filter: #{filter}."
|
122
129
|
filters[filter[:table_name]] = filter
|
123
130
|
end
|
124
131
|
|
132
|
+
puts "filters: #{filters}"
|
125
133
|
filters
|
126
134
|
end
|
127
135
|
|
@@ -130,10 +130,13 @@ module JunglePath
|
|
130
130
|
if filter
|
131
131
|
puts "hook_in_table_filters: frm.table_name: #{frm.table_name}."
|
132
132
|
replacement_table = engine.tables[filter[:replacement]]
|
133
|
+
puts "replacement_table: #{replacement_table}"
|
133
134
|
table_replacement_text = nil
|
134
135
|
if replacement_table.view
|
136
|
+
puts "has view"
|
135
137
|
table_replacement_text = replacement_table.view.build_call(engine.identity, replacement_table)
|
136
138
|
else
|
139
|
+
puts "no view"
|
137
140
|
table_replacement_text = "#{replacement_table.table_name}"
|
138
141
|
end
|
139
142
|
frm.table_replacement_text = table_replacement_text
|
data/lib/jungle_path/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jungle_path
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.15
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael VanZant
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|