diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-08-09 23:07:05 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-08-09 23:07:05 +0200 |
| commit | 0157e90937c36c892b22341ec9f33ec6be358c72 (patch) | |
| tree | 665db99f0a31dbcca0e70e0769e798fe254f6a10 /lib/tasks/init.rake | |
| parent | 6047bd39f7d08a17f679e6c6fc2487c5c2c6b611 (diff) | |
Add a task to populate missing search vectors
Diffstat (limited to 'lib/tasks/init.rake')
| -rw-r--r-- | lib/tasks/init.rake | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/tasks/init.rake b/lib/tasks/init.rake index adfaddfd..bf7bfa6b 100644 --- a/lib/tasks/init.rake +++ b/lib/tasks/init.rake | |||
| @@ -78,6 +78,28 @@ namespace :cccms do | |||
| 78 | end | 78 | end |
| 79 | end | 79 | end |
| 80 | 80 | ||
| 81 | namespace :pages do | ||
| 82 | desc "Populate search_vector for rows that have none. The trigger " \ | ||
| 83 | "maintains it from then on, but fires only on insert or update, " \ | ||
| 84 | "so rows that predate it -- a restore from a dump taken before " \ | ||
| 85 | "the trigger existed, or a seed run against a database whose " \ | ||
| 86 | "trigger had been dropped -- stay unsearchable until this runs." | ||
| 87 | task :backfill_search_vector => :environment do | ||
| 88 | Page.ensure_search_vector_trigger! | ||
| 89 | count = ActiveRecord::Base.connection.update(<<~SQL) | ||
| 90 | UPDATE page_translations | ||
| 91 | SET search_vector = to_tsvector( | ||
| 92 | 'simple', | ||
| 93 | coalesce(title, '') || ' ' || | ||
| 94 | coalesce(abstract, '') || ' ' || | ||
| 95 | coalesce(body, '') | ||
| 96 | ) | ||
| 97 | WHERE search_vector IS NULL | ||
| 98 | SQL | ||
| 99 | puts "populated #{count} translations" | ||
| 100 | end | ||
| 101 | end | ||
| 102 | |||
| 81 | Rake::Task["db:schema:load"].enhance do | 103 | Rake::Task["db:schema:load"].enhance do |
| 82 | Page.ensure_search_vector_trigger! | 104 | Page.ensure_search_vector_trigger! |
| 83 | end | 105 | end |
