miguel 0.2.1 → 0.3.0

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
  SHA256:
3
- metadata.gz: 8fe535fb9867417bd85648a478880bb452590b98ca6b6ee285ca06a8fa785db4
4
- data.tar.gz: 5f8497cc65b4554a2cb3bd0956dc12fd6a566c8ae57462a10aa2749746dedc95
3
+ metadata.gz: 821d6ef0ddebb1aa237b6dabfa0b2272d05107534114c9596ba948bf6a96aa1c
4
+ data.tar.gz: de5c7d1f3ad59507f5f727b21d5323151a259d215eb32c32a3ba83ff473940c6
5
5
  SHA512:
6
- metadata.gz: '0659bdcac90f184db9af02fce004e7ff65398a4955560fd02c36c2049da09fe8c0b0d88772656712d588a3b933e467bf92b065fffa98e44f6b3594a46855e681'
7
- data.tar.gz: 1e60c072c0a3674a84621f1df9ee8b64954ff231a4987aed61ff4cacff48703eeaf07b2f58c2e37e657eb2321000780989f8248a28c92814e491d34583963eb9
6
+ metadata.gz: d89c348653fa910bd3e2a22dc8c30de50b28b60ef14e947a0ae8cafee822f37f9c601551b9cd7cc4f7fc8a43e8b445539d52ae679515bd8ad96fcb481bdfec4c
7
+ data.tar.gz: e908e8e40752308de4d36453b4a721bfafc7f247a4c0e9dce4cd300fc6280b81d683d0deab8254bf19a4cf16a1c11cd974b0d87455d6aacf2fa60d49480a641c
data/README.md CHANGED
@@ -123,6 +123,7 @@ set_defaults :Time, :timestamp, default: '2000-01-01 00:00:00'
123
123
  set_defaults :Time?, :timestamp, default: nil
124
124
 
125
125
  set_defaults :unique, :index, unique: true
126
+ set_defaults :fulltext, :index, type: :full_text
126
127
 
127
128
  set_defaults :Key, :integer, unsigned: false
128
129
  set_defaults :primary_key, type: :integer, unsigned: false
@@ -160,8 +160,11 @@ module Miguel
160
160
  foreign_key_indexes = table.foreign_keys.map{ |x| x.columns if x.columns.size == 1 }.compact
161
161
  for name, opts in db.indexes( table.name )
162
162
  opts = opts.dup
163
+ opts[ :name ] = name
163
164
  columns = opts.delete( :columns )
164
165
  next if ( ! opts[ :unique ] ) && foreign_key_indexes.include?( columns ) && name == columns.first
166
+ # Sequel currently doesn't provide info about fulltext indexes, so we have to rely on properly used names.
167
+ opts[ :type ] = :full_text if name =~ /_fulltext$/
165
168
  opts.delete( :deferrable ) unless opts[ :deferrable ]
166
169
  table.add_index( columns, opts )
167
170
  end
data/lib/miguel/schema.rb CHANGED
@@ -204,11 +204,15 @@ module Miguel
204
204
 
205
205
  include Output
206
206
 
207
+ # The table this index belongs to.
208
+ attr_reader :table
209
+
207
210
  # Index column(s) and options.
208
211
  attr_reader :columns, :opts
209
212
 
210
213
  # Create new index for given column(s).
211
- def initialize( columns, opts = {} )
214
+ def initialize( table, columns, opts = {} )
215
+ @table = table
212
216
  @columns = [ *columns ]
213
217
  @opts = opts
214
218
  end
@@ -218,11 +222,16 @@ module Miguel
218
222
 
219
223
  # Get the index options, in a canonic way.
220
224
  def canonic_opts
221
- o = { :unique => false }
225
+ o = { :unique => false, :name => default_index_name }
222
226
  o.merge!( opts )
223
227
  o.delete_if{ |key, value| IGNORED_OPTS.include? key }
224
228
  end
225
229
 
230
+ # Get default index name for this index.
231
+ def default_index_name
232
+ [ table.name, *columns, :index ].join( '_' ).to_sym
233
+ end
234
+
226
235
  # Compare one index with another one.
227
236
  def == other
228
237
  other.is_a?( Index ) &&
@@ -367,7 +376,7 @@ module Miguel
367
376
 
368
377
  # Add index definition.
369
378
  def add_index( columns, *args )
370
- @indexes << Index.new( columns, *args )
379
+ @indexes << Index.new( self, columns, *args )
371
380
  end
372
381
 
373
382
  # Add foreign key definition.
@@ -529,6 +538,7 @@ module Miguel
529
538
  # :Time?, :timestamp, :default => nil
530
539
  #
