# DCTX Writer Generates Clarion database dictionary (DCTX) files from database schema information. ## Overview The DCTX Writer converts RelSpec's internal database model representation into Clarion dictionary XML format, used by the Clarion development platform. ## Features - Generates DCTX XML format - Creates file (table) definitions - Defines fields (columns) with Clarion types - Includes keys (indexes) - Handles relationships ## Usage ### Basic Example ```go package main import ( "git.warky.dev/wdevs/relspecgo/pkg/models" "git.warky.dev/wdevs/relspecgo/pkg/writers" "git.warky.dev/wdevs/relspecgo/pkg/writers/dctx" ) func main() { options := &writers.WriterOptions{ OutputPath: "database.dctx", } writer := dctx.NewWriter(options) err := writer.WriteDatabase(db) if err != nil { panic(err) } } ``` ### CLI Examples ```bash # Generate DCTX from PostgreSQL database (for Clarion migration) relspec --input pgsql \ --conn "postgres://localhost/mydb" \ --output dctx \ --out-file app.dctx # Convert GORM models to DCTX relspec --input gorm --in-file models.go --output dctx --out-file legacy.dctx # Convert JSON schema to DCTX relspec --input json --in-file schema.json --output dctx --out-file database.dctx ``` ## Type Mapping Converts standard SQL types to Clarion types: | SQL Type | Clarion Type | Notes | |----------|--------------|-------| | VARCHAR(n) | STRING(n) | Fixed-length string | | TEXT | STRING | Variable length | | INTEGER | LONG | 32-bit integer | | BIGINT | DECIMAL(20,0) | Large integer | | SMALLINT | SHORT | 16-bit integer | | NUMERIC(p,s) | DECIMAL(p,s) | Decimal number | | REAL, FLOAT | REAL | Floating point | | BOOLEAN | BYTE | 0/1 value | | DATE | DATE | Date field | | TIME | TIME | Time field | | TIMESTAMP | LONG | Unix timestamp | ## DCTX Structure DCTX files are XML-based with this structure: ```xml ``` ## Features - File definitions (equivalent to tables) - Field definitions with Clarion-specific types - Key definitions (primary and foreign) - Relationships between files - Driver specifications (TOPSPEED, SQL, etc.) ## Notes - DCTX is specific to Clarion development - Useful for legacy system integration - Field names are typically uppercase in Clarion - Supports Clarion-specific attributes - Can be imported into Clarion IDE