db-mariadb 0.8.1 → 0.9.2

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: 8ac7f702a2a637ea7c724bca60d40b1d6a664067a8680392040528a08a3ae91d
4
- data.tar.gz: 1a6ad7a2cc5ba6afa86fe551cdf6dd41a368887868c67c8b708ea47e294f65d5
3
+ metadata.gz: 287a722e1d0549889cbf89e5ff6273cd78223df19dceb170c11ef7c82dfbc93d
4
+ data.tar.gz: b1ab835972418a6e914f6c2f611a356cab640ee66782c79325e1553b04ad79a2
5
5
  SHA512:
6
- metadata.gz: 0a978d8b4417533c91bec7c16ad1c8e7fdad35b1eacaa9b83ec44bc62d49b6a0a11871056945a81027b56e0f28f1de1bf81ede882cb50e50b4b0f0aa75cc29c4
7
- data.tar.gz: 78ae9527dc839be6ebf6eb565d3311a9dc83563d685d376484d541f9f1905694626a4b2609884bf4699e51ba5ee7b39f6fafec10fd41f6daa39c7d5d5375facc
6
+ metadata.gz: 589b8a2537ada382e91aa453628d5aa13246a8f8548828fe5d0cc58c7ddf6ad062b8add342da6fb1962f783d04e8ef432f118f5850a21ca66cdcf7fbee64c0db
7
+ data.tar.gz: a15a55c016a99e996bd8f56a58291bff3e492f4ae79bc30ec96ce9a0c6b780a0d8c1f80bd824cd24b721e1f10a210231fd7455d91f68c266083ef61fbcc24a18
data/lib/.DS_Store CHANGED
Binary file
@@ -49,6 +49,10 @@ module DB
49
49
 
50
50
  def append_literal(value, buffer = String.new)
51
51
  case value
52
+ when Time, DateTime
53
+ append_string(value.utc.strftime('%Y-%m-%d %H:%M:%S'), buffer)
54
+ when Date
55
+ append_string(value.strftime('%Y-%m-%d'), buffer)
52
56
  when Numeric
53
57
  buffer << value.to_s
54
58
  when TrueClass
@@ -61,6 +61,7 @@ module DB
61
61
 
62
62
  DEFAULT_TYPES = {
63
63
  decimal: Types::Decimal,
64
+ boolean: Types::Boolean,
64
65
  tiny: Types::Integer,
65
66
  short: Types::Integer,
66
67
  long: Types::Integer,
@@ -74,7 +75,7 @@ module DB
74
75
  year: Types::Integer,
75
76
  newdate: Types::DateTime,
76
77
  bit: Types::Integer,
77
- json: JSON,
78
+ json: Types::JSON,
78
79
  newdecimal: Types::Decimal,
79
80
  enum: Types::Symbol,
80
81
  set: Types::Integer,
@@ -105,12 +106,24 @@ module DB
105
106
  :extension, :pointer,
106
107
  )
107
108
 
109
+ def boolean?
110
+ self[:length] == 1 and self[:type] == :tiny || self[:type] == :long
111
+ end
112
+
108
113
  def name
109
114
  self[:name]
110
115
  end
111
116
 
112
117
  def type
113
- self[:type]
118
+ if boolean?
119
+ :boolean
120
+ else
121
+ self[:type]
122
+ end
123
+ end
124
+
125
+ def inspect
126
+ "\#<#{self.class} name=#{self.name} type=#{self.type} length=#{self[:length]}>"
114
127
  end
115
128
  end
116
129
  end
@@ -109,6 +109,16 @@ module DB
109
109
  @connection.check_error!("Reading recordset")
110
110
  end
111
111
 
112
+ def map(&block)
113
+ results = []
114
+
115
+ self.each do |row|
116
+ results << yield(row)
117
+ end
118
+
119
+ return results
120
+ end
121
+
112
122
  def to_a
113
123
  rows = []
114
124
 
@@ -29,33 +29,56 @@ module DB
29
29
  module Types
30
30
  module Integer
31
31
  def self.parse(string)
32
- Integer(string)
32
+ Integer(string) if string
33
+ end
34
+ end
35
+
36
+ module Boolean
37
+ def self.parse(string)
38
+ case string
39
+ when '0'
40
+ false
41
+ when '1'
42
+ true
43
+ when nil
44
+ nil
45
+ else
46
+ Integer(string)
47
+ end
33
48
  end
34
49
  end
35
50
 
36
51
  module Decimal
37
52
  def self.parse(string)
38
- BigDecimal(string)
53
+ BigDecimal(string) if string
39
54
  end
40
55
  end
41
56
 
42
57
  module Float
43
58
  def self.parse(string)
44
- Float(string)
59
+ Float(string) if string
45
60
  end
46
61
  end
47
62
 
48
63
  module Symbol
49
64
  def self.parse(string)
50
- string.to_sym
65
+ string&.to_sym
51
66
  end
52
67
  end
53
68
 
54
69
  module DateTime
55
70
  def self.parse(string)
56
- parts = string.split(/[\-\s:]/)
57
-
58
- return Time.utc(*parts)
71
+ if string
72
+ parts = string.split(/[\-\s:]/)
73
+
74
+ return Time.utc(*parts)
75
+ end
76
+ end
77
+ end
78
+
79
+ module JSON
80
+ def self.parse(string)
81
+ ::JSON.parse(string, symbolize_names: true) if string
59
82
  end
60
83
  end
61
84
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module DB
22
22
  module MariaDB
23
- VERSION = "0.8.1"
23
+ VERSION = "0.9.2"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db-mariadb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.9.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-04 00:00:00.000000000 Z
11
+ date: 2021-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi-module
@@ -144,7 +144,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
144
  - !ruby/object:Gem::Version
145
145
  version: '0'
146
146
  requirements: []
147
- rubygems_version: 3.2.3
147
+ rubygems_version: 3.2.15
148
148
  signing_key:
149
149
  specification_version: 4
150
150
  summary: An event-driven interface for MariaDB and MySQL servers.