pg_conn 0.4.1 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/TODO +7 -4
  3. data/lib/pg_conn/version.rb +1 -1
  4. data/lib/pg_conn.rb +13 -10
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e9c82eb8c1dc8b48877759c39ecd0f3f0d2a8bb5f37abfffd0969208c1718cd4
4
- data.tar.gz: b003f7990a98a8a63e9bd847ffdb2b44d3de9b61067c37189a8267efd3872346
3
+ metadata.gz: 6e3c08d86eff1bd5cc3d8d40024dad64bf5879f14e56f20a5facdcc8abf3cc72
4
+ data.tar.gz: ff23710aa798488f0ad6b18bea834c7b396d54e211bb19af800b8f66d7378430
5
5
  SHA512:
6
- metadata.gz: 988688435e1c6aa8026772cc4813537101e410c86a4c032dd8369d271a5d519209c7b9ff61d132421d2fb42a4c5cfe533b3b6e994adc2039b930203f3279aad7
7
- data.tar.gz: 696363e3cc63c7fc1986d1c898053c012c524179a40817eb632a0080669bae948f3f32d97abb5691a8a194042d100a688626d8f12525197ddbe3e42d92d4badb
6
+ metadata.gz: e5505ad838a108abdcf146ec2da0ca255bf9931b8ff786d796eced468c5bc00a0222e1a2fb7aca7e6e9ac758ea187bbb253c5b536e51a485e8e54b8da71bb886
7
+ data.tar.gz: b336099c4158450ef646a022b76d4cbc72399e6b4dfb34fd6905317fd11168459b0d51f4105152df5ccae8135cedf8bd01322733859a45e446a711a952848fab
data/TODO CHANGED
@@ -1,11 +1,14 @@
1
1
  TODO
2
- o Option to accept no records when using #value, #tuple, and #struct. The
3
- alternative is to use the 'one-table' as base table in the query and then
4
- left join the rest
5
- o Implement search_path
2
+ o Use SQL parameters. Optionally with a different syntax:
3
+ $var - Value that gets single-quoted
4
+ @var - Identifier that gets double-quoted (@ for "attribute")
5
+ o Option to accept no records when using #value, #tuple, and #struct. Maybe
6
+ value?, tuple?, struct?. The alternative is to use the 'one-table' as base
7
+ table in the query and then left join the rest
6
8
  o Proper implementation of call of functions and procedures: Functions should
7
9
  be called through #value, #tuple etc. and procedures through #call.
8
10
  Proceduer output parameters needs handling too
11
+ o Implement search_path
9
12
  o Create an abstract PgConnBase and have PgStmts (writes statements to array)
10
13
  and PgConn (sends statements to server) classes derived from it
11
14
  o fix silent
@@ -1,3 +1,3 @@
1
1
  module PgConn
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.4"
3
3
  end
data/lib/pg_conn.rb CHANGED
@@ -219,10 +219,12 @@ module PgConn
219
219
  # Return true if the table or the result of the query is empty
220
220
  def empty?(arg, where_clause = nil)
221
221
  if arg =~ /\s/
222
- count("select 1 from (#{arg}) as inner_query")
222
+ value "select count(*) from (#{arg} limit 1) as inner_query"
223
+ elsif where_clause
224
+ value "select count(*) from (select 1 from #{arg} where #{where_clause} limit 1) as inner_query"
223
225
  else
224
- count("select 1 from #{arg}" + (where_clause ? " where #{where_clause}" : ""))
225
- end == 1
226
+ value "select count(*) from (select 1 from #{arg} limit 1) as inner_query"
227
+ end == 0
226
228
  end
227
229
 
228
230
  # :call-seq:
@@ -433,20 +435,21 @@ module PgConn
433
435
  end
434
436
 
435
437
  # Return the value of calling the given function (which can be a String or
436
- # a Symbol). It dynamically detects the structure of the result and return
437
- # a value or an array of values if the result contained only one column
438
- # (like #value or #values), a tuple if the record has multiple columns
439
- # (like #tuple), and an array of of tuples if the result contained more
440
- # than one record with multiple columns (like #tuples)
438
+ # a Symbol and can contain the schema of the function). It dynamically
439
+ # detects the structure of the result and return a value or an array of
440
+ # values if the result contained only one column (like #value or #values),
441
+ # a tuple if the record has multiple columns (like #tuple), and an array of
442
+ # of tuples if the result contained more than one record with multiple
443
+ # columns (like #tuples)
441
444
  #
442
- def call(name, *args, proc: false)
445
+ def call(name, *args, proc: false) # :proc may interfere with hashes
443
446
  args_sql = args.map { |arg| # TODO: Use pg's encoder
444
447
  case arg
445
448
  when NilClass; "null"
446
449
  when String; "'#{arg}'"
447
450
  when Integer; arg
448
451
  when TrueClass, FalseClass; arg
449
- when Array; raise NotImplementedError
452
+ when Array; "Array['#{arg.join("', '")}']" # Quick and dirty # FIXME
450
453
  when Hash; raise NotImplementedError
451
454
  else
452
455
  raise ArgumentError, "Unrecognized value: #{arg.inspect}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg_conn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-01 00:00:00.000000000 Z
11
+ date: 2022-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg