MCPcopy Create free account
hub / github.com/bytebase/bytebase / fetchMetadata

Method fetchMetadata

backend/api/mcp/tool_schema.go:384–413  ·  view source on GitHub ↗

fetchMetadata calls DatabaseService/GetDatabaseMetadata and decodes the response.

(ctx context.Context, resourceName, filter string, limit int32)

Source from the content-addressed store, hash-verified

382
383// fetchMetadata calls DatabaseService/GetDatabaseMetadata and decodes the response.
384func (s *Server) fetchMetadata(ctx context.Context, resourceName, filter string, limit int32) (*databaseMetadata, error) {
385 body := map[string]any{
386 "name": resourceName + "/metadata",
387 }
388 if filter != "" {
389 body["filter"] = filter
390 }
391 if limit > 0 {
392 body["limit"] = limit
393 }
394
395 resp, err := s.apiRequest(ctx, "/bytebase.v1.DatabaseService/GetDatabaseMetadata", body)
396 if err != nil {
397 return nil, &toolError{
398 Code: "SCHEMA_FETCH_ERROR",
399 Message: fmt.Sprintf("metadata request failed: %s", err.Error()),
400 Suggestion: "check network connectivity and try again",
401 }
402 }
403
404 if resp.Status >= 400 {
405 return nil, translateMetadataError(resp)
406 }
407
408 var metadata databaseMetadata
409 if err := json.Unmarshal(resp.Body, &metadata); err != nil {
410 return nil, errors.Wrap(err, "failed to parse database metadata")
411 }
412 return &metadata, nil
413}
414
415// translateMetadataError maps GetDatabaseMetadata HTTP errors into toolError codes.
416func translateMetadataError(resp *apiResponse) error {

Callers 2

handleGetSchemaMethod · 0.95
lookupTableCandidatesMethod · 0.95

Calls 4

apiRequestMethod · 0.95
translateMetadataErrorFunction · 0.85
UnmarshalMethod · 0.80
ErrorMethod · 0.45

Tested by

no test coverage detected