db 0.6.0 → 0.7.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 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.