pg_conn 0.27.0 → 0.28.0
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.
- checksums.yaml +4 -4
- data/lib/pg_conn/version.rb +1 -1
- data/lib/pg_conn.rb +22 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ecec863d9bc5362325174cc0b8808850857fb6458bf7ebfe935d4c1c7fed8f1
|
4
|
+
data.tar.gz: cd377b8f0b6b52dd315643a25e5a965f14f28602ac1e804ec5f14ed65e3dc7fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8c2acce15051e71533db05379da6939882e5e077f1c002cdce9f904bc026b5c09b317d5a948ca0341ed7af1b6ef4a5a974c3dfed3edd96333aa90bc169c97d7
|
7
|
+
data.tar.gz: 827c0194d8a9897ccc27b5acb7b8c2210a0a7ca611648b9acb0852f09afd3c7378e014552256fede9e8da635f22fd475d923eb67b06231adaaf01bc5f6d5d366
|
data/lib/pg_conn/version.rb
CHANGED
data/lib/pg_conn.rb
CHANGED
@@ -31,6 +31,10 @@ module PgConn
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
# Used to mark strings as literals that should not be quoted. This is the
|
35
|
+
# case for row and record values
|
36
|
+
class Literal < String; end
|
37
|
+
|
34
38
|
# All results from the database are converted into native Ruby types
|
35
39
|
class Connection
|
36
40
|
# Make PgConn::Connection pretend to be an instance of the PgConn module
|
@@ -246,6 +250,8 @@ module PgConn
|
|
246
250
|
end
|
247
251
|
end
|
248
252
|
|
253
|
+
def literal(arg) Literal.new(arg) end
|
254
|
+
|
249
255
|
# Quote argument as an identifier. The argument should be a non-nil string
|
250
256
|
# or a symbol
|
251
257
|
def quote_identifier(s)
|
@@ -274,6 +280,7 @@ module PgConn
|
|
274
280
|
#
|
275
281
|
def quote_value(value, elem_type: nil)
|
276
282
|
case value
|
283
|
+
when Literal; value
|
277
284
|
when String; @pg_connection.escape_literal(value)
|
278
285
|
when Integer, Float; value.to_s
|
279
286
|
when true, false; value.to_s
|
@@ -363,6 +370,13 @@ module PgConn
|
|
363
370
|
value("select count(*) from (#{inner_query}) as inner_query")
|
364
371
|
end
|
365
372
|
|
373
|
+
# TODO (but breaks a lot of code)
|
374
|
+
# value 1
|
375
|
+
# value? 0 or 1
|
376
|
+
#
|
377
|
+
# values 1 or more
|
378
|
+
# values? 0 or more
|
379
|
+
|
366
380
|
# Return a single value. It is an error if the query doesn't return a
|
367
381
|
# single record with a single column.
|
368
382
|
#
|
@@ -983,7 +997,10 @@ module PgConn
|
|
983
997
|
|
984
998
|
# :call-seq
|
985
999
|
# parse_query(query)
|
986
|
-
# parse_query(table,
|
1000
|
+
# parse_query(table, id, fields...)
|
1001
|
+
# parse_query(table, where_clause, fields...)
|
1002
|
+
# parse_query(table, hash, fields...)
|
1003
|
+
# parse_query(table, fields...)
|
987
1004
|
#
|
988
1005
|
# Parse a query. Used in query-functions (#value etc.). The fields argument
|
989
1006
|
# can be a list of fields or arrays of fields
|
@@ -998,6 +1015,10 @@ module PgConn
|
|
998
1015
|
case args.first
|
999
1016
|
when Integer; where_clause = "id = #{args.shift}"
|
1000
1017
|
when String; where_clause = args.shift
|
1018
|
+
when Hash
|
1019
|
+
where_clause = args.shift.map { |k,v|
|
1020
|
+
"#{self.quote_identifier(k)} = #{self.quote_value(v) }"
|
1021
|
+
}.join(" and ")
|
1001
1022
|
when Symbol; fields << args.shift
|
1002
1023
|
when Array; fields = args.shift
|
1003
1024
|
when nil; where_clause = "true"
|
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
|
+
version: 0.28.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Claus Rasmussen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-11-
|
11
|
+
date: 2024-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|