perpetuity-postgres 0.0.8 → 0.0.9

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