Files
Hein b4ff4334cc
Some checks failed
CI / Lint (push) Successful in -27m53s
CI / Test (1.24) (push) Successful in -27m31s
CI / Build (push) Successful in -28m13s
CI / Test (1.25) (push) Failing after 1m11s
Integration Tests / Integration Tests (push) Failing after -28m15s
feat(models): 🎉 Add GUID field to various models
* Introduced GUID field to Database, Domain, DomainTable, Schema, Table, View, Sequence, Column, Index, Relationship, Constraint, Enum, and Script models.
* Updated initialization functions to assign new GUIDs using uuid package.
* Enhanced DCTX reader and writer to utilize GUIDs from models where available.
2026-01-04 19:53:17 +02:00
..
2025-12-17 22:52:24 +02:00
2025-12-28 10:34:20 +02:00

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

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

# 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