neo4j_bolt 0.1.11 → 0.1.13
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/bin/neo4j_bolt +39 -5
- data/lib/neo4j_bolt/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: 0a19a8e8ffa10a25369a85dce34d09d3a3015a2a105ae52f43eb59fd9752badb
|
4
|
+
data.tar.gz: 2ccb5d3d9d583e53afe638f4a21a328b94f9edadee9aa744baa9f019afa26007
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dadad65f242485126346c41db2c278f29a915ec075fb5775c0415c7b959cbc41efac7bfb3c29289b16a387de68f5a326be24b2bcd0614d5409e5a2503b39f0a
|
7
|
+
data.tar.gz: 04d1a7cb369c42260bfd5ea6ce9a030a519e68fcf86aaa7bda14b9cd7ec696472eb01512d7390abcc5037ed452246a50780a05b564131c746c62e23bf5a59e0f
|
data/Gemfile.lock
CHANGED
data/bin/neo4j_bolt
CHANGED
@@ -90,7 +90,7 @@ class App
|
|
90
90
|
c2.action do |global_options, options, args|
|
91
91
|
neo4j_query("SHOW ALL CONSTRAINTS") do |row|
|
92
92
|
# STDERR.puts row.to_yaml
|
93
|
-
puts "#{row['type']} #{row['name']} #{row['labelsOrTypes'].join('/')}/#{row['properties'].join('/')}"
|
93
|
+
puts "#{row['type']} #{row['name']} #{(row['labelsOrTypes'] || []).join('/')}/#{row['properties'].join('/')}"
|
94
94
|
end
|
95
95
|
neo4j_query("SHOW ALL INDEXES") do |row|
|
96
96
|
# STDERR.puts row.to_yaml
|
@@ -202,6 +202,30 @@ class App
|
|
202
202
|
end
|
203
203
|
end
|
204
204
|
|
205
|
+
indexes = {}
|
206
|
+
INDEX_TR = {
|
207
|
+
'UNIQUENESS' => '<u>unique</u>',
|
208
|
+
'BTREE' => 'indexed',
|
209
|
+
}
|
210
|
+
|
211
|
+
['SHOW ALL CONSTRAINTS', 'SHOW ALL INDEXES'].each do |query|
|
212
|
+
neo4j_query(query) do |row|
|
213
|
+
# STDERR.puts row.to_json
|
214
|
+
labels_or_types = row['labelsOrTypes'] || []
|
215
|
+
properties = row['properties'] || []
|
216
|
+
type = row['type']
|
217
|
+
entity = row['entityType']
|
218
|
+
if labels_or_types.size == 1 && properties.size == 1
|
219
|
+
label_or_type = labels_or_types.first
|
220
|
+
property = properties.first
|
221
|
+
indexes[entity.downcase.to_sym] ||= {}
|
222
|
+
indexes[entity.downcase.to_sym][label_or_type] ||= {}
|
223
|
+
indexes[entity.downcase.to_sym][label_or_type][property] ||= Set.new()
|
224
|
+
indexes[entity.downcase.to_sym][label_or_type][property] << type
|
225
|
+
end
|
226
|
+
end
|
227
|
+
end
|
228
|
+
|
205
229
|
dot = StringIO.open do |io|
|
206
230
|
io.puts "digraph {"
|
207
231
|
io.puts "graph [fontname = Helvetica, fontsize = 10, nodesep = 0.2, ranksep = 0.3];"
|
@@ -218,7 +242,12 @@ class App
|
|
218
242
|
label += "</td></tr>"
|
219
243
|
properties_for_label[lbl].keys.sort.each do |key|
|
220
244
|
label += "<tr>"
|
221
|
-
|
245
|
+
parts = Set.new()
|
246
|
+
((((indexes[:node] || {})[lbl] || {})[key.to_s]) || Set.new()).each do |it|
|
247
|
+
parts << INDEX_TR[it] || it
|
248
|
+
end
|
249
|
+
index_s = parts.empty? ? '' : " <i>(#{parts.join(', ')})</i>"
|
250
|
+
label += "<td border='1' valign='top' align='left' colspan='1'>#{key}#{index_s}</td>"
|
222
251
|
label += "<td border='1' valign='top' align='left' colspan='1'>#{properties_for_label[lbl][key][:classes].to_a.map { |x| TR[x.to_s] || x.to_s }.sort.join(' / ')}</td>"
|
223
252
|
label += "</tr>"
|
224
253
|
end
|
@@ -232,15 +261,20 @@ class App
|
|
232
261
|
lb = parts[2]
|
233
262
|
|
234
263
|
label = "<<table valign='top' align='left' border='0' cellborder='0' cellspacing='0' cellpadding='4'>"
|
235
|
-
label += "<tr><td border='1' bgcolor='#d3d7cf' valign='top' align='left' colspan='2'
|
264
|
+
label += "<tr><td border='1' color='#888888' bgcolor='#d3d7cf' valign='top' align='left' colspan='2'>#{type}"
|
236
265
|
if options[:properties]
|
237
266
|
label += " <i>(#{counts_for_label[s]})</i>"
|
238
267
|
end
|
239
268
|
label += "</td></tr>"
|
240
269
|
(properties_for_label[s] || {}).keys.sort.each do |key|
|
241
270
|
label += "<tr>"
|
242
|
-
|
243
|
-
|
271
|
+
parts = Set.new()
|
272
|
+
((((indexes[:relationship] || {})[type] || {})[key.to_s]) || Set.new()).each do |it|
|
273
|
+
parts << INDEX_TR[it] || it
|
274
|
+
end
|
275
|
+
index_s = parts.empty? ? '' : " <i>(#{parts.join(', ')})</i>"
|
276
|
+
label += "<td border='1' color='#888888' valign='top' align='left' colspan='1'>#{key}#{index_s}</td>"
|
277
|
+
label += "<td border='1' color='#888888' valign='top' align='left' colspan='1'>#{properties_for_label[s][key][:classes].to_a.map { |x| TR[x.to_s] || x.to_s }.sort.join(' / ')}</td>"
|
244
278
|
label += "</tr>"
|
245
279
|
end
|
246
280
|
label += "</table>>"
|
data/lib/neo4j_bolt/version.rb
CHANGED