abstract class
Memo::Queries
- Memo::Queries
- Reference
- Object
Overview
Abstract query interface for database-backend-specific SQL.
Each backend (SQLite, PostgreSQL) implements all query methods with SQL native to that backend. This avoids placeholder translation and keeps SQL explicit per backend.
Direct Known Subclasses
Defined in:
memo/queries/base.crConstructors
Class Method Summary
Instance Method Summary
- #clear_completed_queue : Int32
- #clear_default_service : Nil
- #clear_query_cache(service_id : Int64) : Nil
- #clear_queue : Int32
- #count_chunks_by_hash(hash : Bytes) : Int64
- #count_chunks_for_service(service_id : Int64) : Int64
- #count_embeddings_for_service(service_id : Int64) : Int64
- #count_files : Int64
- #count_query_cache(service_id : Int64) : Int64
- #count_service_chunks(service_id : Int64) : Int64
- #count_service_embeddings(service_id : Int64) : Int64
- #count_service_sources(service_id : Int64) : Int64
- #count_services : Int64
- #count_vectors(service_id : Int64) : Int64
- #count_vocab(service_id : Int64) : Int64
- #db : DBHandle
- #delete_chunks(hash : Bytes, source_id : Int64, source_type : String) : Int32
- #delete_chunks(hash : Bytes, source_id : Int64) : Int32
- #delete_chunks_by_hash(hash : Bytes) : Nil
- #delete_embeddings_by_hash(hash : Bytes) : Nil
- #delete_embeddings_by_service(service_id : Int64) : Nil
- #delete_file(source_id : Int64) : Int64
-
#delete_index_data(service_id : Int64) : Nil
Remove a service's vectors, journal entries and journal state
- #delete_service(id : Int64) : Nil
- #delete_source_blob(source_type : String, external_id : Bytes) : Int64
- #delete_source_by_id(internal_id : Int64) : Int64
- #delete_source_int(source_type : String, external_id : Int64) : Int64
- #delete_source_text(source_type : String, external_id : String) : Int64
- #delete_text(source_id : Int64) : Nil
- #delete_vector(embedding_id : Int64) : Nil
- #delete_vocab(service_id : Int64) : Nil
-
#embedding_ids_for_hash(hash : Bytes) : Array(Tuple(Int64, Int64))
{embedding id, service id} for every service's embedding of a hash
- #embedding_ids_without_vectors(service_id : Int64) : Array(Int64)
- #enqueue(source_id : Int64, text : String, created_at : Int64) : Nil
- #fetch_search_results(rowids : Array(Int64), service_id : Int64, include_text : Bool) : Array(Tuple(UInt64, Int64, Bytes, String, Int64, Int64 | Nil, String | Nil, Bytes | Nil, Int64 | Nil, Int64 | Nil, String | Nil, Bytes | Nil, Int64 | Nil, Int64 | Nil, String | Nil, Bytes | Nil, Int32 | Nil, Int32, Int32, Int32, String | Nil))
-
#filter_candidates(service_id : Int64, params : Array(DB::Any), where_clauses : Array(String), text_join : String, fts_join : String, candidate_ids : Array(Int64)) : Set(UInt64)
Which of
candidate_idspass the filter clauses (looked up by id, so the cost depends on the number of candidates, not the collection) - #find_service_id(name : String) : Int64 | Nil
- #find_source_blob(source_type : String, external_id : Bytes) : Int64 | Nil
- #find_source_blob_any_type(external_id : Bytes) : Int64 | Nil
- #find_source_int(source_type : String, external_id : Int64) : Int64 | Nil
- #find_source_int_any_type(external_id : Int64) : Int64 | Nil
- #find_source_text(source_type : String, external_id : String) : Int64 | Nil
- #find_source_text_any_type(external_id : String) : Int64 | Nil
-
#for_connection(cnn : DB::Connection) : Queries
Same queries, run on one connection (for use inside a transaction).
- #get_all_texts : Array(String)
- #get_chunk_hashes(source_id : Int64, source_type : String | Nil) : Array(Bytes)
- #get_chunk_id(source_id : Int64, offset : Int32 | Nil) : Int64
- #get_chunks_for_reindex(source_type : String, service_id : Int64) : Array(Tuple(Int64, Int64 | Nil, String | Nil, Int64 | Nil, Int64 | Nil))
- #get_default_service : ServiceProvider::Info | Nil
- #get_embedding_hashes_for_service(service_id : Int64) : Array(Bytes)
- #get_embedding_rowid(hash : Bytes, service_id : Int64) : Int64
- #get_embedding_rowid?(hash : Bytes, service_id : Int64) : Int64 | Nil
- #get_existing_words(service_id : Int64, words : Array(String)) : Set(String)
- #get_file_by_hash(hash : Bytes) : Files::FileRecord | Nil
- #get_file_by_path(path : String) : Files::FileRecord | Nil
- #get_file_by_source(source_id : Int64) : Files::FileRecord | Nil
-
#get_index_state(service_id : Int64) : Tuple(Int64, Bool) | Nil
{pruned_through, vectors_backfilled}
- #get_pending_queue(limit : Int32) : Array(Tuple(Int64, Int64, String))
- #get_query_cache(query : String, service_id : Int64) : Tuple(Bytes, Int32) | Nil
- #get_queue_attempts(id : Int64) : Int32
- #get_queue_item(source_id : Int64) : Tuple(Int64, String) | Nil
- #get_recent_query_cache(service_id : Int64, limit : Int32) : Array(Tuple(String, Bytes, Int32))
- #get_service_by_format_model(format : String, model : String) : Tuple(Int64, String, String | Nil, String, Int32, Int32, Float64) | Nil
- #get_service_by_name(name : String) : Tuple(Int64, String, String | Nil, String, Int32, Int32, Float64) | Nil
- #get_service_info(id : Int64) : ServiceProvider::Info | Nil
- #get_service_info_by_name(name : String) : ServiceProvider::Info | Nil
- #get_service_tokens_per_byte(service_id : Int64) : Float64 | Nil
- #get_source_external(internal_id : Int64) : Tuple(String, Int64 | Nil, String | Nil, Bytes | Nil) | Nil
- #get_text(source_id : Int64) : String | Nil
- #get_text_hash(source_id : Int64) : Bytes | Nil
- #get_texts_for_reindex(source_type : String) : Array(Tuple(Int64, Int64 | Nil, Int64 | Nil, String))
- #get_tokens_per_byte(service_id : Int64) : Float64 | Nil
- #get_vector(embedding_id : Int64) : Bytes | Nil
- #get_vocab(service_id : Int64, &block : DB::ResultSet -> ) : Nil
- #increment_match_count(chunk_ids : Array(Int64)) : Nil
- #increment_read_count(chunk_ids : Array(Int64)) : Nil
-
#index_changes_since(service_id : Int64, seq : Int64) : Array(Int64)
Distinct embedding ids logged after
seq - #insert_chunk_ignore(hash : Bytes, source_id : Int64, source_type : String, pair_id : Int64 | Nil, parent_id : Int64 | Nil, offset : Int32 | Nil, size : Int32, created_at : Int64) : Int64
- #insert_embedding_ignore(hash : Bytes, service_id : Int64, token_count : Int32, created_at : Int64) : Int64
- #insert_service(name : String, format : String, base_url : String | Nil, model : String, dimensions : Int32, max_tokens : Int32, created_at : Int64) : Int64
-
#insert_service_full(name : String, format : String, base_url : String | Nil, model : String, dimensions : Int32, max_tokens : Int32, is_default : Int32, created_at : Int64) : Int64
Insert service with is_default and return ID (for ServiceProvider.create)
- #insert_source(source_type : String, created_at : Int64) : Int64
- #insert_source_blob(source_type : String, external_id : Bytes, created_at : Int64) : Int64
- #insert_source_int(source_type : String, external_id : Int64, created_at : Int64) : Int64
- #insert_source_text(source_type : String, external_id : String, created_at : Int64) : Int64
- #list_files(limit : Int32, offset : Int32) : Array(Files::FileRecord)
- #list_services : Array(ServiceProvider::Info)
- #list_services_by_format(format : String) : Array(ServiceProvider::Info)
- #list_sources(source_type : String, limit : Int32, offset : Int32) : Array(Tuple(Int64, Int64 | Nil, String | Nil, Bytes | Nil))
- #load_embedding_rowids(service_id : Int64, source_type : String, external_ids : Array(Int64)) : Array(Tuple(Int64, Int64))
- #log_index_change(service_id : Int64, embedding_id : Int64) : Nil
- #mark_queue_failed(id : Int64, error_message : String | Nil, attempts : Int32, processed_at : Int64) : Nil
- #mark_queue_item_success(id : Int64, processed_at : Int64, attempts : Int32) : Nil
- #mark_queue_retry(id : Int64, attempts : Int32, error_message : String | Nil) : Nil
- #mark_queue_success(id : Int64, processed_at : Int64) : Nil
- #max_index_log_seq(service_id : Int64) : Int64
- #prune_index_log(service_id : Int64, through : Int64) : Nil
- #prune_query_cache(service_id : Int64, count : Int64) : Nil
- #queue_stats : Tuple(Int64, Int64)
- #search_filtered_rowids(service_id : Int64, params : Array(DB::Any), where_clauses : Array(String), text_join : String, fts_join : String) : Set(UInt64)
- #service_exists?(id : Int64) : Bool
- #set_default_service(id : Int64) : Nil
- #set_index_pruned_through(service_id : Int64, seq : Int64) : Nil
- #set_vectors_backfilled(service_id : Int64) : Nil
- #update_service(id : Int64, updates : Array(String), params : Array(DB::Any)) : Int64
- #update_tokens_per_byte(tokens_per_byte : Float64, service_id : Int64) : Nil
- #update_word_frequency(count : Int32, word : String, service_id : Int64) : Nil
- #upsert_file(source_id : Int64, path : String, content_hash : Bytes, mtime : Int64, size : Int64, created_at : Int64) : Nil
- #upsert_query_cache(query : String, service_id : Int64, embedding : Bytes, token_count : Int32, created_at : Int64) : Nil
- #upsert_text(source_id : Int64, content : String, content_hash : Bytes | Nil, created_at : Int64) : Nil
- #upsert_vector(embedding_id : Int64, service_id : Int64, vector : Bytes) : Nil
- #upsert_vocab(word : String, service_id : Int64, embedding : Bytes, frequency : Int32, created_at : Int64) : Nil
-
#vectors_after(service_id : Int64, after_id : Int64, limit : Int32) : Array(Tuple(Int64, Bytes))
Up to
limit{embedding id, vector} pairs with ids aboveafter_id, in id order
Constructor Detail
Class Method Detail
Instance Method Detail
Remove a service's vectors, journal entries and journal state
{embedding id, service id} for every service's embedding of a hash
Which of candidate_ids pass the filter clauses (looked up by id, so the
cost depends on the number of candidates, not the collection)
Same queries, run on one connection (for use inside a transaction).
{pruned_through, vectors_backfilled}
Distinct embedding ids logged after seq
Insert service with is_default and return ID (for ServiceProvider.create)
Up to limit {embedding id, vector} pairs with ids above after_id, in id order