531
540
  # :unique, :index, :unique => true
541
+ # :fulltext, :index, :type => :full_text
532
542
  #
533
543
  # :Key, :integer, :unsigned => false
534
544
  # :primary_key, :type => :integer, :unsigned => false
@@ -560,9 +570,12 @@ module Miguel
560
570
  opts[ :type ] ||= :integer unless args.first.is_a? Array or not opts[ :unsigned ]
561
571
  end
562
572
 
563
- # Save some typing for unique indexes.
573
+ # Save some typing for unique and fulltext indexes.
564
574
 
565
575
  set_defaults :unique, :index, :unique => true
576
+ set_defaults :fulltext, :index, :type => :full_text do |opts,args,table|
577
+ opts[ :name ] ||= [ table, *args, :fulltext ].join( '_' ).to_sym
578
+ end
566
579
 
567
580
  # Type shortcuts we use frequently.
568
581
 
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Miguel
4
4
  MAJOR = 0
5
- MINOR = 2
6
- PATCH = 1
5
+ MINOR = 3
6
+ PATCH = 0
7
7
  VERSION = [ MAJOR, MINOR, PATCH ].join( '.' ).freeze
8
8
  end
9
9
 
data/test/data/schema.rb CHANGED
@@ -96,8 +96,16 @@ Miguel::Schema.define( use_defaults: false ) do
96
96
  unique [:a, :c]
97
97
  index [:b, :c, :d]
98
98
  index [:b, :a]
99
+ index [:c, :d], name: :named_cd_index
99
100
  end
100
101
 
102
+ table :fulltext do
103
+ String :s
104
+ Text :t
105
+ fulltext :s
106
+ fulltext [:s, :t]
107
+ end unless opts[ :skip_fulltext ]
108
+
101
109
  table :null do
102
110
  String? :string
103
111
  Text? :text
data/test/data/schema.txt CHANGED
@@ -68,8 +68,15 @@ table :compound do
68
68
  index [:a, :c], :null => false, :unique => true
69
69
  index [:b, :c, :d], :null => false
70
70
  index [:b, :a], :null => false
71
+ index [:c, :d], :null => false, :name => :named_cd_index
71
72
  foreign_key [:b, :a], :compound, :null => false, :key => [:a, :b], :unsigned => false
72
73
  end
74
+ table :fulltext do
75
+ String :s, :null => false, :text => false
76
+ String :t, :null => false, :text => true
77
+ index [:s], :null => false, :type => :full_text, :name => :fulltext_s_fulltext
78
+ index [:s, :t], :null => false, :type => :full_text, :name => :fulltext_s_t_fulltext
79
+ end
73
80
  table :null do
74
81
  String :string, :null => true, :text => false
75
82
  String :text, :null => true, :text => true
@@ -66,6 +66,13 @@ create_table :compound do
66
66
  index [:a, :c], :null => false, :unique => true
67
67
  index [:b, :c, :d], :null => false
68
68
  index [:b, :a], :null => false
69
+ index [:c, :d], :null => false, :name => :named_cd_index
70
+ end
71
+ create_table :fulltext do
72
+ String :s, :null => false, :text => false
73
+ String :t, :null => false, :text => true
74
+ index [:s], :null => false, :type => :full_text, :name => :fulltext_s_fulltext
75
+ index [:s, :t], :null => false, :type => :full_text, :name => :fulltext_s_t_fulltext
69
76
  end
70
77
  create_table :null do
71
78
  String :string, :null => true, :text => false
@@ -68,6 +68,13 @@ Sequel.migration do
68
68
  index [:a, :c], :null => false, :unique => true
69
69
  index [:b, :c, :d], :null => false
70
70
  index [:b, :a], :null => false
71
+ index [:c, :d], :null => false, :name => :named_cd_index
72
+ end
73
+ create_table :fulltext do
74
+ String :s, :null => false, :text => false
75
+ String :t, :null => false, :text => true
76
+ index [:s], :null => false, :type => :full_text, :name => :fulltext_s_fulltext
77
+ index [:s, :t], :null => false, :type => :full_text, :name => :fulltext_s_t_fulltext
71
78
  end
72
79
  create_table :null do
73
80
  String :string, :null => true, :text => false
@@ -26,6 +26,7 @@ drop_table :users
26
26
  drop_table :simple
27
27
  drop_table :reuse
28
28
  drop_table :compound
29
+ drop_table :fulltext
29
30
  drop_table :null
30
31
  drop_table :defaults
31
32
  drop_table :simple_users
@@ -68,6 +68,13 @@ Sequel.migration do
68
68
  index [:a, :c], :null => false, :unique => true
69
69
  index [:b, :c, :d], :null => false
