Skip to content

feat: infer JSON schema#15

Merged
hgrsd merged 7 commits intomainfrom
json-schema-feature
Jun 7, 2025
Merged

feat: infer JSON schema#15
hgrsd merged 7 commits intomainfrom
json-schema-feature

Conversation

@hgrsd
Copy link
Owner

@hgrsd hgrsd commented Jun 7, 2025

This PR adds a translation layer from the domain schema used internally by drivel to JSON schema (draft 2020-12).

hgrsd added 7 commits June 7, 2025 16:25
Implement ToJsonSchema trait for SchemaState with complete type mappings:
- Basic types: Boolean, Null, Initial/Indefinite states
- String types: All formats (UUID, Email, URL, Date variants, Hostname, RFC2822)
- Number types: Integer and Float with ranges
- Nullable types: Array syntax ["type", "null"] for nullable values
- Complex types: Arrays with items/length constraints, Objects with required/optional fields
- Document format: Complete JSON Schema 2020-12 documents with metadata

Features:
- Array type syntax for nullables (not anyOf unions)
- Custom vendor extensions (x-drivel-type) for non-standard formats
- Standard format mappings (UUID→uuid, Email→email, URL→uri, etc.)
- Comprehensive edge case handling (empty objects, single values, negative ranges)

Test coverage: 29 focused unit tests covering all type conversions and edge cases
- Create dedicated json_schema_tests module with submodules for different types
- Split multi-case tests into individual focused test functions
- Add helper functions to reduce boilerplate and improve readability
- Maintain 100% test coverage with clearer, more maintainable organization
@hgrsd hgrsd force-pushed the json-schema-feature branch from 4bf118c to c2d1bfd Compare June 7, 2025 15:58
@hgrsd hgrsd merged commit 920e89b into main Jun 7, 2025
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant