gloo-sqlite 1.5 → 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 +40 -38
- 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,23 +125,25 @@ 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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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
|
|
123
146
|
end
|
|
124
|
-
|
|
125
|
-
# Return [ column names, rows ] - the same shape as gloo-mysql and
|
|
126
|
-
# gloo-pg, so callers (Query, Table) can treat every backend alike.
|
|
127
|
-
return [ results.columns, rows ]
|
|
128
147
|
end
|
|
129
148
|
|
|
130
149
|
#
|
|
@@ -143,30 +162,13 @@ class Sqlite < Gloo::Core::Obj
|
|
|
143
162
|
|
|
144
163
|
#
|
|
145
164
|
# Get the Database file from the child object.
|
|
146
|
-
# Returns
|
|
165
|
+
# Returns '' if there is none.
|
|
147
166
|
#
|
|
148
167
|
def db_value
|
|
149
168
|
o = find_child DB
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
return o.value
|
|
153
|
-
end
|
|
169
|
+
return '' unless o
|
|
154
170
|
|
|
155
|
-
|
|
156
|
-
# Try the connection and make sure it works.
|
|
157
|
-
# Returns true if we can connect and do a query.
|
|
158
|
-
#
|
|
159
|
-
def connects?
|
|
160
|
-
begin
|
|
161
|
-
db = SQLite3::Database.open db_value
|
|
162
|
-
sql = "SELECT COUNT(name) FROM sqlite_master WHERE type='table'"
|
|
163
|
-
db.get_first_value sql
|
|
164
|
-
rescue => e
|
|
165
|
-
@engine.log_exception e
|
|
166
|
-
@engine.heap.it.set_to false
|
|
167
|
-
return false
|
|
168
|
-
end
|
|
169
|
-
return true
|
|
171
|
+
return o.value.to_s
|
|
170
172
|
end
|
|
171
173
|
|
|
172
174
|
# ---------------------------------------------------------------------
|
|
@@ -182,10 +184,10 @@ class Sqlite < Gloo::Core::Obj
|
|
|
182
184
|
:shortcut => KEYWORD_SHORT,
|
|
183
185
|
:description => 'A Sqlite3 database connection.',
|
|
184
186
|
:children => [
|
|
185
|
-
"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."
|
|
186
188
|
],
|
|
187
189
|
:messages => [
|
|
188
|
-
'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).'
|
|
189
191
|
],
|
|
190
192
|
:examples => <<~EXAMPLES.strip
|
|
191
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
|