full_search 0.4.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8175568a013e8a29d107a5b3bceebc7e9be6b9c85f56d8ef178d3c2c72a73678
4
- data.tar.gz: d77fe210358656fe1b471baeb374c27d2f493544739d4ec326c06aee3dddadf1
3
+ metadata.gz: 2d5cf6b2007aa968f7243df89c2e957288336c03f64500278b88583e3a75035e
4
+ data.tar.gz: b575ebcb9d41e2a16fe3a86f5201705551c41f2066b4db80e31b2b15ecd2be09
5
5
  SHA512:
6
- metadata.gz: 6e786b098bc3cd046151835f11bbf98b4a5213feb46e70a0ae6872a4f24bba6eb22ec5e8a17ebe045328eaab1d2016682fda67e47c5582fb73ae72b262c7bf08
7
- data.tar.gz: 4d5284fe9b059ee7010ff099cd88e494beffe1804084f29be86921bd895059cc98dd567fdf9c09ef20a2ec9af99badef3416f6085bb3f85e019f44657028244a
6
+ metadata.gz: '0740089cb32424858a53942ab6695e7b4c65963a6cfa1ed75ee42aa500f702203c02f460d735d82f1fc9712e8df82f27f1e8b203700cb7e6be793641d4050821'
7
+ data.tar.gz: 02d341539689e75d8f2064fd457ae241f4008434804ba62931493c2bef64033197a968387b3ded9db17bbbfaa42687ae28249419a3ade9969ebee42aaced5e1c
@@ -5,7 +5,7 @@ module FullSearch
5
5
  attr_accessor :auto_rebuild_schema, :stale_query_behavior, :lock_rebuilds,
6
6
  :default_async_reindex, :default_async_source_reindex,
7
7
  :default_tokenizer, :auto_rebuild_on_stale_query, :min_like_prefix_length,
8
- :dump_schema_virtual_tables
8
+ :dump_schema_virtual_tables, :auto_rebuild_missing_tables
9
9
 
10
10
  def initialize
11
11
  @auto_rebuild_schema = false
@@ -17,6 +17,7 @@ module FullSearch
17
17
  @auto_rebuild_on_stale_query = false
18
18
  @min_like_prefix_length = FullSearch::Constants::DEFAULT_MIN_LIKE_PREFIX_LENGTH
19
19
  @dump_schema_virtual_tables = true
20
+ @auto_rebuild_missing_tables = false
20
21
  end
21
22
  end
22
23
 
@@ -154,6 +154,18 @@ module FullSearch
154
154
  end
155
155
  end
156
156
 
157
+ def truncate!(model)
158
+ IndexCache.clear!
159
+ sqlite!(model)
160
+ dsl = model.full_search_dsl
161
+ return unless dsl
162
+ return unless table_exists?(model)
163
+
164
+ conn = connection
165
+ conn.execute("DELETE FROM #{qt(fts_table_name(model))};")
166
+ conn.execute("DELETE FROM #{qt(trigram_table_name(model))};") if trigram_table_needed?(model) && trigram_table_exists?(model)
167
+ end
168
+
157
169
  def drop!(model)
158
170
  IndexCache.clear!
159
171
  verified_tables.delete(model.table_name)
@@ -84,6 +84,11 @@ module FullSearch
84
84
 
85
85
  def check_stale_config!
86
86
  if FullSearch::Index.missing_table?(model)
87
+ if FullSearch.config.auto_rebuild_missing_tables
88
+ FullSearch::Index.rebuild!(model)
89
+ return
90
+ end
91
+
87
92
  raise MissingTableError, "FTS table `#{FullSearch::Index.fts_table_name(model)}` does not exist. Run `bin/rails full_search:prepare` to create it."
88
93
  end
89
94
 
@@ -8,6 +8,7 @@ module FullSearch
8
8
  config.lock_rebuilds = false
9
9
  config.auto_rebuild_on_stale_query = true
10
10
  config.stale_query_behavior = :raise
11
+ config.auto_rebuild_missing_tables = true
11
12
  end
12
13
 
13
14
  inline_active_job_if_configured
@@ -42,6 +43,11 @@ module FullSearch
42
43
  models.each { |model| rebuild_full_search_index(model) }
43
44
  end
44
45
 
46
+ def truncate_full_search!(*models)
47
+ models = FullSearch.models.to_a if models.empty?
48
+ models.each { |model| FullSearch::Index.truncate!(model) }
49
+ end
50
+
45
51
  def ensure_full_search_tables
46
52
  FullSearch.models.each do |model|
47
53
  FullSearch::Index.ensure_table!(model)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FullSearch
4
- VERSION = "0.4.0"
4
+ VERSION = "0.4.2"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: full_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben D'Angelo