@aradox/multi-orm
Version:
Type-safe ORM with multi-datasource support, row-level security, and Prisma-like API for PostgreSQL, SQL Server, and HTTP APIs
89 lines • 2.16 kB
TypeScript
/**
* Schema Validation Layer
*
* Validates DSL schema structure and conventions BEFORE IR generation.
* Catches errors like:
* - Invalid naming conventions (PascalCase models, camelCase fields)
* - Missing bidirectional relations
* - Circular dependencies
* - Missing required attributes (@datasource, @id)
* - Invalid relation configurations
*
* These validations happen at parse time and produce errors with source locations.
*/
/**
* Validation error with schema context
*/
export interface SchemaValidationError {
message: string;
location: {
file: string;
line: number;
column: number;
length: number;
};
suggestion?: string;
code: string;
severity: 'error' | 'warning';
}
/**
* Schema element being validated
*/
export interface SchemaModel {
name: string;
datasource?: string;
line: number;
fields: SchemaField[];
}
export interface SchemaField {
name: string;
type: string;
line: number;
isOptional: boolean;
isList: boolean;
isId?: boolean;
map?: string;
relation?: SchemaRelation;
}
export interface SchemaEnum {
name: string;
values: string[];
line: number;
}
export interface SchemaRelation {
model: string;
fields: string[];
references: string[];
strategy?: string;
}
export interface SchemaDatasource {
name: string;
provider: string;
line: number;
}
/**
* Complete schema context for validation
*/
export interface SchemaContext {
filePath: string;
models: Map<string, SchemaModel>;
datasources: Map<string, SchemaDatasource>;
enums?: Map<string, SchemaEnum>;
}
/**
* Validation result
*/
export interface SchemaValidationResult {
valid: boolean;
errors: SchemaValidationError[];
warnings: SchemaValidationError[];
}
/**
* Main validation function - validates entire schema
*/
export declare function validateSchema(context: SchemaContext): SchemaValidationResult;
/**
* Format validation errors for display
*/
export declare function formatSchemaValidationErrors(result: SchemaValidationResult): string;
//# sourceMappingURL=schema-validator.d.ts.map