sequel-fusiontables 0.0.2 → 0.0.3

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.
@@ -10,16 +10,34 @@ module Sequel
10
10
  FusionTables::Dataset.new(self, opts)
11
11
  end
12
12
 
13
- def execute(sql, opts={}, &block)
13
+ def execute(sql, opts = {}, &block)
14
14
  _execute(:select, sql, opts, &block)
15
15
  end
16
16
 
17
+ def execute_insert(sql, opts = {})
18
+ _execute(:insert, sql, opts)
19
+ end
20
+
21
+ def execute_dui(sql, opts = {})
22
+ _execute(:update, sql, opts)
23
+ end
24
+
17
25
  def self.uri_to_options(uri)
18
- {:database => uri.registry}
26
+ {:email => uri.user, :password => uri.password}
19
27
  end
20
28
 
21
29
  def connect(server)
22
- ::FusionTables::Connection.new
30
+ connection = ::FusionTables::Connection.new
31
+
32
+ if opts[:email]
33
+ connection.authenticate(opts[:email], opts[:password])
34
+ end
35
+
36
+ connection
37
+ end
38
+
39
+ def identifier_input_method_default
40
+ nil
23
41
  end
24
42
 
25
43
  protected
@@ -32,6 +50,11 @@ module Sequel
32
50
  case type
33
51
  when :select
34
52
  log_yield(sql, log_args) { yield(conn.query(sql)) }
53
+ when :insert
54
+ result = log_yield(sql, log_args) { conn.query(sql) }
55
+ result[1][0]
56
+ when :update
57
+ result = log_yield(sql, log_args) { conn.query(sql) }
35
58
  end
36
59
  end
37
60
  rescue ::FusionTables::Error => e
@@ -52,6 +75,14 @@ module Sequel
52
75
  end
53
76
  end
54
77
 
78
+ def quoted_identifier(name)
79
+ ::FusionTables::Connection.quote(name)
80
+ end
81
+
82
+ def literal_string(string)
83
+ ::FusionTables::Connection.quote(string)
84
+ end
85
+
55
86
  def fetch_rows(sql)
56
87
  execute(sql) do |result|
57
88
  @columns = result.shift
@@ -1,12 +1,12 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "sequel-fusiontables"
3
- s.version = "0.0.2"
3
+ s.version = "0.0.3"
4
4
  s.summary = "Fusion Tables adapter for Sequel"
5
5
  s.authors = ["Damian Janowski"]
6
6
  s.email = ["djanowski@dimaion.com"]
7
7
  s.homepage = "http://github.com/djanowski/sequel-fusiontables"
8
8
 
9
- s.add_dependency("ft")
9
+ s.add_dependency("ft", ">= 0.0.2")
10
10
  s.add_dependency("sequel")
11
11
 
12
12
  s.files = Dir[
@@ -34,3 +34,9 @@ test "Fusion Tables errors" do |db|
34
34
  db.select("Foo").all
35
35
  end
36
36
  end
37
+
38
+ test "non-SELECT raises errors" do |db|
39
+ assert_raise(Sequel::DatabaseError) do
40
+ db.insert(foo: "bar")
41
+ end
42
+ end
@@ -0,0 +1,56 @@
1
+ require "cutest"
2
+ require "sequel"
3
+
4
+ $LOAD_PATH.unshift(File.expand_path("../../../lib", File.dirname(__FILE__)))
5
+
6
+ require "ft"
7
+
8
+ class FusionTables::Connection
9
+ def authenticate(email, password)
10
+ $credentials = {:email => email, :password => password}
11
+ end
12
+
13
+ def query(sql)
14
+ $queries << sql
15
+ [["rowid"], [$queries.size]]
16
+ end
17
+ end
18
+
19
+ setup do
20
+ $queries = []
21
+
22
+ [Sequel.connect("fusiontables:///")[1310767], $queries]
23
+ end
24
+
25
+ test "INSERT" do |db, queries|
26
+ assert_equal queries.size, 0
27
+
28
+ id = db.insert(foo: "bar")
29
+
30
+ assert_equal queries.last, "INSERT INTO 1310767 ('foo') VALUES ('bar')"
31
+ assert_equal id, 1
32
+
33
+ id = db.insert("Foo" => "bar's")
34
+
35
+ assert_equal queries.last, "INSERT INTO 1310767 ('Foo') VALUES ('bar\\'s')"
36
+ assert_equal id, 2
37
+ end
38
+
39
+ test "UPDATE" do |db, queries|
40
+ db.filter(rowid: "1").update(foo: "bar")
41
+
42
+ assert_equal queries.last, "UPDATE 1310767 SET 'foo' = 'bar' WHERE 'rowid' = '1'"
43
+ end
44
+
45
+ test "DELETE" do |db, queries|
46
+ db.filter(rowid: "1").delete
47
+
48
+ assert_equal queries.last, "DELETE FROM 1310767 WHERE 'rowid' = '1'"
49
+ end
50
+
51
+ test "authentication" do
52
+ Sequel.connect("fusiontables://foo%40bar.com:p4wned@fusiontables")[1310767].all
53
+
54
+ assert_equal $credentials[:email], "foo@bar.com"
55
+ assert_equal $credentials[:password], "p4wned"
56
+ end
metadata CHANGED
@@ -2,42 +2,42 @@
2
2
  name: sequel-fusiontables
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
- - Damian Janowski
8
+ - Damian Janowski
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-18 00:00:00 -03:00
13
+ date: 2011-08-29 00:00:00 -03:00
14
14
  default_executable:
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: ft
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
20
- none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
25
- type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: sequel
29
- prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
31
- none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
36
- type: :runtime
37
- version_requirements: *id002
16
+ - !ruby/object:Gem::Dependency
17
+ name: ft
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.0.2
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: sequel
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
38
  description:
39
39
  email:
40
- - djanowski@dimaion.com
40
+ - djanowski@dimaion.com
41
41
  executables: []
42
42
 
43
43
  extensions: []
@@ -45,11 +45,12 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
 
47
47
  files:
48
- - sequel-fusiontables.gemspec
49
- - UNLICENSE
50
- - README.md
51
- - lib/sequel/adapters/fusiontables.rb
52
- - test/sequel/adapters/fusiontables.rb
48
+ - sequel-fusiontables.gemspec
49
+ - UNLICENSE
50
+ - README.md
51
+ - lib/sequel/adapters/fusiontables.rb
52
+ - test/sequel/adapters/fusiontables.rb
53
+ - test/sequel/adapters/mocked.rb
53
54
  has_rdoc: true
54
55
  homepage: http://github.com/djanowski/sequel-fusiontables
55
56
  licenses: []
@@ -58,23 +59,23 @@ post_install_message:
58
59
  rdoc_options: []
59
60
 
60
61
  require_paths:
61
- - lib
62
+ - lib
62
63
  required_ruby_version: !ruby/object:Gem::Requirement
63
64
  none: false
64
65
  requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: "0"
68
69
  required_rubygems_version: !ruby/object:Gem::Requirement
69
70
  none: false
70
71
  requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: "0"
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: "0"
74
75
  requirements: []
75
76
 
76
77
  rubyforge_project:
77
- rubygems_version: 1.5.1
78
+ rubygems_version: 1.6.2
78
79
  signing_key:
79
80
  specification_version: 3
80
81
  summary: Fusion Tables adapter for Sequel