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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 39f16dc1347524e05a3b12ea619883c5cfec2ebf86c13df6954f549fb7f7d934
4
- data.tar.gz: 6590f96be14c84a510368e25bf875e5223825162b39b1bb3d06f075a6c43a1cc
3
+ metadata.gz: 618340f3aa421355f5cc948d54c1f974470511f8c3aa437329616a03b206b5e0
4
+ data.tar.gz: 392631d8f2da7a660697f01ec7a13021d4ea5a87417cf58180be2dd15caf74f5
5
5
  SHA512:
6
- metadata.gz: 51c4cc95f0a1fb7d529b2366515a0661f48c26cd6c28da176c0e58f7c7bb7f900853e1ce1ffa76c84cfc65797eab3bae6cecac1fd88558fc70c429253005c9d6
7
- data.tar.gz: 6a6d13a1d6ba250e52fc7a87f5e3f99852d815cbf6bd34b34a170972a478c35df2836cb124959e662b3abd2fb4d8294cb3deb087fd1d80ba2c044eda4416c96b
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
- # columns: column list — filtered by `mode` (allowed or denied).
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
- cols = params["columns"]
99
+ columns = params["columns"]
101
100
 
102
- (cols.is_a?(Array) || cols.is_a?(Hash)) && cols.empty?
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
- columns = params["columns"]
139
+ param_columns = params["columns"] || []
143
140
 
144
- return unless columns.is_a?(Array) || columns.is_a?(Hash)
141
+ config_columns = config["columns"] || []
145
142
 
146
- list = config["columns"]
143
+ if @mode == :deny
147
144
 
148
- if !list.is_a?(Array)
149
- params["columns"] = columns.is_a?(Array) ? [] : {} if @mode == :allow
150
- return
151
- end
145
+ if param_columns.is_a?(Array)
152
146
 
153
- params["columns"] = if @mode == :deny
147
+ params["columns"] = param_columns.reject { |c| config_columns.include?(c) }
154
148
 
155
- columns.is_a?(Array) ? columns.reject { |c| list.include?(c) } : columns.reject { |k, _| list.include?(k) }
149
+ return
150
+ end
156
151
 
157
- else
152
+ params["columns"] = param_columns.reject { |k, _| config_columns.include?(k) }
158
153
 
159
- columns.is_a?(Array) ? columns.select { |c| c.is_a?(Hash) || list.include?(c) } : columns.select { |k, _| list.include?(k) }
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"].
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Json2sql
4
- VERSION = "1.0.16"
4
+ VERSION = "1.0.18"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json2sql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.16
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tiago da Silva