97 lines
2.3 KiB
Markdown
97 lines
2.3 KiB
Markdown
# DCTX Reader
|
|
|
|
Reads Clarion database dictionary (DCTX) files and extracts database schema information.
|
|
|
|
## Overview
|
|
|
|
The DCTX Reader parses Clarion dictionary files (`.dctx`) that define database structures in the Clarion development system and converts them into RelSpec's internal database model representation.
|
|
|
|
## Features
|
|
|
|
- Parses Clarion DCTX XML format
|
|
- Extracts file (table) and field (column) definitions
|
|
- Supports Clarion data types
|
|
- Handles keys (indexes) and relationships
|
|
|
|
## Usage
|
|
|
|
### Basic Example
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"git.warky.dev/wdevs/relspecgo/pkg/readers"
|
|
"git.warky.dev/wdevs/relspecgo/pkg/readers/dctx"
|
|
)
|
|
|
|
func main() {
|
|
options := &readers.ReaderOptions{
|
|
FilePath: "/path/to/database.dctx",
|
|
}
|
|
|
|
reader := dctx.NewReader(options)
|
|
db, err := reader.ReadDatabase()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fmt.Printf("Found %d schemas\n", len(db.Schemas))
|
|
}
|
|
```
|
|
|
|
### CLI Example
|
|
|
|
```bash
|
|
# Read DCTX file and convert to JSON
|
|
relspec --input dctx --in-file legacy.dctx --output json --out-file schema.json
|
|
|
|
# Convert DCTX to GORM models for migration
|
|
relspec --input dctx --in-file app.dctx --output gorm --out-file models.go
|
|
|
|
# Export DCTX to PostgreSQL DDL
|
|
relspec --input dctx --in-file database.dctx --output pgsql --out-file schema.sql
|
|
```
|
|
|
|
## Example DCTX Structure
|
|
|
|
DCTX files are XML-based Clarion dictionary files that define:
|
|
|
|
- Files (equivalent to tables)
|
|
- Fields (columns) with Clarion-specific types
|
|
- Keys (indexes)
|
|
- Relationships between files
|
|
|
|
Common Clarion data types:
|
|
- `STRING` - Fixed-length string
|
|
- `CSTRING` - C-style null-terminated string
|
|
- `LONG` - 32-bit integer
|
|
- `SHORT` - 16-bit integer
|
|
- `DECIMAL` - Decimal number
|
|
- `REAL` - Floating point
|
|
- `DATE` - Date field
|
|
- `TIME` - Time field
|
|
|
|
## Type Mapping
|
|
|
|
The reader automatically maps Clarion data types to standard SQL types:
|
|
|
|
| Clarion Type | SQL Type |
|
|
|--------------|----------|
|
|
| STRING | VARCHAR |
|
|
| CSTRING | VARCHAR |
|
|
| LONG | INTEGER |
|
|
| SHORT | SMALLINT |
|
|
| DECIMAL | NUMERIC |
|
|
| REAL | REAL |
|
|
| DATE | DATE |
|
|
| TIME | TIME |
|
|
|
|
## Notes
|
|
|
|
- DCTX is specific to Clarion development platform
|
|
- Useful for migrating legacy Clarion applications
|
|
- Schema name defaults to `public`
|
|
- Preserves field properties and constraints where possible
|