70
70
  index [:b, :a], :null => false
71
+ index [:c, :d], :null => false, :name => :named_cd_index
72
+ end
73
+ create_table :fulltext do
74
+ String :s, :null => false, :text => false
75
+ String :t, :null => false, :text => true
76
+ index [:s], :null => false, :type => :full_text, :name => :fulltext_s_fulltext
77
+ index [:s, :t], :null => false, :type => :full_text, :name => :fulltext_s_t_fulltext
71
78
  end
72
79
  create_table :null do
73
80
  String :string, :null => true, :text => false
@@ -157,6 +164,7 @@ Sequel.migration do
157
164
  drop_table :simple
158
165
  drop_table :reuse
159
166
  drop_table :compound
167
+ drop_table :fulltext
160
168
  drop_table :null
161
169
  drop_table :defaults
162
170
  drop_table :simple_users
data/test/data/seq_1.txt CHANGED
@@ -14,7 +14,7 @@ Sequel.migration do
14
14
  add_column :create_time, :timestamp, :default => "2000-01-01 00:00:00", :null => false
15
15
  add_column :update_time, :timestamp, :default => "2000-01-01 00:00:00", :null => false
16
16
  add_column :fk, :integer, :default => 0, :null => false, :key => [:id], :unsigned => false
17
- add_index [:u], :unique => true
17
+ add_index [:u], :unique => true, :name => :b_u_index
18
18
  end
19
19
  create_table :c do
20
20
  primary_key :id, :null => false, :unsigned => false
@@ -46,7 +46,7 @@ Sequel.migration do
46
46
  set_column_type :a, Integer, :null => false
47
47
  end
48
48
  alter_table :b do
49
- drop_index [:u] # :unique => true
49
+ drop_index [:u] # :unique => true, :name => :b_u_index
50
50
  drop_column :create_time # :timestamp, :null => false, :default => "2000-01-01 00:00:00"
51
51
  drop_column :update_time # :timestamp, :null => false, :default => "2000-01-01 00:00:00"
52
52
  drop_column :fk # :integer, :null => false, :key => [:id], :unsigned => false
data/test/data/seq_2.txt CHANGED
@@ -4,7 +4,7 @@ Sequel.migration do
4
4
  drop_foreign_key [:fk] # :a, :on_update => :no_action, :on_delete => :no_action, :key => [:id]
5
5
  end
6
6
  alter_table :b do
7
- add_index [:create_time], :unique => false
7
+ add_index [:create_time], :unique => false, :name => :b_create_time_index
8
8
  end
9
9
  alter_table :c do
10
10
  add_column :t, String, :default => "", :null => false, :text => true
@@ -36,7 +36,7 @@ Sequel.migration do
36
36
  end
37
37
  drop_table :a_b
38
38
  alter_table :b do
39
- drop_index [:create_time] # :unique => false
39
+ drop_index [:create_time] # :unique => false, :name => :b_create_time_index
40
40
  end
41
41
  alter_table :c do
42
42
  drop_column :t # String, :null => false, :text => true
@@ -21,9 +21,9 @@ describe Miguel::Importer do
21
21
  { zero_timestamps: false },
22
22
  ]
23
23
  when :postgres
24
- [ signed_unsigned: true ]
24
+ [ signed_unsigned: true, skip_fulltext: true ]
25
25
  else
26
- [ {} ]
26
+ [ skip_fulltext: true ]
27
27
  end
28
28
  end
29
29
 
data/test/test_schema.rb CHANGED
@@ -430,20 +430,26 @@ describe Miguel::Schema do
430
430
  Integer :a, :null => false
431
431
  Integer :b, :null => false
432
432
  String :s, :null => false, :text => false
433
+ String :t, :null => false, :text => true
433
434
  index [:a], :null => false
434
435
  index [:b], :null => false, :unique => true
435
436
  index [:a, :b], :null => false
436
437
  index [:a, :b, :c], :null => false, :unique => true
438
+ index [:s], :null => false, :type => :full_text, :name => :index_s_fulltext
439
+ index [:s, :t], :null => false, :type => :full_text, :name => :index_s_t_fulltext
437
440
  end
438
441
  EOT
439
442
  table :index do
440
443
  Integer :a
441
444
  Integer :b
442
445
  String :s
446
+ Text :t
443
447
  index :a
444
448
  unique :b
445
449
  index [:a, :b]
446
450
  unique [:a, :b, :c]
451
+ fulltext :s
452
+ fulltext [:s, :t]
447
453
  end
448
454
  end
449
455
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miguel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrik Rak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-18 00:00:00.000000000 Z
11
+ date: 2023-06-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel