#include "project_settings.hpp" #include "collection_registry.hpp" #include "settings.hpp" namespace svapi { ProjectEmbeddingSettings ProjectEmbeddingSettings::fromJson(const nlohmann::json& j) { ProjectEmbeddingSettings p; p.project = j.value("project", p.project); p.openaiApiBase = j.value("openai_api_base", p.openaiApiBase); p.openaiApiKey = j.value("openai_api_key", p.openaiApiKey); p.defaultEmbeddingModel = j.value("default_embedding_model", p.defaultEmbeddingModel); return p; } nlohmann::json ProjectEmbeddingSettings::toJson() const { return {{"project", project}, {"openai_api_base", openaiApiBase}, {"openai_api_key", openaiApiKey}, {"default_embedding_model", defaultEmbeddingModel}}; } std::string projectSettingsDocId(const std::string& project) { return "project_" + project; } ResolvedEmbedding resolveEmbedding(const Settings& global, const ProjectEmbeddingSettings* proj, const CollectionMeta& coll) { ResolvedEmbedding r{global.openaiApiBase, global.openaiApiKey, global.defaultEmbeddingModel}; if (proj) { if (!proj->openaiApiBase.empty()) r.apiBase = proj->openaiApiBase; if (!proj->openaiApiKey.empty()) r.apiKey = proj->openaiApiKey; if (!proj->defaultEmbeddingModel.empty()) r.model = proj->defaultEmbeddingModel; } if (!coll.embeddingModel.empty()) r.model = coll.embeddingModel; return r; } } // namespace svapi