fluiddb 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/FluidDb.rb +4 -2
- data/lib/FluidDb/Pgsql.rb +4 -0
- data/lib/FluidDb/TinyTds.rb +13 -1
- metadata +2 -2
data/lib/FluidDb.rb
CHANGED
@@ -18,7 +18,9 @@ module FluidDb
|
|
18
18
|
end
|
19
19
|
class IncorrectNumberOfParametersError<StandardError
|
20
20
|
end
|
21
|
-
|
21
|
+
class DuplicateKeyError<StandardError
|
22
|
+
end
|
23
|
+
|
22
24
|
class Base
|
23
25
|
|
24
26
|
attr_writer :verbose
|
@@ -45,7 +47,7 @@ module FluidDb
|
|
45
47
|
if params.length != sql.count( "?" ) then
|
46
48
|
raise IncorrectNumberOfParametersError.new
|
47
49
|
end
|
48
|
-
|
50
|
+
|
49
51
|
sql_out = ""
|
50
52
|
sql.split( "?" ).each_with_index do |s,idx|
|
51
53
|
sql_out = sql_out + s
|
data/lib/FluidDb/Pgsql.rb
CHANGED
@@ -96,6 +96,10 @@ module FluidDb
|
|
96
96
|
r.cmd_tuples != expected_affected_rows then
|
97
97
|
raise ExpectedAffectedRowsError.new( "Expected affected rows, #{expected_affected_rows}, Actual affected rows, #{r.cmd_tuples}")
|
98
98
|
end
|
99
|
+
rescue PG::Error => e
|
100
|
+
raise DuplicateKeyError.new( e.message ) unless e.message.index( "duplicate key value violates unique constraint" ).nil?
|
101
|
+
|
102
|
+
raise e
|
99
103
|
end
|
100
104
|
|
101
105
|
def insert( sql, params )
|
data/lib/FluidDb/TinyTds.rb
CHANGED
@@ -7,7 +7,7 @@ module FluidDb
|
|
7
7
|
|
8
8
|
# Connect to Db.
|
9
9
|
#
|
10
|
-
# @param [String] uri a location for the resource to which we will attach, eg tinytds
|
10
|
+
# @param [String] uri a location for the resource to which we will attach, eg tinytds://<user>:<pass>@<dataserver>/<database>
|
11
11
|
def connect()
|
12
12
|
uri = @uri
|
13
13
|
|
@@ -16,6 +16,18 @@ module FluidDb
|
|
16
16
|
username = URI.unescape( uri.user )
|
17
17
|
password = uri.password
|
18
18
|
|
19
|
+
|
20
|
+
if dataserver == "" ||
|
21
|
+
database == "" then
|
22
|
+
raise "*** You need to specify both a dataserver and a database for the tinytds driver. Expected format: tinytds://<user>:<pass>@<dataserver>/<database>\n" +
|
23
|
+
"*** The specified dataserver should have an entry in /etc/freetds/freetds.conf"
|
24
|
+
end
|
25
|
+
|
26
|
+
if username == "" ||
|
27
|
+
password == "" then
|
28
|
+
puts "*** Warning - you will normally need to specify both a username and password for the tinytds driver to work correctly."
|
29
|
+
end
|
30
|
+
|
19
31
|
@connection = ::TinyTds::Client.new( :username => username, :password => password, :database => database, :dataserver => dataserver )
|
20
32
|
end
|
21
33
|
|
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.
|
4
|
+
version: 0.0.20
|
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-
|
12
|
+
date: 2013-03-27 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: A semantic layer for db interaction
|
15
15
|
email: guy@guyirvine.com
|