101 lines
2.6 KiB
Markdown
101 lines
2.6 KiB
Markdown
# RelSpec
|
|
|
|
> Database Relations Specification Tool for Go
|
|
|
|
RelSpec is a comprehensive database relations management tool that reads, transforms, and writes database table specifications across multiple formats and ORMs.
|
|
|
|
## Overview
|
|
|
|
RelSpec provides bidirectional conversion and comparison between various database specification formats, allowing you to:
|
|
- Inspect live databases and extract their structure
|
|
- Convert between different ORM models (GORM, Bun , etc.)
|
|
- Transform legacy schema definitions (Clarion DCTX, XML, JSON, etc.)
|
|
- Generate standardized specification files (JSON, YAML, etc.)
|
|
|
|

|
|
|
|
## Features
|
|
|
|
### Input Formats
|
|
- **XML** - Generic XML schema definitions
|
|
- **JSON** - JSON-based schema specifications
|
|
- **Clarion DCTX** - Clarion database dictionary format
|
|
- **Database Inspection** - Direct database introspection
|
|
- **GORM Models** - Read existing GORM Go structs
|
|
- **Bun Models** - Read existing Bun Go structs
|
|
|
|
### Output Formats
|
|
- **GORM Models** - Generate GORM-compatible Go structs
|
|
- **Bun Models** - Generate Bun-compatible Go structs
|
|
- **JSON** - Standard JSON schema output
|
|
- **YAML** - Human-readable YAML format
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go get github.com/wdevs/relspecgo
|
|
|
|
go install -v git.warky.dev/wdevs/relspecgo/cmd/relspec@latest
|
|
```
|
|
|
|
## Usage
|
|
|
|
```bash
|
|
# Inspect database and generate GORM models
|
|
relspec --input db --conn "postgres://..." --output gorm --out-file models.go
|
|
|
|
# Convert GORM models to Bun
|
|
relspec --input gorm --in-file existing.go --output bun --out-file bun_models.go
|
|
|
|
# Export database schema to JSON
|
|
relspec --input db --conn "mysql://..." --output json --out-file schema.json
|
|
|
|
# Convert Clarion DCTX to YAML
|
|
relspec --input dctx --in-file legacy.dctx --output yaml --out-file schema.yaml
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
relspecgo/
|
|
├── cmd/ # CLI application
|
|
├── pkg/
|
|
│ ├── readers/ # Input format readers
|
|
│ ├── writers/ # Output format writers
|
|
│ ├── models/ # Internal data models
|
|
│ └── transform/ # Transformation logic
|
|
├── examples/ # Usage examples
|
|
└── tests/ # Test files
|
|
```
|
|
|
|
## Todo
|
|
|
|
[Todo List of Features](./TODO.md)
|
|
|
|
## Development
|
|
|
|
### Prerequisites
|
|
- Go 1.21 or higher
|
|
- Access to test databases (optional)
|
|
|
|
### Building
|
|
|
|
```bash
|
|
go build -o relspec ./cmd/relspec
|
|
```
|
|
|
|
### Testing
|
|
|
|
```bash
|
|
go test ./...
|
|
```
|
|
|
|
## License
|
|
|
|
Apache License 2.0 - See [LICENSE](LICENSE) for details.
|
|
|
|
Copyright 2025 wdevs
|
|
|
|
## Contributing
|
|
|
|
Contributions welcome. Please open an issue or submit a pull request. |