Class: Textus::Store::Index::Builder

Inherits:
Object
  • Object
show all
Defined in:
lib/textus/store/index/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(store:) ⇒ Builder

Returns a new instance of Builder.



10
11
12
# File 'lib/textus/store/index/builder.rb', line 10

def initialize(store:)
  @store = store
end

Instance Method Details

#rebuild!(resolver:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/textus/store/index/builder.rb', line 14

def rebuild!(resolver:)
  rows = resolver.enumerate.filter_map { |row| build_row(row) }
  now_iso = Time.now.utc.iso8601

  @store.transaction do
    @store.execute("DELETE FROM entries")
    rows.each do |data|
      @store.execute(
        "INSERT INTO entries (key, lane, format, etag, content, extra, indexed_at)
       VALUES (?, ?, ?, ?, ?, ?, ?)",
        [data[:key], data[:lane], data[:format], data[:etag], data[:content], data[:extra], now_iso],
      )
    end
    @store.execute("INSERT INTO entries_fts(entries_fts) VALUES('rebuild')")
  end
  { indexed: rows.size }
end