fluiddb 0.0.17 → 0.0.18

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.
Files changed (2) hide show
  1. data/lib/FluidDb/TinyTds.rb +97 -0
  2. metadata +3 -2
@@ -0,0 +1,97 @@
1
+ require "FluidDb"
2
+ require "tiny_tds"
3
+
4
+ module FluidDb
5
+
6
+ class TinyTds<Base
7
+
8
+ # Connect to Db.
9
+ #
10
+ # @param [String] uri a location for the resource to which we will attach, eg tinytds://user:pass@127.0.0.1
11
+ def connect()
12
+ uri = @uri
13
+ raise "Unsupported uri. Please update freetds.conf and use format tinytds://<user>:<pass>@<dataserver>" unless uri.path == ""
14
+
15
+ dataserver = uri.host
16
+ username = uri.user
17
+ password = uri.password
18
+
19
+ puts "#{username}, #{password}, #{dataserver}"
20
+
21
+ @connection = ::TinyTds::Client.new( :username => username, :password => password, :dataserver => dataserver )
22
+ end
23
+
24
+ def close
25
+ @connection.close
26
+ end
27
+
28
+ def queryForArray( sql, params )
29
+ sql = self.format_to_sql( sql, params )
30
+ results = @connection.exec(sql)
31
+
32
+ count = 0
33
+ tuple = ""
34
+ results.each do |row|
35
+ count = count + 1
36
+ raise FluidDb::TooManyRowsError.new if count > 1
37
+
38
+ tuple = row
39
+ end
40
+
41
+ raise FluidDb::NoDataFoundError.new if count == 0
42
+
43
+ return tuple
44
+ end
45
+
46
+ def queryForValue( sql, params )
47
+ sql = self.format_to_sql( sql, params )
48
+ results = @connection.exec(sql)
49
+
50
+ count = 0
51
+ value = ""
52
+ results.each do |row|
53
+ count = count + 1
54
+ raise FluidDb::TooManyRowsError.new if count > 1
55
+
56
+ value = row[results.fields[0]]
57
+ end
58
+
59
+ raise FluidDb::NoDataFoundError.new if count == 0
60
+
61
+ return value
62
+ end
63
+
64
+
65
+ def queryForResultset( sql, params )
66
+ sql = self.format_to_sql( sql, params )
67
+ results = @connection.exec(sql)
68
+
69
+ list = Array.new
70
+ results.each do |row|
71
+ list << row
72
+ end
73
+
74
+ return list
75
+ end
76
+
77
+
78
+ def execute( sql, params, expected_affected_rows=nil )
79
+ sql = self.format_to_sql( sql, params )
80
+ r = @connection.execute( sql );
81
+ r.each
82
+
83
+ if !expected_affected_rows.nil? and
84
+ r.affected_rows != expected_affected_rows then
85
+ raise ExpectedAffectedRowsError.new( "Expected affected rows, #{expected_affected_rows}, Actual affected rows, #{r.affected_rows}")
86
+ end
87
+ end
88
+
89
+ def insert( sql, params )
90
+ raise "Pgsql uses SEQUENCES, so possibly easier to use 2 executes"
91
+ # self.execute( sql, params )
92
+ #return @connection.last_id
93
+ end
94
+
95
+ end
96
+
97
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluiddb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-20 00:00:00.000000000 Z
12
+ date: 2013-03-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: A semantic layer for db interaction
15
15
  email: guy@guyirvine.com
@@ -22,6 +22,7 @@ files:
22
22
  - lib/FluidDb/Mysql.rb
23
23
  - lib/FluidDb/Mysql2.rb
24
24
  - lib/FluidDb/Pgsql.rb
25
+ - lib/FluidDb/TinyTds.rb
25
26
  - lib/FluidDb.rb
26
27
  - README.md
27
28
  homepage: http://rubygems.org/gems/fluiddb