miguel 0.2.1 → 0.3.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 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