sequel-fusiontables 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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