Skip to content

Releases: Coding-Dev-Tools/schemaforge

v1.7.0 — VS Code Extension

15 May 08:58

Choose a tag to compare

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 ConvertCtrl+Alt+S / Cmd+Alt+S to convert to default target format
  • Format DetectionCtrl+Alt+D / Cmd+Alt+D to 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.schemaforge files 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

15 May 07:58

Choose a tag to compare

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: handles type, enum, input, scalar definitions
  • Supports @unique, @default, @id directives
  • Handles nullable (!), list types ([Type]), and nested type references
  • Ignores Query/Mutation/Subscription root types

Generator

  • GraphQLGenerator: produces clean SDL from Schema IR
  • Automatic ID type for primary-key id columns
  • Proper non-null annotations (!) for required fields
  • Enum definitions with values list
  • Custom scalar declarations

CLI

  • --from graphql and --to graphql now 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

15 May 07:50

Choose a tag to compare

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 $defs entries 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

15 May 07:45

Choose a tag to compare

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-map option added to convert command
  • 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

15 May 05:57

Choose a tag to compare

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

15 May 03:41

Choose a tag to compare

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