MCPcopy Create free account
hub / github.com/dais-polymtl/flock / ToSQL

Method ToSQL

src/custom_parser/query/model_parser.cpp:380–536  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

378}
379
380std::string ModelParser::ToSQL(const QueryStatement& statement) const {
381 std::string query;
382
383 switch (statement.type) {
384 case StatementType::CREATE_MODEL: {
385 const auto& create_stmt = static_cast<const CreateModelStatement&>(statement);
386 query = ExecuteQueryWithStorage([&create_stmt](duckdb::Connection& con) {
387 auto result = con.Query(duckdb_fmt::format(
388 " SELECT model_name"
389 " FROM flock_storage.flock_config.FLOCKMTL_MODEL_DEFAULT_INTERNAL_TABLE"
390 " WHERE model_name = '{}'"
391 " UNION ALL "
392 " SELECT model_name "
393 " FROM flock_storage.flock_config.FLOCKMTL_MODEL_USER_DEFINED_INTERNAL_TABLE"
394 " WHERE model_name = '{}'"
395 " UNION ALL "
396 " SELECT model_name "
397 " FROM flock_config.FLOCKMTL_MODEL_USER_DEFINED_INTERNAL_TABLE"
398 " WHERE model_name = '{}';",
399 create_stmt.model_name, create_stmt.model_name, create_stmt.model_name));
400
401 auto& materialized_result = result->Cast<duckdb::MaterializedQueryResult>();
402 if (materialized_result.RowCount() != 0) {
403 throw std::runtime_error(duckdb_fmt::format("Model '{}' already exist.", create_stmt.model_name));
404 }
405
406 // Insert the new model
407 auto insert_query = duckdb_fmt::format(" INSERT INTO "
408 " {}flock_config.FLOCKMTL_MODEL_USER_DEFINED_INTERNAL_TABLE "
409 " (model_name, model, provider_name, model_args) "
410 " VALUES ('{}', '{}', '{}', '{}');",
411 create_stmt.catalog, create_stmt.model_name, create_stmt.model,
412 create_stmt.provider_name, create_stmt.model_args.dump());
413 con.Query(insert_query);
414
415 return std::string("SELECT 'Model created successfully' AS status");
416 },
417 false);
418 break;
419 }
420 case StatementType::DELETE_MODEL: {
421 const auto& delete_stmt = static_cast<const DeleteModelStatement&>(statement);
422 query = ExecuteSetQuery(
423 duckdb_fmt::format(" DELETE FROM flock_config.FLOCKMTL_MODEL_USER_DEFINED_INTERNAL_TABLE "
424 " WHERE model_name = '{}'; "
425 " DELETE FROM "
426 " flock_storage.flock_config.FLOCKMTL_MODEL_USER_DEFINED_INTERNAL_TABLE "
427 " WHERE model_name = '{}';",
428 delete_stmt.model_name, delete_stmt.model_name),
429 "Model deleted successfully",
430 false);
431 break;
432 }
433 case StatementType::UPDATE_MODEL: {
434 const auto& update_stmt = static_cast<const UpdateModelStatement&>(statement);
435 query = ExecuteQueryWithStorage([&update_stmt](duckdb::Connection& con) {
436 // Get the location of the model_name if local or global
437 auto result = con.Query(

Callers 1

ParsePromptOrModelMethod · 0.45

Calls 4

ExecuteQueryWithStorageFunction · 0.85
ExecuteSetQueryFunction · 0.85
ExecuteGetQueryFunction · 0.85
ToStringMethod · 0.80

Tested by

no test coverage detected