class Search::Record::SQLite::Fts < ApplicationRecord self.table_name = "search_records_fts" self.primary_key = "rowid" # FTS5 virtual table columns attribute :rowid, :integer attribute :title, :string attribute :content, :string # FTS5 virtual tables don't expose rowid in the schema by default # We need to explicitly select it when loading records scope :with_rowid, -> { select(:rowid, :title, :content) } def self.upsert(rowid, title, content) connection.exec_query( "INSERT OR REPLACE INTO search_records_fts(rowid, title, content) VALUES (?, ?, ?)", "Search::Record::SQLite::Fts Upsert", [ rowid, title, content ] ) end end