- Implement functionality to create, update, delete, and view relationships between tables. - Introduce new UI screens for managing relationships, including forms for adding and editing relationships. - Enhance table editor with navigation to relationship management. - Ensure relationships are displayed in a structured table format for better usability.
109 lines
3.4 KiB
Go
109 lines
3.4 KiB
Go
// Package relspecgo provides bidirectional conversion between database schema formats.
|
|
//
|
|
// RelSpec is a comprehensive database schema tool that reads, writes, and transforms
|
|
// database schemas across multiple formats including live databases, ORM models,
|
|
// schema definition languages, and data interchange formats.
|
|
//
|
|
// # Features
|
|
//
|
|
// - Read from 15+ formats: PostgreSQL, SQLite, DBML, GORM, Prisma, Drizzle, and more
|
|
// - Write to 15+ formats: SQL, ORM models, schema definitions, JSON/YAML
|
|
// - Interactive TUI editor for visual schema management
|
|
// - Schema diff and merge capabilities
|
|
// - Format-agnostic intermediate representation
|
|
//
|
|
// # Architecture
|
|
//
|
|
// RelSpec uses a hub-and-spoke architecture with models.Database as the central type:
|
|
//
|
|
// Input Format → Reader → models.Database → Writer → Output Format
|
|
//
|
|
// This allows any supported input format to be converted to any supported output format
|
|
// without requiring N² conversion implementations.
|
|
//
|
|
// # Key Packages
|
|
//
|
|
// - pkg/models: Core data structures (Database, Schema, Table, Column, etc.)
|
|
// - pkg/readers: Input format readers (dbml, pgsql, gorm, etc.)
|
|
// - pkg/writers: Output format writers (dbml, pgsql, gorm, etc.)
|
|
// - pkg/ui: Interactive terminal UI for schema editing
|
|
// - pkg/diff: Schema comparison and difference detection
|
|
// - pkg/merge: Schema merging utilities
|
|
// - pkg/transform: Validation and normalization
|
|
//
|
|
// # Installation
|
|
//
|
|
// go install git.warky.dev/wdevs/relspecgo/cmd/relspec@latest
|
|
//
|
|
// # Usage
|
|
//
|
|
// Command-line conversion:
|
|
//
|
|
// relspec convert --from dbml --from-path schema.dbml \
|
|
// --to gorm --to-path ./models
|
|
//
|
|
// Interactive editor:
|
|
//
|
|
// relspec edit --from pgsql --from-conn "postgres://..." \
|
|
// --to dbml --to-path schema.dbml
|
|
//
|
|
// Schema comparison:
|
|
//
|
|
// relspec diff --source-type pgsql --source-conn "postgres://..." \
|
|
// --target-type dbml --target-path schema.dbml
|
|
//
|
|
// Merge schemas:
|
|
//
|
|
// relspec merge --target schema1.dbml --sources schema2.dbml,schema3.dbml
|
|
//
|
|
// # Supported Formats
|
|
//
|
|
// Input/Output Formats:
|
|
// - dbml: Database Markup Language
|
|
// - dctx: DCTX schema files
|
|
// - drawdb: DrawDB JSON format
|
|
// - graphql: GraphQL schema definition
|
|
// - json: JSON schema representation
|
|
// - yaml: YAML schema representation
|
|
// - gorm: Go GORM models
|
|
// - bun: Go Bun models
|
|
// - drizzle: TypeScript Drizzle ORM
|
|
// - prisma: Prisma schema language
|
|
// - typeorm: TypeScript TypeORM entities
|
|
// - pgsql: PostgreSQL (live DB or SQL)
|
|
// - sqlite: SQLite (database file or SQL)
|
|
//
|
|
// # Library Usage
|
|
//
|
|
// RelSpec can be used as a Go library:
|
|
//
|
|
// import (
|
|
// "git.warky.dev/wdevs/relspecgo/pkg/models"
|
|
// "git.warky.dev/wdevs/relspecgo/pkg/readers/dbml"
|
|
// "git.warky.dev/wdevs/relspecgo/pkg/writers/gorm"
|
|
// )
|
|
//
|
|
// // Read DBML
|
|
// reader := dbml.NewReader(&readers.ReaderOptions{
|
|
// FilePath: "schema.dbml",
|
|
// })
|
|
// db, err := reader.ReadDatabase()
|
|
//
|
|
// // Write GORM models
|
|
// writer := gorm.NewWriter(&writers.WriterOptions{
|
|
// OutputPath: "./models",
|
|
// PackageName: "models",
|
|
// })
|
|
// err = writer.WriteDatabase(db)
|
|
//
|
|
// # Documentation
|
|
//
|
|
// Full documentation available at: https://git.warky.dev/wdevs/relspecgo
|
|
//
|
|
// API documentation: go doc git.warky.dev/wdevs/relspecgo/...
|
|
//
|
|
// # License
|
|
//
|
|
// See LICENSE file in the repository root.
|
|
package relspecgo
|