sequel-annotate 1.1.0 → 1.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 +5 -5
- data/CHANGELOG +6 -0
- data/MIT-LICENSE +1 -1
- data/Rakefile +1 -1
- data/lib/sequel/annotate.rb +6 -6
- data/spec/sequel-annotate_spec.rb +15 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 112ffb3483f88eacd72945f7890fac2d21b8cfa8f4559b13210eb76d80e36e53
|
4
|
+
data.tar.gz: b2a580e9ddc239a8d2fb948ac5c571733915d9badf2c84385f3d21aaede7ab71
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: edcaf9424b611f0ec0b08fb511ef2f7f9d245756040e8adf829101264846c0768f24e4d52d143d64fed4e8a05d58aa820758023e6f1d49e83ed0b87e64c0aa70
|
7
|
+
data.tar.gz: 267dbf8b5693e541abbe3d97154adddfd839d2ea0e3e88475146c0d4739b6f1b42cfd2d01959984d8d7a68851375875a0e11ec28fbf1d5ab8b5c942f2d9f9efd
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 1.2.0 (2018-04-02)
|
2
|
+
|
3
|
+
* Handle PostgreSQL 10+ identity columns when running on Sequel 5.7+ (jeremyevans)
|
4
|
+
|
5
|
+
* Use multiline regexps when parsing schema on PostgreSQL (jeremyevans) (#5)
|
6
|
+
|
1
7
|
=== 1.1.0 (2017-09-06)
|
2
8
|
|
3
9
|
* Support :position=>:before option to annotate to put annotation at the beginning of the file (a0s) (#4)
|
data/MIT-LICENSE
CHANGED
data/Rakefile
CHANGED
data/lib/sequel/annotate.rb
CHANGED
@@ -115,7 +115,7 @@ SQL
|
|
115
115
|
unless rows.empty?
|
116
116
|
output << "# Indexes:"
|
117
117
|
rows = rows.map do |r|
|
118
|
-
[r[:relname], "#{"PRIMARY KEY " if r[:indisprimary]}#{"UNIQUE " if r[:indisunique] && !r[:indisprimary]}#{r[:pg_get_indexdef].match(/USING (.+)\z/)[1]}"]
|
118
|
+
[r[:relname], "#{"PRIMARY KEY " if r[:indisprimary]}#{"UNIQUE " if r[:indisunique] && !r[:indisprimary]}#{r[:pg_get_indexdef].match(/USING (.+)\z/m)[1]}"]
|
119
119
|
end
|
120
120
|
output.concat(align(rows))
|
121
121
|
end
|
@@ -129,7 +129,7 @@ SQL
|
|
129
129
|
unless rows.empty?
|
130
130
|
output << "# Check constraints:"
|
131
131
|
rows = rows.map do |r|
|
132
|
-
[r[:conname], r[:pg_get_constraintdef].match(/CHECK (.+)\z/)[1]]
|
132
|
+
[r[:conname], r[:pg_get_constraintdef].match(/CHECK (.+)\z/m)[1]]
|
133
133
|
end
|
134
134
|
output.concat(align(rows))
|
135
135
|
end
|
@@ -143,7 +143,7 @@ SQL
|
|
143
143
|
unless rows.empty?
|
144
144
|
output << "# Foreign key constraints:"
|
145
145
|
rows = rows.map do |r|
|
146
|
-
[r[:conname], r[:condef].match(/FOREIGN KEY (.+)\z/)[1]]
|
146
|
+
[r[:conname], r[:condef].match(/FOREIGN KEY (.+)\z/m)[1]]
|
147
147
|
end
|
148
148
|
output.concat(align(rows))
|
149
149
|
end
|
@@ -157,7 +157,7 @@ SQL
|
|
157
157
|
unless rows.empty?
|
158
158
|
output << "# Referenced By:"
|
159
159
|
rows = rows.map do |r|
|
160
|
-
[r[:conrelid], r[:conname], r[:condef].match(/FOREIGN KEY (.+)\z/)[1]]
|
160
|
+
[r[:conrelid], r[:conname], r[:condef].match(/FOREIGN KEY (.+)\z/m)[1]]
|
161
161
|
end
|
162
162
|
output.concat(align(rows))
|
163
163
|
end
|
@@ -171,7 +171,7 @@ SQL
|
|
171
171
|
unless rows.empty?
|
172
172
|
output << "# Triggers:"
|
173
173
|
rows = rows.map do |r|
|
174
|
-
[r[:tgname], r[:pg_get_triggerdef].match(/((?:BEFORE|AFTER) .+)\z/)[1]]
|
174
|
+
[r[:tgname], r[:pg_get_triggerdef].match(/((?:BEFORE|AFTER) .+)\z/m)[1]]
|
175
175
|
end
|
176
176
|
output.concat(align(rows))
|
177
177
|
end
|
@@ -185,7 +185,7 @@ SQL
|
|
185
185
|
output << "# Columns:"
|
186
186
|
rows = model.columns.map do |col|
|
187
187
|
sch = model.db_schema[col]
|
188
|
-
[col.to_s, sch[:db_type], "#{"PRIMARY KEY #{"AUTOINCREMENT " if sch[:auto_increment] && model.db.database_type != :postgres}" if sch[:primary_key] && !cpk}#{"NOT NULL " if sch[:allow_null] == false && !sch[:primary_key]}#{"DEFAULT #{sch[:default]}" if sch[:default]}"]
|
188
|
+
[col.to_s, sch[:db_type], "#{"PRIMARY KEY #{"AUTOINCREMENT " if sch[:auto_increment] && model.db.database_type != :postgres}" if sch[:primary_key] && !cpk}#{"NOT NULL " if sch[:allow_null] == false && !sch[:primary_key]}#{"DEFAULT #{sch[:default]}" if sch[:default]}#{"GENERATED BY DEFAULT AS IDENTITY" if sch[:auto_increment] && !sch[:default] && model.db.database_type == :postgres && model.db.server_version >= 100000}"]
|
189
189
|
end
|
190
190
|
output.concat(align(rows))
|
191
191
|
end
|
@@ -66,6 +66,13 @@ class ::SManufacturer < Sequel::Model(SDB[:manufacturers]); end
|
|
66
66
|
|
67
67
|
|
68
68
|
describe Sequel::Annotate do
|
69
|
+
def fix_pg_comment(comment)
|
70
|
+
if DB.server_version >= 100002 && (Sequel::MAJOR > 5 || (Sequel::MAJOR == 5 && Sequel::MINOR >= 7))
|
71
|
+
comment = comment.sub(/DEFAULT nextval\('[a-z]+_id_seq'::regclass\)/, 'GENERATED BY DEFAULT AS IDENTITY')
|
72
|
+
end
|
73
|
+
comment
|
74
|
+
end
|
75
|
+
|
69
76
|
before do
|
70
77
|
Dir.mkdir('spec/tmp') unless File.directory?('spec/tmp')
|
71
78
|
end
|
@@ -74,7 +81,7 @@ describe Sequel::Annotate do
|
|
74
81
|
end
|
75
82
|
|
76
83
|
it "#schema_info should return the model schema comment" do
|
77
|
-
Sequel::Annotate.new(Item).schema_comment.must_equal((<<OUTPUT).chomp)
|
84
|
+
Sequel::Annotate.new(Item).schema_comment.must_equal(fix_pg_comment((<<OUTPUT).chomp))
|
78
85
|
# Table: items
|
79
86
|
# Columns:
|
80
87
|
# id | integer | PRIMARY KEY DEFAULT nextval('items_id_seq'::regclass)
|
@@ -97,7 +104,7 @@ describe Sequel::Annotate do
|
|
97
104
|
# valid_price | BEFORE INSERT OR UPDATE ON items FOR EACH ROW EXECUTE PROCEDURE valid_price()
|
98
105
|
OUTPUT
|
99
106
|
|
100
|
-
Sequel::Annotate.new(Category).schema_comment.must_equal((<<OUTPUT).chomp)
|
107
|
+
Sequel::Annotate.new(Category).schema_comment.must_equal(fix_pg_comment((<<OUTPUT).chomp))
|
101
108
|
# Table: categories
|
102
109
|
# Columns:
|
103
110
|
# id | integer | PRIMARY KEY DEFAULT nextval('categories_id_seq'::regclass)
|
@@ -165,7 +172,9 @@ OUTPUT
|
|
165
172
|
filename = model.name.downcase
|
166
173
|
2.times do
|
167
174
|
Sequel::Annotate.new(model).annotate("spec/tmp/#{filename}.rb", *args)
|
168
|
-
|
175
|
+
expected = File.read("spec/annotated_#{pos}/#{filename}.rb")
|
176
|
+
expected = fix_pg_comment(expected) if model.db == DB
|
177
|
+
File.read("spec/tmp/#{filename}.rb").must_equal expected
|
169
178
|
end
|
170
179
|
end
|
171
180
|
end
|
@@ -177,7 +186,9 @@ OUTPUT
|
|
177
186
|
Sequel::Annotate.annotate(Dir["spec/tmp/*.rb"], *args)
|
178
187
|
[Item, Category, Manufacturer, SItem, SCategory, SManufacturer].each do |model|
|
179
188
|
filename = model.name.downcase
|
180
|
-
|
189
|
+
expected = File.read("spec/annotated_#{pos}/#{filename}.rb")
|
190
|
+
expected = fix_pg_comment(expected) if model.db == DB
|
191
|
+
File.read("spec/tmp/#{filename}.rb").must_equal expected
|
181
192
|
end
|
182
193
|
end
|
183
194
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-annotate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-04-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sequel
|
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.6
|
136
|
+
rubygems_version: 2.7.6
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Annotate Sequel models with schema information
|