gloo-sqlite 1.4 → 1.6
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/sqlite.rb +44 -40
- metadata +83 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 898b3e180f152ac26fb226f77030e2f3217b0a3a382465e07856cb1d0759e224
|
|
4
|
+
data.tar.gz: 60d2b107df04b32b3dfa8ca8d4eedc9724c9f3bba0ef16a5c4dff97a11e91558
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ca86fe1d4d42834e656e2132fe37e7ef683df49fd4fc611c6908ffc25328cd195b4edab30616dba8c80954d408f20de2fb83653e14ab1bbf3217f3b09b0dc5c1
|
|
7
|
+
data.tar.gz: e6b11b592cde0167104d0f66b420b98c538606a46456adf8b233f77f1672c917d64fac8c7057036119017a5a7efc273a99912b154d7fa705e3c44b4ca15aaf36
|
data/lib/sqlite.rb
CHANGED
|
@@ -16,9 +16,13 @@
|
|
|
16
16
|
# replace `db.query()` with `db.get_first_value()`.
|
|
17
17
|
#
|
|
18
18
|
require 'sqlite3'
|
|
19
|
+
require 'db_connection'
|
|
19
20
|
|
|
20
21
|
class Sqlite < Gloo::Core::Obj
|
|
21
22
|
|
|
23
|
+
# Shared driver behaviour from gloo-db: errors, verify, setup problems.
|
|
24
|
+
include DbConnection
|
|
25
|
+
|
|
22
26
|
KEYWORD = 'sqlite'.freeze
|
|
23
27
|
KEYWORD_SHORT = 'sqlite'.freeze
|
|
24
28
|
|
|
@@ -93,9 +97,22 @@ class Sqlite < Gloo::Core::Obj
|
|
|
93
97
|
return
|
|
94
98
|
end
|
|
95
99
|
|
|
96
|
-
|
|
100
|
+
verify_connection do
|
|
101
|
+
db = SQLite3::Database.open name
|
|
102
|
+
begin
|
|
103
|
+
db.get_first_value "SELECT COUNT(name) FROM sqlite_master WHERE type='table'"
|
|
104
|
+
ensure
|
|
105
|
+
db.close
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
97
109
|
|
|
98
|
-
|
|
110
|
+
#
|
|
111
|
+
# The exception classes that are database errors (DbConnection):
|
|
112
|
+
# Query reports these as 'Query failed: …'.
|
|
113
|
+
#
|
|
114
|
+
def database_errors
|
|
115
|
+
return [ SQLite3::Exception ]
|
|
99
116
|
end
|
|
100
117
|
|
|
101
118
|
# ---------------------------------------------------------------------
|
|
@@ -108,28 +125,32 @@ class Sqlite < Gloo::Core::Obj
|
|
|
108
125
|
#
|
|
109
126
|
def query( sql, params = nil )
|
|
110
127
|
name = db_value
|
|
111
|
-
|
|
112
|
-
@engine.err DB_REQUIRED_ERR
|
|
113
|
-
return
|
|
114
|
-
end
|
|
128
|
+
return setup_err( DB_REQUIRED_ERR ) if name.empty?
|
|
115
129
|
|
|
130
|
+
# A database file that doesn't exist is created.
|
|
116
131
|
db = SQLite3::Database.open name
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
132
|
+
begin
|
|
133
|
+
results = db.query( sql, params )
|
|
134
|
+
|
|
135
|
+
rows = []
|
|
136
|
+
while ( row = results.next ) do
|
|
137
|
+
rows << row
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Return [ column names, rows ] - the same shape as gloo-mysql and
|
|
141
|
+
# gloo-pg, so callers (Query, Table) can treat every backend alike.
|
|
142
|
+
return [ results.columns, rows ]
|
|
143
|
+
ensure
|
|
144
|
+
results&.close
|
|
145
|
+
db.close
|
|
146
|
+
end
|
|
121
147
|
end
|
|
122
148
|
|
|
123
|
-
#
|
|
149
|
+
#
|
|
124
150
|
# Based on the result set, build a QueryResult object.
|
|
125
|
-
#
|
|
151
|
+
#
|
|
126
152
|
def get_query_result( result )
|
|
127
|
-
|
|
128
|
-
while ( row = result.next ) do
|
|
129
|
-
rows << row
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
return QueryResult.new( result.columns, rows )
|
|
153
|
+
return QueryResult.new( result[0], result[1], @engine )
|
|
133
154
|
end
|
|
134
155
|
|
|
135
156
|
|
|
@@ -141,30 +162,13 @@ class Sqlite < Gloo::Core::Obj
|
|
|
141
162
|
|
|
142
163
|
#
|
|
143
164
|
# Get the Database file from the child object.
|
|
144
|
-
# Returns
|
|
165
|
+
# Returns '' if there is none.
|
|
145
166
|
#
|
|
146
167
|
def db_value
|
|
147
168
|
o = find_child DB
|
|
148
|
-
return
|
|
169
|
+
return '' unless o
|
|
149
170
|
|
|
150
|
-
return o.value
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
#
|
|
154
|
-
# Try the connection and make sure it works.
|
|
155
|
-
# Returns true if we can connect and do a query.
|
|
156
|
-
#
|
|
157
|
-
def connects?
|
|
158
|
-
begin
|
|
159
|
-
db = SQLite3::Database.open db_value
|
|
160
|
-
sql = "SELECT COUNT(name) FROM sqlite_master WHERE type='table'"
|
|
161
|
-
db.get_first_value sql
|
|
162
|
-
rescue => e
|
|
163
|
-
@engine.log_exception e
|
|
164
|
-
@engine.heap.it.set_to false
|
|
165
|
-
return false
|
|
166
|
-
end
|
|
167
|
-
return true
|
|
171
|
+
return o.value.to_s
|
|
168
172
|
end
|
|
169
173
|
|
|
170
174
|
# ---------------------------------------------------------------------
|
|
@@ -180,10 +184,10 @@ class Sqlite < Gloo::Core::Obj
|
|
|
180
184
|
:shortcut => KEYWORD_SHORT,
|
|
181
185
|
:description => 'A Sqlite3 database connection.',
|
|
182
186
|
:children => [
|
|
183
|
-
"database (string) — Default: '#{DEFAULT_DB}'. The path to the database file."
|
|
187
|
+
"database (string) — Default: '#{DEFAULT_DB}'. The path to the database file. A query on a file that does not exist creates a new, empty database there."
|
|
184
188
|
],
|
|
185
189
|
:messages => [
|
|
186
|
-
'verify — Verify that the database connection can be established.'
|
|
190
|
+
'verify — Verify that the database connection can be established. It is true if it can, false if not: no database name, a file that does not exist, or a file that is not a database (with the reason in the error).'
|
|
187
191
|
],
|
|
188
192
|
:examples => <<~EXAMPLES.strip
|
|
189
193
|
sqlite [can] :
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gloo-sqlite
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '1.
|
|
4
|
+
version: '1.6'
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eric Crane
|
|
@@ -29,6 +29,88 @@ dependencies:
|
|
|
29
29
|
- - ">="
|
|
30
30
|
- !ruby/object:Gem::Version
|
|
31
31
|
version: 1.4.2
|
|
32
|
+
- !ruby/object:Gem::Dependency
|
|
33
|
+
name: gloo
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '7.0'
|
|
39
|
+
type: :runtime
|
|
40
|
+
prerelease: false
|
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
+
requirements:
|
|
43
|
+
- - ">="
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '7.0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: gloo-db
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '1.3'
|
|
53
|
+
type: :runtime
|
|
54
|
+
prerelease: false
|
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '1.3'
|
|
60
|
+
- !ruby/object:Gem::Dependency
|
|
61
|
+
name: bundler
|
|
62
|
+
requirement: !ruby/object:Gem::Requirement
|
|
63
|
+
requirements:
|
|
64
|
+
- - ">="
|
|
65
|
+
- !ruby/object:Gem::Version
|
|
66
|
+
version: '0'
|
|
67
|
+
type: :development
|
|
68
|
+
prerelease: false
|
|
69
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - ">="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '0'
|
|
74
|
+
- !ruby/object:Gem::Dependency
|
|
75
|
+
name: minitest
|
|
76
|
+
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "~>"
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '5.1'
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 5.14.2
|
|
84
|
+
type: :development
|
|
85
|
+
prerelease: false
|
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '5.1'
|
|
91
|
+
- - ">="
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: 5.14.2
|
|
94
|
+
- !ruby/object:Gem::Dependency
|
|
95
|
+
name: rake
|
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - "~>"
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '13.0'
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: 13.0.1
|
|
104
|
+
type: :development
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - "~>"
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '13.0'
|
|
111
|
+
- - ">="
|
|
112
|
+
- !ruby/object:Gem::Version
|
|
113
|
+
version: 13.0.1
|
|
32
114
|
description: Adds SQLite support to Gloo.
|
|
33
115
|
email:
|
|
34
116
|
- eric.crane@mac.com
|