db 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: def9c55f80bfb45766ffd249a05f9c449432259bf15e57a8e00b59dabc75dc91
4
- data.tar.gz: 8632f9630388c98ab4587c708acf8c1506edddcd8c29284a2b66446f4dbf799e
3
+ metadata.gz: 5741adecd898ba3ad01d4d2ad42b51cf88de2084ce080c8494c65bc552728f25
4
+ data.tar.gz: d94a215a5db2241ad142515c31911e27eebdba154c0855aa7f1b523a499862fc
5
5
  SHA512:
6
- metadata.gz: 11f1c66a99d6dec1346f890c798efa65b77a3750e581a67dbcbbf20d970b6e5c30b337a4aeafd3d8375d68151585b6d74edc6b6cafaee4c539f6e857748424c0
7
- data.tar.gz: eb43e9b1077fc237acc6cde551aeaae5299ce8fa1f6b5580b5672ae1a3ecd9d5dcee6195344b56c6b5256af817c331af39fc79a0a3a5a60e0564c21ff4b0aa62
6
+ metadata.gz: 5be7655b2006158c711551fce4674ca60278299fcc27e91cab13b617599c9a803e338270807547c08d0e810a94984449e3090684afcf682a097c71c1f2de8344
7
+ data.tar.gz: e1c6cf1c0fad9a3b9e40602f575990f674792b2995a39da336f8489832379da4987dcd0b791ef8e4fa7031dfbefb97b90fa81a7adeeb65ebce7e502d8b0fee88
@@ -52,7 +52,7 @@ module DB
52
52
 
53
53
  def query(fragment, **parameters)
54
54
  if parameters.empty?
55
- Query.new(self).clause(fragment)
55
+ Query.new(self, fragment)
56
56
  else
57
57
  Query.new(self).interpolate(fragment, **parameters)
58
58
  end
data/lib/db/query.rb CHANGED
@@ -30,16 +30,31 @@ module DB
30
30
  def self.[](*names)
31
31
  self.new(names)
32
32
  end
33
+
34
+ def self.coerce(name_or_identifier)
35
+ case name_or_identifier
36
+ when Identifier
37
+ name_or_identifier
38
+ when Symbol
39
+ self.new(name_or_identifier)
40
+ else
41
+ self.new(name_or_identifier.to_sym)
42
+ end
43
+ end
44
+
45
+ def append_to(query)
46
+ query.identifier(self)
47
+ end
33
48
  end
34
49
 
35
50
  # A mutable query builder.
36
51
  class Query
37
52
  # Create a new query builder attached to the specified session.
38
53
  # @parameter session [Context::Session] the connected session which is used for escaping arguments.
39
- def initialize(session)
54
+ def initialize(session, buffer = String.new)
40
55
  @session = session
41
56
  @connection = session.connection
42
- @buffer = String.new
57
+ @buffer = +buffer
43
58
  end
44
59
 
45
60
  # Append a raw textual clause to the query buffer.
@@ -98,6 +113,12 @@ module DB
98
113
  return self
99
114
  end
100
115
 
116
+ def key_column(*arguments, **options)
117
+ @buffer << @connection.key_column(*arguments, **options)
118
+
119
+ return self
120
+ end
121
+
101
122
  # Send the query to the remote server to be executed. See {Context::Session#send_query} for more details.
102
123
  def send
103
124
  @session.send_query(@buffer)
@@ -108,5 +129,13 @@ module DB
108
129
  def call
109
130
  @session.call(@buffer)
110
131
  end
132
+
133
+ def to_s
134
+ @buffer
135
+ end
136
+
137
+ def inspect
138
+ "\#<#{self.class} #{@buffer.inspect}>"
139
+ end
111
140
  end
112
141
  end
data/lib/db/version.rb CHANGED
@@ -21,5 +21,5 @@
21
21
  # THE SOFTWARE.
22
22
 
23
23
  module DB
24
- VERSION = "0.6.0"
24
+ VERSION = "0.7.0"
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-07-07 00:00:00.000000000 Z
11
+ date: 2021-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-io
@@ -112,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  - !ruby/object:Gem::Version
113
113
  version: '0'
114
114
  requirements: []
115
- rubygems_version: 3.1.2
115
+ rubygems_version: 3.2.3
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: A low level database access gem.