Skip to content

Commit 9cdf123

Browse files
committed
ignore fts5 tables when dumping schema in AR fixes #115
1 parent b533c5c commit 9cdf123

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

lib/litestack/litesearch/model.rb

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ def self.included(klass)
1212
klass.extend Litesearch::Model::ActiveRecordClassMethods
1313
ActiveRecord::Base.extend Litesearch::Model::BaseClassMethods
1414
Litesearch::Schema.prepend Litesearch::Model::ActiveRecordSchemaMethods
15+
# ignore FTS5 virtual and shadow tables when dumping the schema
16+
ActiveRecord::SchemaDumper.ignore_tables << /^#{klass.table_name}_search_idx.*$/
1517
end
1618
end
1719

lib/litestack/litesearch/schema_adapters/backed_adapter.rb

+5-5
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def create_primary_triggers_sql(active = false)
3030
when_stmt = "NEW.#{filter} = TRUE"
3131
cols << filter
3232
end
33-
update_filter = ""
33+
update_filter = String.new
3434
if cols.length > 0
3535
" OF #{cols.join(', ')} "
3636
end
@@ -82,7 +82,7 @@ def create_secondary_trigger_poly_sql(target_table, target_col, col, conditions)
8282

8383

8484
def drop_secondary_triggers_sql
85-
sql = ""
85+
sql = String.new
8686
@schema[:fields].each do |name, field|
8787
if field[:trigger_sql]
8888
if field[:col]
@@ -96,7 +96,7 @@ def drop_secondary_triggers_sql
9696
end
9797

9898
def create_secondary_triggers_sql
99-
sql = ""
99+
sql = String.new
100100
@schema[:fields].each do |name, field|
101101
if field[:trigger_sql]
102102
if field[:col]
@@ -145,7 +145,7 @@ def enrich_schema
145145
end
146146

147147
def filter_sql
148-
sql = ""
148+
sql = String.new
149149
sql << " WHERE #{@schema[:filter_column]} = TRUE " if @schema[:filter_column]
150150
sql
151151
end
@@ -166,7 +166,7 @@ def joins_sql
166166
joins = [@schema[:table]]
167167
active_fields.each do |name, field|
168168
if field[:trigger_sql]
169-
join_table = ""
169+
join_table = String.new
170170
join_table << "#{field[:target_table]} AS #{field[:target_table_alias]} ON "
171171
if field[:col]
172172
join_table << "#{field[:target_table_alias]}.id = #{@schema[:table]}.#{field[:col]}" if field[:col]

test/test_ar_search.rb

+6
Original file line numberDiff line numberDiff line change
@@ -255,4 +255,10 @@ def test_uncreated_table
255255
assert_equal 2, rs.length
256256
end
257257

258+
def test_ignore_tables
259+
assert_equal false, ActiveRecord::SchemaDumper.ignore_tables.empty?
260+
# we have created 6 models, one ignore regex for each
261+
assert_equal 6, ActiveRecord::SchemaDumper.ignore_tables.count
262+
end
263+
258264
end

0 commit comments

Comments
 (0)