Class: HotwireClub::MCP::Database::ChunksRepo

Inherits:
Object
  • Object
show all
Defined in:
lib/hotwire_club/mcp/database/repositories/chunks_repo.rb

Instance Method Summary collapse

Instance Method Details

#by_id(chunk_id) ⇒ Hash, ...

Get a chunk by ID

Parameters:

  • chunk_id (String)

    Chunk ID

Returns:

  • (Hash, ROM::Struct::Chunk, nil)

    Chunk or nil if not found



11
12
13
14
15
# File 'lib/hotwire_club/mcp/database/repositories/chunks_repo.rb', line 11

def by_id(chunk_id)
  return nil if chunk_id.nil? || chunk_id.empty?

  container.relations[:chunks].where(chunk_id: chunk_id).one
end

#search(query:, category: nil, tags: [], limit: 8) ⇒ Array

Search chunks using full-text search with optional filters

Parameters:

  • query (String)

    Search query

  • category (String, nil) (defaults to: nil)

    Filter by category

  • tags (Array<String>) (defaults to: [])

    Filter by tags (chunks must have all tags)

  • limit (Integer) (defaults to: 8)

    Maximum number of results (default: 8)

Returns:

  • (Array)

    Array of matching chunks



24
25
26
27
28
29
30
31
32
33
# File 'lib/hotwire_club/mcp/database/repositories/chunks_repo.rb', line 24

def search(query:, category: nil, tags: [], limit: 8)
  query = query.to_s.strip
  return [] if query.empty?

  chunks_relation = container.relations[:chunks]
  relation = chunks_relation.full_text_search(query)
  relation = apply_category_filter(relation, category)
  relation = apply_tags_filter(relation, tags) if tags.any?
  relation.limit(limit).to_a
end