feat(ui): add relationship management features in schema editor
- 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.
This commit is contained in:
108
doc.go
Normal file
108
doc.go
Normal file
@@ -0,0 +1,108 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user