db-mariadb 0.8.1 → 0.9.2

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: 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.