package models import "encoding/xml" // DCTXDictionary represents the root element of a DCTX file type DCTXDictionary struct { XMLName xml.Name `xml:"Dictionary"` Name string `xml:"Name,attr"` Version string `xml:"Version,attr"` Tables []DCTXTable `xml:"Table"` Relations []DCTXRelation `xml:"Relation,omitempty"` } // DCTXTable represents a table definition in DCTX type DCTXTable struct { Guid string `xml:"Guid,attr"` Name string `xml:"Name,attr"` Prefix string `xml:"Prefix,attr"` Driver string `xml:"Driver,attr,omitempty"` Owner string `xml:"Owner,attr,omitempty"` Path string `xml:"Path,attr,omitempty"` Description string `xml:"Description,attr,omitempty"` Fields []DCTXField `xml:"Field"` Keys []DCTXKey `xml:"Key,omitempty"` Options []DCTXOption `xml:"Option,omitempty"` } // DCTXField represents a field/column definition in DCTX type DCTXField struct { Guid string `xml:"Guid,attr"` Name string `xml:"Name,attr"` DataType string `xml:"DataType,attr"` Size int `xml:"Size,attr,omitempty"` NoPopulate bool `xml:"NoPopulate,attr,omitempty"` Thread bool `xml:"Thread,attr,omitempty"` Fields []DCTXField `xml:"Field,omitempty"` // For GROUP fields (nested structures) Options []DCTXOption `xml:"Option,omitempty"` } // DCTXKey represents an index or key definition in DCTX type DCTXKey struct { Guid string `xml:"Guid,attr"` Name string `xml:"Name,attr"` KeyType string `xml:"KeyType,attr,omitempty"` Primary bool `xml:"Primary,attr,omitempty"` Unique bool `xml:"Unique,attr,omitempty"` Order int `xml:"Order,attr,omitempty"` Description string `xml:"Description,attr,omitempty"` Components []DCTXComponent `xml:"Component"` } // DCTXComponent represents a component of a key (field reference) type DCTXComponent struct { Guid string `xml:"Guid,attr"` FieldId string `xml:"FieldId,attr,omitempty"` Order int `xml:"Order,attr"` Ascend bool `xml:"Ascend,attr,omitempty"` } // DCTXOption represents a property option in DCTX type DCTXOption struct { Property string `xml:"Property,attr"` PropertyType string `xml:"PropertyType,attr,omitempty"` PropertyValue string `xml:"PropertyValue,attr"` } // DCTXRelation represents a relationship/foreign key in DCTX type DCTXRelation struct { Guid string `xml:"Guid,attr"` PrimaryTable string `xml:"PrimaryTable,attr"` ForeignTable string `xml:"ForeignTable,attr"` PrimaryKey string `xml:"PrimaryKey,attr,omitempty"` ForeignKey string `xml:"ForeignKey,attr,omitempty"` Delete string `xml:"Delete,attr,omitempty"` Update string `xml:"Update,attr,omitempty"` ForeignMappings []DCTXFieldMapping `xml:"ForeignMapping,omitempty"` PrimaryMappings []DCTXFieldMapping `xml:"PrimaryMapping,omitempty"` } // DCTXFieldMapping represents a field mapping in a relation type DCTXFieldMapping struct { Guid string `xml:"Guid,attr"` Field string `xml:"Field,attr"` }