pg_helper 0.2.0 → 0.2.1
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.
- data/HISTORY.md +8 -0
- data/README.md +14 -0
- data/lib/pg_helper/query_helper.rb +36 -2
- data/lib/pg_helper/version.rb +3 -1
- data/lib/pg_helper.rb +1 -1
- data/pg_helper.gemspec +5 -3
- metadata +34 -5
- data/VERSION +0 -1
data/HISTORY.md
ADDED
data/README.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
PgHelper
|
2
|
+
=============
|
3
|
+
|
4
|
+
Because sometimes I don't want ActiveRecord to parse all fields, nor think about connection.
|
5
|
+
All features are actually provided by [Pg gem](http://rubygems.org/gems/pg)
|
6
|
+
|
7
|
+
|
8
|
+
Features
|
9
|
+
-------
|
10
|
+
|
11
|
+
* Small
|
12
|
+
* Ability to pass query params to PostgreSql
|
13
|
+
* No parsing of strings
|
14
|
+
* also works as rails plugin `rails plugin install https://github.com/webervin/pg_helper.git`
|
@@ -1,20 +1,44 @@
|
|
1
|
-
|
1
|
+
#Main module of PgHelper gem/plugin
|
2
2
|
module PgHelper
|
3
|
+
|
4
|
+
#Indicates that query returned unexpected columnt count
|
3
5
|
class PgHelperErrorInvalidColumnCount < PGError; end
|
6
|
+
|
7
|
+
#Indicates that query returned too much rows
|
4
8
|
class PgHelperErrorInvalidRowCount < PGError; end
|
9
|
+
|
10
|
+
# Indicates that transaction was called while inside transaction
|
5
11
|
class PgHelperErrorNestedTransactionNotAllowed < PGError; end
|
12
|
+
|
13
|
+
#For use inside transaction to cause rollback.
|
6
14
|
class PgHelperErrorRollback < PGError; end
|
15
|
+
|
16
|
+
#Indicates that call is invalid outside transaction
|
7
17
|
class PgHelperErrorInvalidOutsideTransaction < PGError; end
|
18
|
+
|
19
|
+
#Invalid argument
|
8
20
|
class PgHelperErrorParamsMustBeArrayOfStrings < PGError; end
|
9
21
|
|
22
|
+
#Main api class
|
10
23
|
class QueryHelper
|
11
|
-
attr_accessor :connection_params, :pg_connection
|
12
24
|
|
25
|
+
# @return [Hash] connection params
|
26
|
+
attr_accessor :connection_params
|
27
|
+
|
28
|
+
# Active database connection
|
29
|
+
# @return [PGconn] connection see {http://rubygems.org/gems/pg Pg gem on rubygems} for details
|
30
|
+
attr_accessor :pg_connection
|
31
|
+
|
32
|
+
|
33
|
+
# Creates a new instance of the QueryHelper
|
13
34
|
def initialize(params)
|
14
35
|
@connection_params = params
|
15
36
|
reconnect
|
16
37
|
end
|
17
38
|
|
39
|
+
# @param [String] query SQL select that should return one cell, may include $1, $2 etc to be replaced by arguments
|
40
|
+
# @param [Array<String>] params query arguments to be passed on to PostgreSql
|
41
|
+
# @return [String]
|
18
42
|
def value(query, params = [])
|
19
43
|
exec(query, params) do |pg_result|
|
20
44
|
verify_single_cell!(pg_result)
|
@@ -22,6 +46,9 @@ class QueryHelper
|
|
22
46
|
end
|
23
47
|
end
|
24
48
|
|
49
|
+
# @param [String] query SQL select that should return one column, may include $1, $2 etc to be replaced by arguments
|
50
|
+
# @param [Array<String>] params query arguments to be passed on to PostgreSql
|
51
|
+
# @return [Array<String>] Values of selected column
|
25
52
|
def get_column(query, params = [])
|
26
53
|
exec(query, params) do |pg_result|
|
27
54
|
require_single_column!(pg_result)
|
@@ -29,17 +56,24 @@ class QueryHelper
|
|
29
56
|
end
|
30
57
|
end
|
31
58
|
|
59
|
+
# @param [String] query SQL update, may include $1, $2 etc to be replaced by arguments
|
60
|
+
# @param [Array<String>] params query arguments to be passed on to PostgreSql
|
61
|
+
# @return [Integer] Number of rows changed
|
32
62
|
def modify(query, params = [])
|
33
63
|
exec(query, params) do |pg_result|
|
34
64
|
pg_result.cmd_tuples
|
35
65
|
end
|
36
66
|
end
|
37
67
|
|
68
|
+
# Executes content of given block inside database transaction
|
69
|
+
#@yield [QueryHelper]
|
38
70
|
def transaction(&block)
|
39
71
|
verify_transaction_possible!(&block)
|
40
72
|
perform_transaction(&block)
|
41
73
|
end
|
42
74
|
|
75
|
+
# Aborts current transaction, or raises exception if invoked outside transaction.
|
76
|
+
#@return [void]
|
43
77
|
def rollback!
|
44
78
|
raise PgHelperErrorInvalidOutsideTransaction if connection_idle?
|
45
79
|
raise PgHelperErrorRollback.new
|
data/lib/pg_helper/version.rb
CHANGED
data/lib/pg_helper.rb
CHANGED
data/pg_helper.gemspec
CHANGED
@@ -9,11 +9,10 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.authors = ["Ervin"]
|
10
10
|
s.email = %q{webervin@gmail.com}
|
11
11
|
s.homepage = %q{http://github.com/webervin/pg_helper}
|
12
|
+
s.rubyforge_project = "pg_helper"
|
12
13
|
s.summary = %q{Tiny wraper for 'pg' gem}
|
13
14
|
s.description = %q{Makes even easier to use postgresql without activerecord}
|
14
|
-
|
15
|
-
|
16
|
-
s.rubyforge_project = "pg_helper"
|
15
|
+
s.has_rdoc = 'yard'
|
17
16
|
|
18
17
|
s.files = `git ls-files`.split("\n")
|
19
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -27,4 +26,7 @@ Gem::Specification.new do |s|
|
|
27
26
|
s.add_development_dependency 'wirble'
|
28
27
|
s.add_development_dependency 'metric_fu'
|
29
28
|
s.add_development_dependency 'ZenTest'
|
29
|
+
s.add_development_dependency 'yard'
|
30
|
+
s.add_development_dependency 'bluecloth' #yard hidden dependency
|
31
|
+
|
30
32
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 1
|
10
|
+
version: 0.2.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ervin
|
@@ -102,6 +102,34 @@ dependencies:
|
|
102
102
|
version: "0"
|
103
103
|
version_requirements: *id006
|
104
104
|
name: ZenTest
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
prerelease: false
|
107
|
+
type: :development
|
108
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
117
|
+
version_requirements: *id007
|
118
|
+
name: yard
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
prerelease: false
|
121
|
+
type: :development
|
122
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
version: "0"
|
131
|
+
version_requirements: *id008
|
132
|
+
name: bluecloth
|
105
133
|
description: Makes even easier to use postgresql without activerecord
|
106
134
|
email: webervin@gmail.com
|
107
135
|
executables: []
|
@@ -113,8 +141,9 @@ extra_rdoc_files: []
|
|
113
141
|
files:
|
114
142
|
- .gitignore
|
115
143
|
- Gemfile
|
144
|
+
- HISTORY.md
|
145
|
+
- README.md
|
116
146
|
- Rakefile
|
117
|
-
- VERSION
|
118
147
|
- autotest/discover.rb
|
119
148
|
- init.rb
|
120
149
|
- lib/pg_helper.rb
|
@@ -123,7 +152,7 @@ files:
|
|
123
152
|
- pg_helper.gemspec
|
124
153
|
- spec/lib/pg_helper_spec.rb
|
125
154
|
- spec/spec_helper.rb
|
126
|
-
has_rdoc:
|
155
|
+
has_rdoc: yard
|
127
156
|
homepage: http://github.com/webervin/pg_helper
|
128
157
|
licenses: []
|
129
158
|
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.1.0
|