json2sql 1.0.16 → 1.0.18
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/json2sql/query_policy.rb +20 -17
- data/lib/json2sql/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 618340f3aa421355f5cc948d54c1f974470511f8c3aa437329616a03b206b5e0
|
|
4
|
+
data.tar.gz: 392631d8f2da7a660697f01ec7a13021d4ea5a87417cf58180be2dd15caf74f5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7188db0f32412eb1f66d7d459252ecd747b7227c76d2523b1bba45ecc10737055750346a655c83f1239a0b4f131f4cf67166ebc72ea3f6e21480e5adabbfd3db
|
|
7
|
+
data.tar.gz: 1596d94d6774787a273fb7d554b06469f0e5efc1b1ed07829d853eb097a0c6b08c31f55e35f5dae894ab6613bb08aaf0dac28542b55ed971422cc43fd6eea3e2
|
|
@@ -14,8 +14,7 @@ module Json2sql
|
|
|
14
14
|
# children: { child_table => { columns: [...], ... } },
|
|
15
15
|
# parents: { parent_table => { columns: [...], ... } },
|
|
16
16
|
# where: { "and" => { col => val } } } }
|
|
17
|
-
|
|
18
|
-
# nil or absent = no column restriction for that table.
|
|
17
|
+
# columns: Array — filtered by `mode` (allowed or denied).
|
|
19
18
|
# children: nested hash of allowed/denied child tables with their own config.
|
|
20
19
|
# nil or absent = no restriction on children.
|
|
21
20
|
# In :deny mode: a child relation is removed only when all its
|
|
@@ -97,9 +96,9 @@ module Json2sql
|
|
|
97
96
|
|
|
98
97
|
return false unless params.is_a?(Hash)
|
|
99
98
|
|
|
100
|
-
|
|
99
|
+
columns = params["columns"]
|
|
101
100
|
|
|
102
|
-
(
|
|
101
|
+
(columns.is_a?(Array) || columns.is_a?(Hash)) && columns.empty?
|
|
103
102
|
end
|
|
104
103
|
|
|
105
104
|
def filter_tables(params, config)
|
|
@@ -134,31 +133,35 @@ module Json2sql
|
|
|
134
133
|
# Filters "columns" using mode (:allow or :deny).
|
|
135
134
|
# Handles Array (SELECT) and Hash (INSERT/UPDATE) column formats.
|
|
136
135
|
# Hash entries (function columns) always pass through in :allow mode.
|
|
137
|
-
# If no column list is defined: in :allow mode all columns are blocked;
|
|
138
|
-
# in :deny mode columns are untouched.
|
|
139
136
|
|
|
140
137
|
def filter_columns(params, config)
|
|
141
138
|
|
|
142
|
-
|
|
139
|
+
param_columns = params["columns"] || []
|
|
143
140
|
|
|
144
|
-
|
|
141
|
+
config_columns = config["columns"] || []
|
|
145
142
|
|
|
146
|
-
|
|
143
|
+
if @mode == :deny
|
|
147
144
|
|
|
148
|
-
|
|
149
|
-
params["columns"] = columns.is_a?(Array) ? [] : {} if @mode == :allow
|
|
150
|
-
return
|
|
151
|
-
end
|
|
145
|
+
if param_columns.is_a?(Array)
|
|
152
146
|
|
|
153
|
-
|
|
147
|
+
params["columns"] = param_columns.reject { |c| config_columns.include?(c) }
|
|
154
148
|
|
|
155
|
-
|
|
149
|
+
return
|
|
150
|
+
end
|
|
156
151
|
|
|
157
|
-
|
|
152
|
+
params["columns"] = param_columns.reject { |k, _| config_columns.include?(k) }
|
|
158
153
|
|
|
159
|
-
|
|
154
|
+
return
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
if param_columns.is_a?(Array)
|
|
160
158
|
|
|
159
|
+
params["columns"] = param_columns.select { |c| c.is_a?(Hash) || config_columns.include?(c) }
|
|
160
|
+
|
|
161
|
+
return
|
|
161
162
|
end
|
|
163
|
+
|
|
164
|
+
params["columns"] = param_columns.select { |k, _| config_columns.include?(k) }
|
|
162
165
|
end
|
|
163
166
|
|
|
164
167
|
# Merges forced "and" conditions into params["and"].
|
data/lib/json2sql/version.rb
CHANGED