| 111 | } |
| 112 | |
| 113 | inline std::string QueryParser::ParsePromptOrModel(Tokenizer tokenizer, const std::string& query) { |
| 114 | auto token = tokenizer.NextToken(); |
| 115 | auto value = duckdb::StringUtil::Upper(token.value); |
| 116 | if (token.type == TokenType::KEYWORD && (value == "MODEL" || value == "MODELS")) { |
| 117 | ModelParser model_parser; |
| 118 | model_parser.Parse(query, statement); |
| 119 | return model_parser.ToSQL(*statement); |
| 120 | } else if (token.type == TokenType::KEYWORD && (value == "PROMPT" || value == "PROMPTS")) { |
| 121 | PromptParser prompt_parser; |
| 122 | prompt_parser.Parse(query, statement); |
| 123 | return prompt_parser.ToSQL(*statement); |
| 124 | } else if (token.type == TokenType::KEYWORD && (value == "GLOBAL" || value == "LOCAL")) { |
| 125 | return ParsePromptOrModel(tokenizer, query); |
| 126 | } else { |
| 127 | throw std::runtime_error(duckdb_fmt::format("Unknown keyword: {}", token.value)); |
| 128 | } |
| 129 | } |
| 130 | |
| 131 | }// namespace flock |