sequel-annotate 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|