Skip to content

Commit 2a3738f

Browse files
oskardudyczclaude
andcommitted
feat: add database-level error collection to relationship validation
Completed hierarchical error context by implementing database-level error collection that aggregates schema errors as an array. Changes: - Modified ValidateDatabaseSchemas to use MapRecordCollectErrors instead of ExtractTypeValidationErrors - Database-level validation now collects errors from all schemas as an array - Removed unused ExtractTypeValidationErrors import - Added comprehensive tests in validateDatabaseSchemas.type.spec.ts covering: * Success case when all schemas are valid * Single invalid schema with full context chain (schema → table → relationship) * Multiple invalid schemas with errors collected as separate array items * Empty database success case The complete error hierarchy is now: - Database level: Array of schema errors - Schema level: { schema, errors: [...table errors] } - Table level: { table, errors: [...relationship errors] } - Relationship level: { relationship, errors: [...validation errors] } All validation errors maintain proper TypeValidationResult structure throughout the chain, enabling precise error reporting with full context at every level. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 673f0f2 commit 2a3738f

File tree

4 files changed

+243
-1977
lines changed

4 files changed

+243
-1977
lines changed

src/packages/dumbo/src/core/schema/components/relationships/relationshipValidation.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import type {
1111
AND,
1212
AnyTypeValidationError,
1313
AnyTypeValidationFailed,
14-
ExtractTypeValidationErrors,
1514
FailOnFirstTypeValidationError,
1615
FilterNotExistingInUnion,
1716
HaveTuplesTheSameLength,
@@ -479,16 +478,20 @@ export type ValidateDatabaseSchema<
479478
? ValidateSchemaTables<Tables, SchemaName, Schema, Schemas>
480479
: TypeValidationSuccess;
481480

482-
export type ValidateDatabaseSchemas<Schemas extends DatabaseSchemas> = {
483-
[SchemaName in keyof Schemas]: ValidateDatabaseSchema<
484-
Schemas[SchemaName],
485-
Schemas
486-
>;
487-
}[keyof Schemas] extends infer Results
488-
? ExtractTypeValidationErrors<Results> extends never
489-
? TypeValidationSuccess
490-
: TypeValidationError<ExtractTypeValidationErrors<Results>>
491-
: TypeValidationSuccess;
481+
export type ValidateDatabaseSchemas<Schemas extends DatabaseSchemas> =
482+
MapRecordCollectErrors<
483+
Schemas,
484+
{
485+
[SchemaName in keyof Schemas]: ValidateDatabaseSchema<
486+
Schemas[SchemaName],
487+
Schemas
488+
>;
489+
}
490+
> extends infer Results
491+
? AnyTypeValidationFailed<Results> extends true
492+
? TypeValidationError<Results>
493+
: TypeValidationSuccess
494+
: TypeValidationSuccess;
492495

493496
// TODO: Use in DatabaseSchema schema component validation
494497
// export type ValidatedSchemaComponent<

0 commit comments

Comments
 (0)