refactor(core): route integrations through adapter factory

This commit is contained in:
2026-07-11 20:52:41 +02:00
parent 1e0911bb6a
commit dbbab6d005
8 changed files with 245 additions and 105 deletions
+12 -21
View File
@@ -46,35 +46,26 @@ def open_store(cfg, table: str):
Sul server preferisce la connessione diretta. In profilo workstation usa `vector_write_rest`
se configurato, con upsert remoto non distruttivo.
"""
if has_vector_write_rest(cfg) and (cfg.profile == "workstation" or cfg.vector_db is None):
from tht.vectorstore.rest_client import VectorRestClient
from tht.vectorstore.rest_writer import RestVectorWriter
from tht.adapters.factory import build_vector_loader
return RestVectorWriter(VectorRestClient(cfg.vector_write_rest), table=table)
from tht.db.connection import make_engine
from tht.vectorstore.store import VectorStore
engine = make_engine(cfg.vector_db)
return VectorStore(
engine, schema=cfg.vector_db.db_schema, table=table, dim=cfg.embeddings.dim
)
return build_vector_loader(cfg, table)
def open_searcher(cfg):
"""Searcher per la LETTURA (similarity search): via REST se `vector_rest` è configurato,
altrimenti connessione diretta (dev/test)."""
if cfg.vector_rest is not None:
from tht.vectorstore.reader import RestSearcher
from tht.vectorstore.rest_client import VectorRestClient
from tht.adapters.factory import build_vector_store
from tht.vectorstore.reader import tables_for_kinds
return RestSearcher(VectorRestClient(cfg.vector_rest))
from tht.db.connection import make_engine
from tht.vectorstore.reader import DirectSearcher
store = build_vector_store(cfg)
return DirectSearcher(
make_engine(cfg.vector_db), schema=cfg.vector_db.db_schema, dim=cfg.embeddings.dim
)
class AdapterSearcher:
def search(self, query_vec, top_n=10, kinds=None):
return store.search(
tables_for_kinds(kinds), query_vec, limit=top_n, kinds=kinds
)
return AdapterSearcher()
def _print_stats(stats) -> None: