Releases: Coding-Dev-Tools/schemaforge
Releases · Coding-Dev-Tools/schemaforge
v1.7.0 — VS Code Extension
SchemaForge v1.7.0 — VS Code Extension
This release ships the SchemaForge VS Code extension — live schema preview, quick conversion, and schema diffing directly from the editor.
New: VS Code Extension
- Live Preview — side panel showing active schema converted to all 11 formats (tabbed interface)
- Quick Convert —
Ctrl+Alt+S/Cmd+Alt+Sto convert to default target format - Format Detection —
Ctrl+Alt+D/Cmd+Alt+Dto detect schema format - Schema Diff — select two schema files for VS Code native diff comparison
- Right-Click Conversion — convert or detect from the file explorer
- Custom Editor —
.schemaforgefiles open with rich conversion preview - Auto-Refresh — preview updates on save and tab switch
Docs
- README: full VS Code extension section with config table
- Roadmap: v1.5.0 (EF Core), v1.6.0 (Scala), v1.7.0 (VS Code ext) added
- Format tables updated to include all 11 formats
Companion Repo
Extension source: https://github.com/Coding-Dev-Tools/vscode-schemaforge
v1.3.0 — GraphQL SDL Format Support
v1.3.0 — GraphQL SDL Format Support
New Format: GraphQL SDL (9th format)
SchemaForge now supports GraphQL Schema Definition Language as a first-class format:
- Parse files with type definitions, enums, input types, directives
- Generate clean SDL with proper non-null (!) annotations
- Full roundtripping through the internal representation
- Cross-format conversion with all 8 existing formats
Parser
GraphQLParser: handlestype,enum,input,scalardefinitions- Supports
@unique,@default,@iddirectives - Handles nullable (!), list types ([Type]), and nested type references
- Ignores Query/Mutation/Subscription root types
Generator
GraphQLGenerator: produces clean SDL from Schema IR- Automatic
IDtype for primary-key id columns - Proper non-null annotations (!) for required fields
- Enum definitions with values list
- Custom scalar declarations
CLI
--from graphqland--to graphqlnow available- 9 formats total: sql, prisma, drizzle, typeorm, django, sqlalchemy, alembic, json_schema, graphql
Testing
- 16 new tests: parsing, generation, roundtrip, cross-format
- Fixture file:
fixtures/sample.graphql - Total: 205 tests passing
v1.2.0 — JSON Schema Support
JSON Schema Support
SchemaForge v1.2.0 adds JSON Schema as the 8th supported format. You can now convert between JSON Schema and all 7 existing formats (SQL DDL, Prisma, Drizzle, TypeORM, Django, SQLAlchemy, Alembic).
New Format: json_schema
schemaforge convert --from sql --to json_schema --input schema.sql
schemaforge convert --from json_schema --to prisma --input schema.json
Parsing (JSON Schema → IR)
- Reads
$defsentries as tables with properties as columns - Full type mapping: string, integer, number, boolean, object, array + formats (date-time, uuid, email, etc.)
- ENUM columns from
"enum": [...]on string properties - Required fields → non-nullable columns
- maxLength → length type_arg, default values preserved, descriptions → comments
- Standalone schemas (no $defs) treated as single-table schema
Generation (IR → JSON Schema)
- Draft 2020-12 output with proper $schema header
- Each table → $defs entry with properties, required array, and type
- Type mappings: INTEGER→integer, STRING→string, DATETIME→date-time, ENUM→enum, etc.
- Single-table schemas get a $ref shortcut pointing to the definition
- TypeConfig overrides supported (override any ColumnType per format)
What Changed
- 6 new files: parser, generator, fixture, 29 tests
- CLI updated: json_schema included in --from/--to choices
- 189/189 tests passing
v1.1.0 — Custom Type Mapping Configuration
Custom Type Mapping Configuration
SchemaForge v1.1.0 introduces custom type mapping overrides. Users can now override any default type mapping per format via YAML or JSON config files.
New Feature: --type-map CLI option
schemaforge convert --from sql --to prisma --input schema.sql --type-map types.yaml
Template Variables in Override Strings
{length}— string/numeric length{precision}— decimal precision{scale}— decimal scale{values}— comma-separated ENUM values
Example Config (types.yaml)
overrides:
sql:
STRING: "VARCHAR({length})"
UUID: "UUID"
prisma:
STRING: "String @db.VarChar({length})"
UUID: "String @uuid"
sqlalchemy:
STRING: "Unicode({length})"
UUID: "Uuid"
DATETIME: "DateTime(timezone=True)"What Changed
- TypeConfig: Load from .yaml/.yml/.json with template variable resolution
- CLI:
--type-mapoption added toconvertcommand - All 7 generators forward type_config through resolve_type/build_type_string
- has_type_override helper: generators skip special-case formatting when override is active
- 282 new tests: 160/160 total passing
- Sample fixture:
fixtures/sample-type-overrides.yaml
v0.2.0 — Drizzle ORM bidirectional support
v0.2.0 — Drizzle ORM Bidirectional Support
New
- Drizzle ORM schema → SQL: parse pgTable/mysqlTable/sqliteTable definitions
- SQL → Drizzle ORM schema: generate TypeScript with type-correct column mappings
- Drizzle ↔ Prisma roundtrip: convert between both ORMs via the internal IR
- Supports: pgEnum, serial/bigserial, varchar/text, timestamp/date/time, JSONB/UUID, default values, primary keys, .notNull(), .unique()
- Dialect-aware: pg, mysql, sqlite table factory functions
Fixed
- Drizzle parser/generator were implemented but not registered in the conversion registry (_registry dict), causing all Drizzle-related conversions to raise ValueError("Unsupported format") — now properly imported and registered
Technical
- DrizzleParser: regex-based TypeScript schema parser (handles nested braces, string literals, comments)
- DrizzleGenerator: outputs idiomatic Drizzle ORM schema with runtime-overridable dialect
- 4 new tests: SQL→Drizzle, Drizzle→SQL, Drizzle→Prisma, Prisma→Drizzle (all passing)
- 40/40 tests passing
v0.1.0 — SQL DDL ↔ Prisma bidirectional conversion
Initial release of SchemaForge — bidirectional ORM schema converter.
Features
- SQL DDL → Prisma: Parse CREATE TABLE, CREATE TYPE ... AS ENUM, column types, constraints, defaults, indexes
- Prisma → SQL DDL: Convert Prisma models back to SQL with full schema fidelity
- Bidirectional roundtrip: SQL → Prisma → SQL preserves table structure, constraints, and types
- Rich CLI:
- Diff mode:
- 26 tests passing with 84%+ type mapping coverage
Supported Formats (v0.1.0)
- ✅ SQL DDL → Prisma
- ✅ Prisma → SQL DDL
Limitations (v0.1.0)
- Some type precision loss in roundtrip (e.g. TEXT → String → VARCHAR, BIGSERIAL → INTEGER)
- Drizzle, TypeORM, Django formats planned for v0.2.0-v0.4.0
Full roadmap: README.md