Files
Hein c0880cb076
Some checks failed
Release / test (push) Failing after -31m27s
Release / release (push) Has been skipped
Release / pkg-aur (push) Has been skipped
Release / pkg-deb (push) Has been skipped
Release / pkg-rpm (push) Has been skipped
feat(pkg): preserve PostgreSQL types in mapDataType function
* Add support for known PostgreSQL types and modifiers
* Implement canonicalization for PostgreSQL types
* Introduce unit tests for PostgreSQL type handling
2026-04-26 12:43:44 +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