MeliGraph.Config (MeliGraph v0.2.1)

Copy Markdown View Source

Configuração centralizada, validada uma vez no start_link. Passada para todos os processos da supervision tree via conf:.

Inspirado no padrão do Oban: um struct imutável que carrega todas as configurações necessárias, eliminando Application.get_env espalhado e permitindo múltiplas instâncias com configurações diferentes.

Summary

Functions

Cria e valida uma nova configuração a partir das opções fornecidas.

Types

t()

@type t() :: %MeliGraph.Config{
  algorithms: [atom()],
  graph_type: :directed | :bipartite,
  name: atom(),
  plugins: [{module(), keyword()}],
  registry: atom(),
  result_ttl: pos_integer(),
  segment_max_edges: pos_integer(),
  segment_ttl: pos_integer(),
  testing: :disabled | :sync
}

Functions

new(opts)

@spec new(keyword()) :: t()

Cria e valida uma nova configuração a partir das opções fornecidas.

Opções obrigatórias

  • :name - nome da instância (atom)
  • :graph_type - :directed ou :bipartite

Opções opcionais

  • :segment_max_edges - máximo de arestas por segmento (padrão: 1_000_000)
  • :segment_ttl - TTL dos segmentos em ms (padrão: 24h)
  • :result_ttl - TTL dos resultados em cache em ms (padrão: 30min)
  • :algorithms - lista de algoritmos habilitados (padrão: [:pagerank, :salsa])
  • :testing - modo de testing: :disabled ou :sync (padrão: :disabled)
  • :plugins - lista de {módulo, opts} dos plugins (padrão: Pruner + CacheCleaner)