-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
Summary
Add convenience methods to SchemaManager for accessing field and table definitions directly, without navigating the nested schema structure.
Motivation
Currently, to access field metadata (like allowedValues for Enum fields), consumers must navigate the nested schema:
const schema = schemaManager.getSchema();
const statusField = schema.connections['default'].tables['service_portfolio'].fields['status'];
const allowedValues = statusField.allowedValues;This is verbose and error-prone. A convenience method would simplify this common use case.
Proposed API
// Get field definition
const statusField = schemaManager.getFieldDefinition('default', 'service_portfolio', 'status');
// → { type: 'Enum', allowedValues: ['Vorgeschlagen', 'In Prüfung', ...], required: false, default: 'Vorgeschlagen' }
// Get table definition
const tableDefinition = schemaManager.getTableDefinition('default', 'service_portfolio');
// → { tableName: 'service_portfolio', keyField: 'service_portfolio_id', fields: {...} }
// Get allowed values for Enum field (shortcut)
const statusValues = schemaManager.getAllowedValues('default', 'service_portfolio', 'status');
// → ['Vorgeschlagen', 'In Prüfung', 'Akzeptiert', 'Abgelehnt', 'Deprecated']Use Cases
- Zod Schema Generation: Generate Zod enums from schema
allowedValues - OpenAPI Spec Generation: Generate enum constraints for API documentation
- UI Dropdowns: Populate select options from schema
- Validation: Check if a value is valid for an Enum field
- Type Generation: Generate TypeScript types from schema
Acceptance Criteria
- Add
getFieldDefinition(connectionName, tableName, fieldName): FieldDefinition | undefined - Add
getTableDefinition(connectionName, tableName): TableDefinition | undefined - Add
getAllowedValues(connectionName, tableName, fieldName): string[] | undefined - Throw descriptive errors for non-existent connections/tables/fields (or return undefined?)
- Add unit tests
- Update documentation
Related
- Used by:
service-portfolio-mcpproject - Eliminates need for hardcoded enum values across multiple files
Metadata
Metadata
Assignees
Labels
No labels