| 98 | |
| 99 | |
| 100 | std::string QueryParser::ParseQuery(const std::string& query) { |
| 101 | Tokenizer tokenizer(query); |
| 102 | |
| 103 | auto token = tokenizer.NextToken(); |
| 104 | auto value = duckdb::StringUtil::Upper(token.value); |
| 105 | if (token.type != TokenType::KEYWORD || |
| 106 | (value != "CREATE" && value != "DELETE" && value != "UPDATE" && value != "GET")) { |
| 107 | throw std::runtime_error(duckdb_fmt::format("Unknown keyword: {}", token.value)); |
| 108 | } |
| 109 | |
| 110 | return ParsePromptOrModel(tokenizer, query); |
| 111 | } |
| 112 | |
| 113 | inline std::string QueryParser::ParsePromptOrModel(Tokenizer tokenizer, const std::string& query) { |
| 114 | auto token = tokenizer.NextToken(); |