activerecord-sqlite-types 0.1.0 → 0.2.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 +4 -4
- data/CHANGELOG.md +6 -0
- data/lib/sqlite_types/array.rb +8 -7
- data/lib/sqlite_types/interval.rb +3 -1
- data/lib/sqlite_types/ip_address.rb +6 -6
- data/lib/sqlite_types/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 873091c3ae92306fad28b8bdef1ab2895e614c057a4bc984737946f8a824e195
|
|
4
|
+
data.tar.gz: b3fb232c0eb97337a0d0ad1b15595ed0ca86ccd2a2beaddd6ee01b5a03687980
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1590a06734245552d6f3ef569ba637a50d692e48e344c57dd053489b0aab96cb8d1fa5c6f478513dec2d29bda19d2becd61dbb3d6f4292ed0dc8fd3a39e33cb8
|
|
7
|
+
data.tar.gz: 6f64ddd2a5e0ad9dfd414f97b9e0d249a21d171c92306c8b83e1faf1289f2be4807b7434a59bbe08869b4f1e1deb53ca89cd842528743c96cff075160e3364f4
|
data/CHANGELOG.md
CHANGED
data/lib/sqlite_types/array.rb
CHANGED
|
@@ -30,6 +30,7 @@ module SQLiteTypes
|
|
|
30
30
|
super
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
# Use "=" instead of "IN" in WHERE clause, to match PostgreSQL arrays
|
|
33
34
|
def force_equality?(value)
|
|
34
35
|
value.is_a?(::Array)
|
|
35
36
|
end
|
|
@@ -38,22 +39,22 @@ module SQLiteTypes
|
|
|
38
39
|
|
|
39
40
|
def valid?(value)
|
|
40
41
|
return true if value.nil?
|
|
41
|
-
return false if !value.is_a?(Array)
|
|
42
|
-
return value.all? { |nested_array| nested_array.is_a?(Array) } if @nested
|
|
42
|
+
return false if !value.is_a?(::Array)
|
|
43
|
+
return value.all? { |nested_array| nested_array.is_a?(::Array) } if @nested
|
|
43
44
|
|
|
44
45
|
true
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
def parse_to_array(value)
|
|
48
49
|
case value
|
|
49
|
-
when String
|
|
50
|
+
when ::String
|
|
50
51
|
begin
|
|
51
|
-
parsed = ActiveSupport::JSON.decode(value)
|
|
52
|
-
parsed.is_a?(Array) ? parsed : nil
|
|
52
|
+
parsed = ::ActiveSupport::JSON.decode(value)
|
|
53
|
+
parsed.is_a?(::Array) ? parsed : nil
|
|
53
54
|
rescue JSON::ParserError
|
|
54
55
|
nil
|
|
55
56
|
end
|
|
56
|
-
when Array
|
|
57
|
+
when ::Array
|
|
57
58
|
value
|
|
58
59
|
end
|
|
59
60
|
end
|
|
@@ -67,7 +68,7 @@ module SQLiteTypes
|
|
|
67
68
|
when :hash
|
|
68
69
|
elem.to_h
|
|
69
70
|
when :datetime
|
|
70
|
-
elem.is_a?(String) ? DateTime.parse(elem).in_time_zone : elem
|
|
71
|
+
elem.is_a?(::String) ? ::DateTime.parse(elem).in_time_zone : elem
|
|
71
72
|
else
|
|
72
73
|
raise ArgumentError, "Unsupported subtype: #{@subtype}"
|
|
73
74
|
end
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
# This is adopted from the PostgreSQL type
|
|
4
|
+
# https://github.com/rails/rails/blob/main/activerecord/lib/active_record/connection_adapters/postgresql/oid/interval.rb
|
|
3
5
|
module SQLiteTypes
|
|
4
6
|
class Interval < ActiveRecord::Type::Value
|
|
5
7
|
def serialize(value)
|
|
@@ -7,7 +9,7 @@ module SQLiteTypes
|
|
|
7
9
|
when ::ActiveSupport::Duration
|
|
8
10
|
value.iso8601(precision: precision)
|
|
9
11
|
when ::Numeric
|
|
10
|
-
ActiveSupport::Duration.build(value).iso8601(precision: precision)
|
|
12
|
+
::ActiveSupport::Duration.build(value).iso8601(precision: precision)
|
|
11
13
|
else
|
|
12
14
|
super
|
|
13
15
|
end
|
|
@@ -6,10 +6,10 @@ module SQLiteTypes
|
|
|
6
6
|
return if value.nil?
|
|
7
7
|
|
|
8
8
|
case value
|
|
9
|
-
when IPAddr
|
|
9
|
+
when ::IPAddr
|
|
10
10
|
"#{value}/#{value.prefix}"
|
|
11
|
-
when String
|
|
12
|
-
ip_addr = IPAddr.new(value)
|
|
11
|
+
when ::String
|
|
12
|
+
ip_addr = ::IPAddr.new(value)
|
|
13
13
|
"#{ip_addr}/#{ip_addr.prefix}"
|
|
14
14
|
else
|
|
15
15
|
raise ArgumentError, "Invalid IP address: #{value}"
|
|
@@ -20,10 +20,10 @@ module SQLiteTypes
|
|
|
20
20
|
|
|
21
21
|
def cast_value(value)
|
|
22
22
|
case value
|
|
23
|
-
when IPAddr
|
|
23
|
+
when ::IPAddr
|
|
24
24
|
value
|
|
25
|
-
when String
|
|
26
|
-
IPAddr.new(value)
|
|
25
|
+
when ::String
|
|
26
|
+
::IPAddr.new(value)
|
|
27
27
|
else
|
|
28
28
|
raise ArgumentError, "Invalid IP address: #{value}"
|
|
29
29
|
end
|
data/lib/sqlite_types/version.rb
CHANGED