gloo-lang 1.2.3 → 1.2.5
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/VERSION +1 -1
- metadata +2 -3
- data/lib/gloo_lang/objs/data/query.rb +0 -212
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a72f890d762fc81128cf2e0108ac3659e50577cfbe7bac14c65fd6a9a2a2054d
|
4
|
+
data.tar.gz: 76ce6d65e94e17e2640393e24380fdaef4652aa03a27e1ccc8cb152fdff69f25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a202a6d526985f7aa570a2ec4e74727dbe3cdaec06e4984d8bc0b1017dd536c25eb4e5ce87376783e7405d5d410c6b093960a96c57c1e2d1521317aef10286ca
|
7
|
+
data.tar.gz: 3861b2af545bd83c23a336010185eac174504d3412bf22c839600c71c15e084497d5d86ee7e47a52bc2fc7be15a2a9cbb5a23716ad62f7ca91d96d22e7e5fa47
|
data/lib/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.2.
|
1
|
+
1.2.5
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gloo-lang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Crane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -261,7 +261,6 @@ files:
|
|
261
261
|
- lib/gloo_lang/objs/ctrl/each.rb
|
262
262
|
- lib/gloo_lang/objs/ctrl/repeat.rb
|
263
263
|
- lib/gloo_lang/objs/data/markdown.rb
|
264
|
-
- lib/gloo_lang/objs/data/query.rb
|
265
264
|
- lib/gloo_lang/objs/data/table.rb
|
266
265
|
- lib/gloo_lang/objs/dt/date.rb
|
267
266
|
- lib/gloo_lang/objs/dt/datetime.rb
|
@@ -1,212 +0,0 @@
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
3
|
-
#
|
4
|
-
# A SQL database query.
|
5
|
-
# Relies on a database connection object.
|
6
|
-
#
|
7
|
-
|
8
|
-
module GlooLang
|
9
|
-
module Objs
|
10
|
-
class Query < GlooLang::Core::Obj
|
11
|
-
|
12
|
-
KEYWORD = 'query'.freeze
|
13
|
-
KEYWORD_SHORT = 'sql'.freeze
|
14
|
-
|
15
|
-
DB = 'database'.freeze
|
16
|
-
SQL = 'sql'.freeze
|
17
|
-
RESULT = 'result'.freeze
|
18
|
-
PARAMS = 'params'.freeze
|
19
|
-
|
20
|
-
DB_MISSING_ERR = 'The database connection is missing!'.freeze
|
21
|
-
|
22
|
-
#
|
23
|
-
# The name of the object type.
|
24
|
-
#
|
25
|
-
def self.typename
|
26
|
-
return KEYWORD
|
27
|
-
end
|
28
|
-
|
29
|
-
#
|
30
|
-
# The short name of the object type.
|
31
|
-
#
|
32
|
-
def self.short_typename
|
33
|
-
return KEYWORD_SHORT
|
34
|
-
end
|
35
|
-
|
36
|
-
# ---------------------------------------------------------------------
|
37
|
-
# Children
|
38
|
-
# ---------------------------------------------------------------------
|
39
|
-
|
40
|
-
#
|
41
|
-
# Does this object have children to add when an object
|
42
|
-
# is created in interactive mode?
|
43
|
-
# This does not apply during obj load, etc.
|
44
|
-
#
|
45
|
-
def add_children_on_create?
|
46
|
-
return true
|
47
|
-
end
|
48
|
-
|
49
|
-
#
|
50
|
-
# Add children to this object.
|
51
|
-
# This is used by containers to add children needed
|
52
|
-
# for default configurations.
|
53
|
-
#
|
54
|
-
def add_default_children
|
55
|
-
fac = @engine.factory
|
56
|
-
fac.create_alias DB, nil, self
|
57
|
-
fac.create_string SQL, nil, self
|
58
|
-
fac.create_can RESULT, self
|
59
|
-
end
|
60
|
-
|
61
|
-
# ---------------------------------------------------------------------
|
62
|
-
# Messages
|
63
|
-
# ---------------------------------------------------------------------
|
64
|
-
|
65
|
-
#
|
66
|
-
# Get a list of message names that this object receives.
|
67
|
-
#
|
68
|
-
def self.messages
|
69
|
-
return super + [ 'run' ]
|
70
|
-
end
|
71
|
-
|
72
|
-
#
|
73
|
-
# SSH to the host and execute the command, then update result.
|
74
|
-
#
|
75
|
-
def msg_run
|
76
|
-
db = db_obj
|
77
|
-
unless db
|
78
|
-
@engine.err DB_MISSING_ERR
|
79
|
-
return
|
80
|
-
end
|
81
|
-
|
82
|
-
result = db.query( sql_value, param_array )
|
83
|
-
process_result result
|
84
|
-
end
|
85
|
-
|
86
|
-
# ---------------------------------------------------------------------
|
87
|
-
# Show Results
|
88
|
-
# ---------------------------------------------------------------------
|
89
|
-
|
90
|
-
#
|
91
|
-
# The first row will be a header row,
|
92
|
-
# so if there are exactly 2 rows, then we have only
|
93
|
-
# a single row of data.
|
94
|
-
#
|
95
|
-
def single_row_result?( data )
|
96
|
-
return data.count == 2
|
97
|
-
end
|
98
|
-
|
99
|
-
#
|
100
|
-
# Show a single row in a vertical, form style view.
|
101
|
-
#
|
102
|
-
def show_single_row( data )
|
103
|
-
head = data[0]
|
104
|
-
row = data[1]
|
105
|
-
|
106
|
-
head.each_with_index do |h, i|
|
107
|
-
puts "#{h}: \t #{row[i]}"
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
#
|
112
|
-
# Show multiple rows in a table view.
|
113
|
-
#
|
114
|
-
def show_rows( data )
|
115
|
-
data.each_with_index do |row, i|
|
116
|
-
# Show header for the first row
|
117
|
-
puts row.map { |k, _| k }.join( " \t " ).white if i.zero?
|
118
|
-
|
119
|
-
# Show the row data
|
120
|
-
puts row.map { |_, v| v }.join( " \t " )
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# ---------------------------------------------------------------------
|
125
|
-
# Private functions
|
126
|
-
# ---------------------------------------------------------------------
|
127
|
-
|
128
|
-
private
|
129
|
-
|
130
|
-
#
|
131
|
-
# Get the database connection.
|
132
|
-
#
|
133
|
-
def db_obj
|
134
|
-
o = find_child DB
|
135
|
-
return GlooLang::Objs::Alias.resolve_alias( @engine, o )
|
136
|
-
end
|
137
|
-
|
138
|
-
#
|
139
|
-
# Get the SQL from the child object.
|
140
|
-
# Returns nil if there is none.
|
141
|
-
#
|
142
|
-
def sql_value
|
143
|
-
o = find_child SQL
|
144
|
-
return nil unless o
|
145
|
-
|
146
|
-
return o.value
|
147
|
-
end
|
148
|
-
|
149
|
-
#
|
150
|
-
# Do something with the result of the SQL Query call.
|
151
|
-
# If there's a result container, we'll create objects in it.
|
152
|
-
# If not, we'll just show the output in the console.
|
153
|
-
#
|
154
|
-
def process_result( data )
|
155
|
-
r = find_child RESULT
|
156
|
-
if r
|
157
|
-
update_result_contaier data
|
158
|
-
else
|
159
|
-
show_result data
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
#
|
164
|
-
# Get the arrya of parameters.
|
165
|
-
# If there is no PARAM container of if it is empty,
|
166
|
-
# we'll return a nil value.
|
167
|
-
#
|
168
|
-
def param_array
|
169
|
-
o = find_child PARAMS
|
170
|
-
return nil unless o
|
171
|
-
|
172
|
-
return nil if o.child_count.zero?
|
173
|
-
|
174
|
-
params = []
|
175
|
-
o.children.each do |p|
|
176
|
-
params << p.value
|
177
|
-
end
|
178
|
-
|
179
|
-
return params
|
180
|
-
end
|
181
|
-
|
182
|
-
#
|
183
|
-
# Show the result of the query in the console.
|
184
|
-
#
|
185
|
-
def show_result( data )
|
186
|
-
return if data.nil?
|
187
|
-
|
188
|
-
if single_row_result?( data )
|
189
|
-
show_single_row( data )
|
190
|
-
else
|
191
|
-
show_rows( data )
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
#
|
196
|
-
# Update the result container with the data from the query.
|
197
|
-
#
|
198
|
-
def update_result_contaier( data )
|
199
|
-
r = find_child RESULT
|
200
|
-
r = GlooLang::Objs::Alias.resolve_alias( @engine, r )
|
201
|
-
data.each_with_index do |row, i|
|
202
|
-
can = r.find_add_child( i.to_s, 'can' )
|
203
|
-
row.each do |k, v|
|
204
|
-
o = can.find_add_child( k, 'untyped' )
|
205
|
-
o.set_value v
|
206
|
-
end
|
207
|
-
end
|
208
|
-
end
|
209
|
-
|
210
|
-
end
|
211
|
-
end
|
212
|
-
end
|