perpetuity-postgres 0.0.8 → 0.0.9

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
  SHA1:
3
- metadata.gz: dbfd7bfbff611c846132965cc13c105ac722f469
4
- data.tar.gz: 70179a20ab781629f0f1c56e6639104476e5fbe1
3
+ metadata.gz: 82e5dd20f52c8f997e20c60024f28e4b6a139143
4
+ data.tar.gz: 6e10f51925be27479944ba9b4abcd26622c3cc32
5
5
  SHA512:
6
- metadata.gz: fbe960158dfbab549a471033e7e8219f477aa2e3f2c573c685b9eee7ac8bdbbb5d1877f7df9722fb98310f6e67186b4b6103658027f518e4173f1683b4f65d7a
7
- data.tar.gz: c380f8f7b8cc6ccbf731dc92e58dd7995c95ac91d4629c856553fd4d672afb3133a2cbffd88220b499c675afe56d5c767d7f64cc9b5141505bbf4ca6d9f493bc
6
+ metadata.gz: b76478c240cf159a4e6cafc1bae21fd1a3b061dc276b6fe21a1edda8fdbfe961c11da6c7ca6e2045b999762e4283106084789118fb609307c53184b0f6c6510e
7
+ data.tar.gz: d5bec6ab884912ab69eaa616c5da3d38727476f6998cccaa61f236ca65f1b4812a7a131a2716aae333eafd2933606914ab702e99e52622c245216eb47602f812
@@ -2,7 +2,10 @@ module Perpetuity
2
2
  class Postgres
3
3
  class JSONStringValue
4
4
  def initialize value
5
- @value = value.to_s.gsub('"') { '\\"' }
5
+ @value = value
6
+ .to_s
7
+ .gsub('"') { '\\"' }
8
+ .gsub("'") { "''" }
6
9
  end
7
10
 
8
11
  def to_s
@@ -9,7 +9,11 @@ module Perpetuity
9
9
  end
10
10
 
11
11
  def self.from_sql sql_value
12
- Time.parse(sql_value)
12
+ match = sql_value =~ /(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})\.?(\d*)?([-+]\d{2})?/
13
+ return new(nil) unless match
14
+
15
+ offset = $8 ? "#$8:00" : '+00:00'
16
+ new Time.new($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, "#$6.#$7".to_f, offset)
13
17
  end
14
18
 
15
19
  def to_time
@@ -1,5 +1,5 @@
1
1
  module Perpetuity
2
2
  class Postgres
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
@@ -15,6 +15,11 @@ module Perpetuity
15
15
  expect(JSONStringValue.new('Anakin "Darth Vader" Skywalker').to_s).to be ==
16
16
  '"Anakin \\"Darth Vader\\" Skywalker"'
17
17
  end
18
+
19
+ it 'escapes single quotes' do
20
+ expect(JSONStringValue.new(%{Man it's a hot one}).to_s).to be ==
21
+ %{"Man it''s a hot one"}
22
+ end
18
23
  end
19
24
  end
20
25
  end
@@ -20,6 +20,22 @@ module Perpetuity
20
20
  expected = Time.new(1982, 8, 25, 10, 19, 10.123456, '-04:00')
21
21
  expect(actual.to_time).to be_within(0.0000001).of expected
22
22
  end
23
+
24
+ it 'converts timestamps without time zones' do
25
+ actual = TimestampValue.from_sql('1982-08-25 22:19:10.123456')
26
+ expected = Time.new(1982, 8, 25, 22, 19, 10.123456, '-00:00')
27
+ expect(actual.to_time).to be_within(0.0000001).of expected
28
+ end
29
+
30
+ it 'converts timestamps without time zones or milliseconds' do
31
+ actual = TimestampValue.from_sql('1982-08-25 22:19:10')
32
+ expected = Time.new(1982, 8, 25, 22, 19, 10, '-00:00')
33
+ expect(actual.to_time).to be_within(0.0000001).of expected
34
+ end
35
+
36
+ it 'returns nil if nil is passed in' do
37
+ expect(TimestampValue.from_sql(nil).to_time).to be nil
38
+ end
23
39
  end
24
40
 
25
41
  it 'returns its wrapped value' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: perpetuity-postgres
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamie Gaskins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-14 00:00:00.000000000 Z
11
+ date: 2016-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -181,7 +181,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  requirements: []
183
183
  rubyforge_project:
184
- rubygems_version: 2.2.2
184
+ rubygems_version: 2.4.8
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: PostgreSQL adapter for Perpetuity