Module: Jekyll::EmbeddingsGenerator::Store
- Extended by:
- Jekyll::EmbeddingsGenerator
- Defined in:
- lib/jekyll/embeddings-generator/embeddings/store.rb
Constant Summary collapse
- RECORD_SELECT =
"uid,most_recent_edit,embedding_fingerprint,embedding"
Constants included from Jekyll::EmbeddingsGenerator
Class Method Summary collapse
- .cache_hit?(existing_record, fingerprint) ⇒ Boolean
- .fetch_record(uid) ⇒ Object
- .find_related(post) ⇒ Object
- .should_upsert?(data, existing_record) ⇒ Boolean
- .upsert_if_needed(data, existing_record = nil) ⇒ Object
Methods included from Jekyll::EmbeddingsGenerator
Class Method Details
.cache_hit?(existing_record, fingerprint) ⇒ Boolean
33 34 35 36 37 38 39 |
# File 'lib/jekyll/embeddings-generator/embeddings/store.rb', line 33 def cache_hit?(existing_record, fingerprint) return false if existing_record.nil? return false if existing_record["embedding_fingerprint"].nil? return false if existing_record["embedding"].nil? existing_record["embedding_fingerprint"] == fingerprint end |
.fetch_record(uid) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/jekyll/embeddings-generator/embeddings/store.rb', line 14 def fetch_record(uid) config = Jekyll::EmbeddingsGenerator.config response = HTTParty.get( "#{config["supabase_url"]}/rest/v1/#{config["db_table"]}", :headers => supabase_headers(config), :query => { "uid" => "eq.#{uid}", "select" => RECORD_SELECT, } ) Jekyll.logger.debug "response headers: #{response.headers}" Jekyll.logger.debug "response body: #{response.body}" raise "Supabase API error: #{response.code} - #{response.body}" unless response.success? response.parsed_response&.first end |
.find_related(post) ⇒ Object
60 61 62 63 64 65 66 67 |
# File 'lib/jekyll/embeddings-generator/embeddings/store.rb', line 60 def (post) config = Jekyll::EmbeddingsGenerator.config post_uid = post.data[config["uid"]] = (post_uid) return [] if .nil? || .empty? (, post_uid) end |
.should_upsert?(data, existing_record) ⇒ Boolean
41 42 43 44 45 46 47 48 |
# File 'lib/jekyll/embeddings-generator/embeddings/store.rb', line 41 def should_upsert?(data, existing_record) return true if existing_record.nil? fingerprint_changed = data. != existing_record["embedding_fingerprint"] = Time.parse(existing_record["most_recent_edit"].to_s) < data.most_recent_edit fingerprint_changed || end |
.upsert_if_needed(data, existing_record = nil) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/jekyll/embeddings-generator/embeddings/store.rb', line 50 def upsert_if_needed(data, existing_record = nil) existing_record ||= fetch_record(data.uid) should_update = should_upsert?(data, existing_record) Jekyll.logger.debug "Embeddings Generator:", "Should update? #{should_update ? "Yes" : "No"}" return false unless should_update (data) end |