resolveChangeTarget runs the shared database resolver with elicitation fallback. The project parameter is passed to the server-side filter so it can disambiguate when the same database name exists in multiple projects.
(ctx context.Context, req *mcp.CallToolRequest, input ChangeInput)
| 291 | // The project parameter is passed to the server-side filter so it can disambiguate |
| 292 | // when the same database name exists in multiple projects. |
| 293 | func (s *Server) resolveChangeTarget(ctx context.Context, req *mcp.CallToolRequest, input ChangeInput) (*resolvedDatabase, *mcp.CallToolResult) { |
| 294 | resolveCtx, resolveCancel := context.WithTimeout(ctx, resolveTimeout) |
| 295 | defer resolveCancel() |
| 296 | |
| 297 | resolved, err := s.resolveDatabase(resolveCtx, input.Database, input.Instance, input.Project) |
| 298 | if err != nil { |
| 299 | return nil, formatToolError(err) |
| 300 | } |
| 301 | if !resolved.ambiguous { |
| 302 | return resolved, nil |
| 303 | } |
| 304 | picked, elicitErr := s.elicitDatabaseChoice(ctx, req, resolved) |
| 305 | if elicitErr != nil { |
| 306 | return nil, formatAmbiguousResult(input.Database, resolved.candidates) |
| 307 | } |
| 308 | return picked, nil |
| 309 | } |
| 310 | |
| 311 | // createSheet creates a sheet with base64-encoded SQL content. |
| 312 | func (s *Server) createSheet(ctx context.Context, project, sql string) (string, error) { |
no test coverage detected