hyperion-sqlite 0.0.1.alpha2
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.
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'hyperion/api'
|
|
2
|
+
|
|
3
|
+
module Hyperion
|
|
4
|
+
module Sqlite
|
|
5
|
+
class DbStrategy
|
|
6
|
+
|
|
7
|
+
def process_result(given_record, result)
|
|
8
|
+
if API.new?(given_record)
|
|
9
|
+
given_record.merge('id' => result.insert_id)
|
|
10
|
+
else
|
|
11
|
+
given_record
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def process_count_result(result)
|
|
16
|
+
result['COUNT(*)']
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
module Hyperion
|
|
2
|
+
module Sqlite
|
|
3
|
+
|
|
4
|
+
class QueryBuilderStrategy
|
|
5
|
+
def quote_tick
|
|
6
|
+
'`'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def apply_limit_and_offset(sql_query, limit, offset)
|
|
10
|
+
limit = limit || 9223372036854775807
|
|
11
|
+
offset = offset || 0
|
|
12
|
+
sql_query.append("LIMIT ?, ?", [offset, limit])
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def normalize_insert(sql_query_str)
|
|
16
|
+
sql_query_str
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def normalize_update(sql_query_str)
|
|
20
|
+
sql_query_str
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def empty_insert_query(table)
|
|
24
|
+
"INSERT INTO #{table} DEFAULT VALUES"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require 'hyperion/sql'
|
|
2
|
+
|
|
3
|
+
module Hyperion
|
|
4
|
+
module Sqlite
|
|
5
|
+
class QueryExecutorStrategy
|
|
6
|
+
|
|
7
|
+
def execute_write(sql_query)
|
|
8
|
+
command = Sql.connection.create_command(sql_query.query_str)
|
|
9
|
+
command.execute_non_query(*sql_query.bind_values)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'hyperion/sql/datastore'
|
|
2
|
+
require 'hyperion/sqlite/query_builder_strategy'
|
|
3
|
+
require 'hyperion/sqlite/query_executor_strategy'
|
|
4
|
+
require 'hyperion/sqlite/db_strategy'
|
|
5
|
+
|
|
6
|
+
module Hyperion
|
|
7
|
+
module Sqlite
|
|
8
|
+
|
|
9
|
+
def self.create_datastore
|
|
10
|
+
Sql::Datastore.new(DbStrategy.new, QueryExecutorStrategy.new, QueryBuilderStrategy.new)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'do_sqlite3'
|
|
2
|
+
require 'hyperion/sqlite'
|
|
3
|
+
require 'hyperion/sql'
|
|
4
|
+
require 'hyperion/dev/ds_spec'
|
|
5
|
+
require 'hyperion/sql/transaction_spec'
|
|
6
|
+
|
|
7
|
+
describe Hyperion::Sqlite do
|
|
8
|
+
|
|
9
|
+
def execute(query)
|
|
10
|
+
Hyperion::Sql.connection.create_command(query).execute_non_query
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create_table(table_name)
|
|
14
|
+
execute <<-QUERY
|
|
15
|
+
CREATE TABLE #{table_name} (
|
|
16
|
+
id INTEGER PRIMARY KEY,
|
|
17
|
+
name VARCHAR(35),
|
|
18
|
+
inti INTEGER,
|
|
19
|
+
data VARCHAR(32)
|
|
20
|
+
);
|
|
21
|
+
QUERY
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def drop_table(table_name)
|
|
25
|
+
execute "DROP TABLE IF EXISTS #{table_name};"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
around :each do |example|
|
|
29
|
+
Hyperion::Sql.with_connection('sqlite3::memory:') do |connection|
|
|
30
|
+
Hyperion::API.datastore = Hyperion::Sqlite.create_datastore
|
|
31
|
+
example.run
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context 'Datastore' do
|
|
36
|
+
around :each do |example|
|
|
37
|
+
Hyperion::Sql.rollback do
|
|
38
|
+
tables = ['testing', 'other_testing']
|
|
39
|
+
tables.each do |table|
|
|
40
|
+
create_table(table)
|
|
41
|
+
end
|
|
42
|
+
example.run
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
include_examples 'Datastore'
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it_behaves_like 'Sql Transactions'
|
|
50
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: hyperion-sqlite
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1.alpha2
|
|
5
|
+
prerelease: 6
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- 8th Light, Inc.
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2012-09-17 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: rspec
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - '='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: 2.11.0
|
|
22
|
+
type: :development
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - '='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 2.11.0
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: hyperion-sql
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - '='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: 0.0.1.alpha2
|
|
38
|
+
type: :runtime
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - '='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 0.0.1.alpha2
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: do_sqlite3
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - '='
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 0.10.8
|
|
54
|
+
type: :runtime
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - '='
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 0.10.8
|
|
62
|
+
description: SQLite Datastore for Hyperion
|
|
63
|
+
email:
|
|
64
|
+
- myles@8thlight.com
|
|
65
|
+
executables: []
|
|
66
|
+
extensions: []
|
|
67
|
+
extra_rdoc_files: []
|
|
68
|
+
files:
|
|
69
|
+
- lib/hyperion/sqlite.rb
|
|
70
|
+
- lib/hyperion/sqlite/db_strategy.rb
|
|
71
|
+
- lib/hyperion/sqlite/query_executor_strategy.rb
|
|
72
|
+
- lib/hyperion/sqlite/query_builder_strategy.rb
|
|
73
|
+
- spec/hyperion/sqlite_spec.rb
|
|
74
|
+
homepage: https://github.com/mylesmegyesi/hyperion-ruby
|
|
75
|
+
licenses:
|
|
76
|
+
- Eclipse Public License
|
|
77
|
+
post_install_message:
|
|
78
|
+
rdoc_options: []
|
|
79
|
+
require_paths:
|
|
80
|
+
- lib
|
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
|
+
none: false
|
|
83
|
+
requirements:
|
|
84
|
+
- - ! '>='
|
|
85
|
+
- !ruby/object:Gem::Version
|
|
86
|
+
version: 1.8.7
|
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
|
+
none: false
|
|
89
|
+
requirements:
|
|
90
|
+
- - ! '>'
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: 1.3.1
|
|
93
|
+
requirements: []
|
|
94
|
+
rubyforge_project:
|
|
95
|
+
rubygems_version: 1.8.24
|
|
96
|
+
signing_key:
|
|
97
|
+
specification_version: 3
|
|
98
|
+
summary: SQLite Datastore for Hyperion
|
|
99
|
+
test_files:
|
|
100
|
+
- spec/hyperion/sqlite_spec.rb
|