activerecord-postgis-adapter 8.0.3 → 9.0.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 +4 -4
- data/lib/active_record/connection_adapters/postgis/column_methods.rb +6 -0
- data/lib/active_record/connection_adapters/postgis/oid/spatial.rb +4 -1
- data/lib/active_record/connection_adapters/postgis/schema_statements.rb +4 -3
- data/lib/active_record/connection_adapters/postgis/spatial_column.rb +2 -2
- data/lib/active_record/connection_adapters/postgis/spatial_table_definition.rb +5 -5
- data/lib/active_record/connection_adapters/postgis/version.rb +1 -1
- data/lib/active_record/connection_adapters/postgis_adapter.rb +22 -12
- data/lib/activerecord-postgis-adapter.rb +1 -1
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 75f6e9775eb5ed72bf5afd83bb6c987da46b6ac05db7ea61e8930565010b5874
|
|
4
|
+
data.tar.gz: f656e5b00c0920b2b8a2373de6501a048991498a6592338ca73d4a2e7d73df04
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 489c286442008acd662c8b8c3cbeae6351e76b65547bb5559f7697eeccf30f910b635cff3884981499abfdb7bb028a740a1ff987e85d68adb635ff3b49920c73
|
|
7
|
+
data.tar.gz: 0a5122a68aa81d656822b04327848350c99529eb7f811d116a9bfb9a31b90b0028fe33ad80961acbc2429a5a84e9dd704df3a081c05f495564cd250dc70d2156
|
|
@@ -4,6 +4,7 @@ module ActiveRecord
|
|
|
4
4
|
module ConnectionAdapters
|
|
5
5
|
module PostGIS
|
|
6
6
|
module ColumnMethods
|
|
7
|
+
|
|
7
8
|
def spatial(name, options = {})
|
|
8
9
|
raise "You must set a type. For example: 't.spatial type: :st_point'" unless options[:type]
|
|
9
10
|
column(name, options[:type], **options)
|
|
@@ -44,6 +45,11 @@ module ActiveRecord
|
|
|
44
45
|
def st_polygon(name, options = {})
|
|
45
46
|
column(name, :st_polygon, **options)
|
|
46
47
|
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
def valid_column_definition_options
|
|
51
|
+
super + [:srid, :has_z, :has_m, :geographic, :spatial_type]
|
|
52
|
+
end
|
|
47
53
|
end
|
|
48
54
|
end
|
|
49
55
|
|
|
@@ -25,7 +25,10 @@ module ActiveRecord
|
|
|
25
25
|
# has_z: false
|
|
26
26
|
# has_m: false
|
|
27
27
|
def self.parse_sql_type(sql_type)
|
|
28
|
-
geo_type
|
|
28
|
+
geo_type = nil
|
|
29
|
+
srid = 0
|
|
30
|
+
has_z = false
|
|
31
|
+
has_m = false
|
|
29
32
|
|
|
30
33
|
if sql_type =~ /(geography|geometry)\((.*)\)$/i
|
|
31
34
|
# geometry(Point)
|
|
@@ -7,8 +7,8 @@ module ActiveRecord
|
|
|
7
7
|
# override
|
|
8
8
|
# https://github.com/rails/rails/blob/7-0-stable/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L662
|
|
9
9
|
# Create a SpatialColumn instead of a PostgreSQL::Column
|
|
10
|
-
def new_column_from_field(table_name, field)
|
|
11
|
-
column_name, type, default, notnull, oid, fmod, collation, comment, attgenerated = field
|
|
10
|
+
def new_column_from_field(table_name, field, _definitions)
|
|
11
|
+
column_name, type, default, notnull, oid, fmod, collation, comment, identity, attgenerated = field
|
|
12
12
|
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
|
|
13
13
|
default_value = extract_value_from_default(default)
|
|
14
14
|
|
|
@@ -18,7 +18,7 @@ module ActiveRecord
|
|
|
18
18
|
default_function = extract_default_function(default_value, default)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
if match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/)
|
|
21
|
+
if (match = default_function&.match(/\Anextval\('"?(?<sequence_name>.+_(?<suffix>seq\d*))"?'::regclass\)\z/))
|
|
22
22
|
serial = sequence_name_from_parts(table_name, column_name, match[:suffix]) == match[:sequence_name]
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -35,6 +35,7 @@ module ActiveRecord
|
|
|
35
35
|
comment: comment.presence,
|
|
36
36
|
serial: serial,
|
|
37
37
|
generated: attgenerated,
|
|
38
|
+
identity: identity.presence,
|
|
38
39
|
spatial: spatial
|
|
39
40
|
)
|
|
40
41
|
end
|
|
@@ -9,7 +9,7 @@ module ActiveRecord # :nodoc:
|
|
|
9
9
|
# "Geography(Point,4326)"
|
|
10
10
|
def initialize(name, default, sql_type_metadata = nil, null = true,
|
|
11
11
|
default_function = nil, collation: nil, comment: nil,
|
|
12
|
-
serial: nil, generated: nil, spatial: nil)
|
|
12
|
+
serial: nil, generated: nil, spatial: nil, identity: nil)
|
|
13
13
|
@sql_type_metadata = sql_type_metadata
|
|
14
14
|
@geographic = !!(sql_type_metadata.sql_type =~ /geography\(/i)
|
|
15
15
|
if spatial
|
|
@@ -31,7 +31,7 @@ module ActiveRecord # :nodoc:
|
|
|
31
31
|
build_from_sql_type(sql_type_metadata.sql_type)
|
|
32
32
|
end
|
|
33
33
|
super(name, default, sql_type_metadata, null, default_function,
|
|
34
|
-
collation: collation, comment: comment, serial: serial, generated: generated)
|
|
34
|
+
collation: collation, comment: comment, serial: serial, generated: generated, identity: identity)
|
|
35
35
|
if spatial? && @srid
|
|
36
36
|
@limit = { srid: @srid, type: to_type_name(geometric_type) }
|
|
37
37
|
@limit[:has_z] = true if @has_z
|
|
@@ -43,11 +43,11 @@ module ActiveRecord # :nodoc:
|
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def limit_from_options(type, options = {})
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
has_z = options[:has_z] ? 'Z' : ''
|
|
47
|
+
has_m = options[:has_m] ? 'M' : ''
|
|
48
|
+
srid = options[:srid] || default_srid(options)
|
|
49
|
+
field_type = [geo_type(type), has_z, has_m].compact.join
|
|
50
|
+
"#{field_type},#{srid}"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def default_srid(options)
|
|
@@ -9,21 +9,31 @@ require "rgeo/active_record"
|
|
|
9
9
|
|
|
10
10
|
require "active_record/connection_adapters"
|
|
11
11
|
require "active_record/connection_adapters/postgresql_adapter"
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
12
|
+
require_relative "postgis/version"
|
|
13
|
+
require_relative "postgis/column_methods"
|
|
14
|
+
require_relative "postgis/schema_statements"
|
|
15
|
+
require_relative "postgis/database_statements"
|
|
16
|
+
require_relative "postgis/spatial_column_info"
|
|
17
|
+
require_relative "postgis/spatial_table_definition"
|
|
18
|
+
require_relative "postgis/spatial_column"
|
|
19
|
+
require_relative "postgis/arel_tosql"
|
|
20
|
+
require_relative "postgis/oid/spatial"
|
|
21
|
+
require_relative "postgis/oid/date_time"
|
|
22
|
+
require_relative "postgis/type" # has to be after oid/*
|
|
23
|
+
require_relative "postgis/create_connection"
|
|
24
24
|
# :startdoc:
|
|
25
25
|
|
|
26
26
|
module ActiveRecord
|
|
27
|
+
module ConnectionHandling # :nodoc:
|
|
28
|
+
def postgis_adapter_class
|
|
29
|
+
ConnectionAdapters::PostGISAdapter
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def postgis_connection(config)
|
|
33
|
+
postgis_adapter_class.new(config)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
27
37
|
module ConnectionAdapters
|
|
28
38
|
class PostGISAdapter < PostgreSQLAdapter
|
|
29
39
|
ADAPTER_NAME = 'PostGIS'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: activerecord-postgis-adapter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 9.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Azuma
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2024-04-30 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: activerecord
|
|
@@ -17,14 +17,14 @@ dependencies:
|
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: 7.
|
|
20
|
+
version: 7.1.0
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: 7.
|
|
27
|
+
version: 7.1.0
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
29
|
name: rgeo-activerecord
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -87,14 +87,14 @@ dependencies:
|
|
|
87
87
|
requirements:
|
|
88
88
|
- - "~>"
|
|
89
89
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: 2.
|
|
90
|
+
version: '2.12'
|
|
91
91
|
type: :development
|
|
92
92
|
prerelease: false
|
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
|
94
94
|
requirements:
|
|
95
95
|
- - "~>"
|
|
96
96
|
- !ruby/object:Gem::Version
|
|
97
|
-
version: 2.
|
|
97
|
+
version: '2.12'
|
|
98
98
|
- !ruby/object:Gem::Dependency
|
|
99
99
|
name: rubocop
|
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -148,14 +148,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
148
148
|
requirements:
|
|
149
149
|
- - ">="
|
|
150
150
|
- !ruby/object:Gem::Version
|
|
151
|
-
version:
|
|
151
|
+
version: 3.0.0
|
|
152
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
153
153
|
requirements:
|
|
154
154
|
- - ">="
|
|
155
155
|
- !ruby/object:Gem::Version
|
|
156
156
|
version: '0'
|
|
157
157
|
requirements: []
|
|
158
|
-
rubygems_version: 3.
|
|
158
|
+
rubygems_version: 3.3.26
|
|
159
159
|
signing_key:
|
|
160
160
|
specification_version: 4
|
|
161
161
|
summary: ActiveRecord adapter for PostGIS, based on RGeo.
|