mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-04-26 05:58:27 -05:00
278 lines
9.0 KiB
Go
278 lines
9.0 KiB
Go
package godata
|
|
|
|
import (
|
|
"encoding/xml"
|
|
)
|
|
|
|
const (
|
|
GoDataString = "Edm.String"
|
|
GoDataInt16 = "Edm.Int16"
|
|
GoDataInt32 = "Edm.Int32"
|
|
GoDataInt64 = "Edm.Int64"
|
|
GoDataDecimal = "Edm.Decimal"
|
|
GoDataBinary = "Edm.Binary"
|
|
GoDataBoolean = "Edm.Boolean"
|
|
GoDataTimeOfDay = "Edm.TimeOfDay"
|
|
GoDataDate = "Edm.Date"
|
|
GoDataDateTimeOffset = "Edm.DateTimeOffset"
|
|
)
|
|
|
|
type GoDataMetadata struct {
|
|
XMLName xml.Name `xml:"edmx:Edmx"`
|
|
XMLNamespace string `xml:"xmlns:edmx,attr"`
|
|
Version string `xml:"Version,attr"`
|
|
DataServices *GoDataServices
|
|
References []*GoDataReference
|
|
}
|
|
|
|
func (t *GoDataMetadata) Bytes() ([]byte, error) {
|
|
output, err := xml.MarshalIndent(t, "", " ")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return append([]byte(xml.Header), output...), nil
|
|
}
|
|
|
|
func (t *GoDataMetadata) String() string {
|
|
return ""
|
|
}
|
|
|
|
type GoDataReference struct {
|
|
XMLName xml.Name `xml:"edmx:Reference"`
|
|
Uri string `xml:"Uri,attr"`
|
|
Includes []*GoDataInclude
|
|
IncludeAnnotations []*GoDataIncludeAnnotations
|
|
}
|
|
|
|
type GoDataInclude struct {
|
|
XMLName xml.Name `xml:"edmx:Include"`
|
|
Namespace string `xml:"Namespace,attr"`
|
|
Alias string `xml:"Alias,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataIncludeAnnotations struct {
|
|
XMLName xml.Name `xml:"edmx:IncludeAnnotations"`
|
|
TermNamespace string `xml:"TermNamespace,attr"`
|
|
Qualifier string `xml:"Qualifier,attr,omitempty"`
|
|
TargetNamespace string `xml:"TargetNamespace,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataServices struct {
|
|
XMLName xml.Name `xml:"edmx:DataServices"`
|
|
Schemas []*GoDataSchema
|
|
}
|
|
|
|
type GoDataSchema struct {
|
|
XMLName xml.Name `xml:"Schema"`
|
|
Namespace string `xml:"Namespace,attr"`
|
|
Alias string `xml:"Alias,attr,omitempty"`
|
|
Actions []*GoDataAction
|
|
Annotations []*GoDataAnnotations
|
|
Annotation []*GoDataAnnotation
|
|
ComplexTypes []*GoDataComplexType
|
|
EntityContainers []*GoDataEntityContainer
|
|
EntityTypes []*GoDataEntityType
|
|
EnumTypes []*GoDataEnumType
|
|
Functions []*GoDataFunction
|
|
Terms []*GoDataTerm
|
|
TypeDefinitions []*GoDataTypeDefinition
|
|
}
|
|
|
|
type GoDataAction struct {
|
|
XMLName xml.Name `xml:"Action"`
|
|
Name string `xml:"Name,attr"`
|
|
IsBound string `xml:"IsBound,attr,omitempty"`
|
|
EntitySetPath string `xml:"EntitySetPath,attr,omitempty"`
|
|
Parameters []*GoDataParameter
|
|
ReturnType *GoDataReturnType
|
|
}
|
|
|
|
type GoDataAnnotations struct {
|
|
XMLName xml.Name `xml:"Annotations"`
|
|
Target string `xml:"Target,attr"`
|
|
Qualifier string `xml:"Qualifier,attr,omitempty"`
|
|
Annotations []*GoDataAnnotation
|
|
}
|
|
|
|
type GoDataAnnotation struct {
|
|
XMLName xml.Name `xml:"Annotation"`
|
|
Term string `xml:"Term,attr"`
|
|
Qualifier string `xml:"Qualifier,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataComplexType struct {
|
|
XMLName xml.Name `xml:"ComplexType"`
|
|
Name string `xml:"Name,attr"`
|
|
BaseType string `xml:"BaseType,attr,omitempty"`
|
|
Abstract string `xml:"Abstract,attr,omitempty"`
|
|
OpenType string `xml:"OpenType,attr,omitempty"`
|
|
Properties []*GoDataProperty
|
|
NavigationProperties []*GoDataNavigationProperty
|
|
}
|
|
|
|
type GoDataEntityContainer struct {
|
|
XMLName xml.Name `xml:"EntityContainer"`
|
|
Name string `xml:"Name,attr"`
|
|
Extends string `xml:"Extends,attr,omitempty"`
|
|
EntitySets []*GoDataEntitySet
|
|
Singletons []*GoDataSingleton
|
|
ActionImports []*GoDataActionImport
|
|
FunctionImports []*GoDataFunctionImport
|
|
}
|
|
|
|
type GoDataEntityType struct {
|
|
XMLName xml.Name `xml:"EntityType"`
|
|
Name string `xml:"Name,attr"`
|
|
BaseType string `xml:"BaseType,attr,omitempty"`
|
|
Abstract string `xml:"Abstract,attr,omitempty"`
|
|
OpenType string `xml:"OpenType,attr,omitempty"`
|
|
HasStream string `xml:"HasStream,attr,omitempty"`
|
|
Key *GoDataKey
|
|
Properties []*GoDataProperty
|
|
NavigationProperties []*GoDataNavigationProperty
|
|
}
|
|
|
|
type GoDataEnumType struct {
|
|
XMLName xml.Name `xml:"EnumType"`
|
|
Name string `xml:"Name,attr"`
|
|
UnderlyingType string `xml:"UnderlyingType,attr,omitempty"`
|
|
IsFlags string `xml:"IsFlags,attr,omitempty"`
|
|
Members []*GoDataMember
|
|
}
|
|
|
|
type GoDataFunction struct {
|
|
XMLName xml.Name `xml:"Function"`
|
|
Name string `xml:"Name,attr"`
|
|
IsBound string `xml:"IsBound,attr,omitempty"`
|
|
IsComposable string `xml:"IsComposable,attr,omitempty"`
|
|
EntitySetPath string `xml:"EntitySetPath,attr,omitempty"`
|
|
Parameters []*GoDataParameter
|
|
ReturnType *GoDataReturnType
|
|
}
|
|
|
|
type GoDataTypeDefinition struct {
|
|
XMLName xml.Name `xml:"TypeDefinition"`
|
|
Name string `xml:"Name,attr"`
|
|
UnderlyingType string `xml:"UnderlyingTypeattr,omitempty"`
|
|
Annotations []*GoDataAnnotation
|
|
}
|
|
|
|
type GoDataProperty struct {
|
|
XMLName xml.Name `xml:"Property"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
Nullable string `xml:"Nullable,attr,omitempty"`
|
|
MaxLength int `xml:"MaxLength,attr,omitempty"`
|
|
Precision int `xml:"Precision,attr,omitempty"`
|
|
Scale int `xml:"Scale,attr,omitempty"`
|
|
Unicode string `xml:"Unicode,attr,omitempty"`
|
|
SRID string `xml:"SRID,attr,omitempty"`
|
|
DefaultValue string `xml:"DefaultValue,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataNavigationProperty struct {
|
|
XMLName xml.Name `xml:"NavigationProperty"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
Nullable string `xml:"Nullable,attr,omitempty"`
|
|
Partner string `xml:"Partner,attr,omitempty"`
|
|
ContainsTarget string `xml:"ContainsTarget,attr,omitempty"`
|
|
ReferentialConstraints []*GoDataReferentialConstraint
|
|
}
|
|
|
|
type GoDataReferentialConstraint struct {
|
|
XMLName xml.Name `xml:"ReferentialConstraint"`
|
|
Property string `xml:"Property,attr"`
|
|
ReferencedProperty string `xml:"ReferencedProperty,attr"`
|
|
OnDelete *GoDataOnDelete `xml:"OnDelete,omitempty"`
|
|
}
|
|
|
|
type GoDataOnDelete struct {
|
|
XMLName xml.Name `xml:"OnDelete"`
|
|
Action string `xml:"Action,attr"`
|
|
}
|
|
|
|
type GoDataEntitySet struct {
|
|
XMLName xml.Name `xml:"EntitySet"`
|
|
Name string `xml:"Name,attr"`
|
|
EntityType string `xml:"EntityType,attr"`
|
|
IncludeInServiceDocument string `xml:"IncludeInServiceDocument,attr,omitempty"`
|
|
NavigationPropertyBindings []*GoDataNavigationPropertyBinding
|
|
}
|
|
|
|
type GoDataSingleton struct {
|
|
XMLName xml.Name `xml:"Singleton"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
NavigationPropertyBindings []*GoDataNavigationPropertyBinding
|
|
}
|
|
|
|
type GoDataNavigationPropertyBinding struct {
|
|
XMLName xml.Name `xml:"NavigationPropertyBinding"`
|
|
Path string `xml:"Path,attr"`
|
|
Target string `xml:"Target,attr"`
|
|
}
|
|
|
|
type GoDataActionImport struct {
|
|
XMLName xml.Name `xml:"ActionImport"`
|
|
Name string `xml:"Name,attr"`
|
|
Action string `xml:"Action,attr"`
|
|
EntitySet string `xml:"EntitySet,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataFunctionImport struct {
|
|
XMLName xml.Name `xml:"FunctionImport"`
|
|
Name string `xml:"Name,attr"`
|
|
Function string `xml:"Function,attr"`
|
|
EntitySet string `xml:"EntitySet,attr,omitempty"`
|
|
IncludeInServiceDocument string `xml:"IncludeInServiceDocument,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataKey struct {
|
|
XMLName xml.Name `xml:"Key"`
|
|
PropertyRef *GoDataPropertyRef
|
|
}
|
|
|
|
type GoDataPropertyRef struct {
|
|
XMLName xml.Name `xml:"PropertyRef"`
|
|
Name string `xml:"Name,attr"`
|
|
}
|
|
|
|
type GoDataParameter struct {
|
|
XMLName xml.Name `xml:"Parameter"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
Nullable string `xml:"Nullable,attr,omitempty"`
|
|
MaxLength int `xml:"MaxLength,attr,omitempty"`
|
|
Precision int `xml:"Precision,attr,omitempty"`
|
|
Scale int `xml:"Scale,attr,omitempty"`
|
|
SRID string `xml:"SRID,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataReturnType struct {
|
|
XMLName xml.Name `xml:"ReturnType"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
Nullable string `xml:"Nullable,attr,omitempty"`
|
|
MaxLength int `xml:"MaxLength,attr,omitempty"`
|
|
Precision int `xml:"Precision,attr,omitempty"`
|
|
Scale int `xml:"Scale,attr,omitempty"`
|
|
SRID string `xml:"SRID,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataMember struct {
|
|
XMLName xml.Name `xml:"Member"`
|
|
Name string `xml:"Name,attr"`
|
|
Value string `xml:"Value,attr,omitempty"`
|
|
}
|
|
|
|
type GoDataTerm struct {
|
|
XMLName xml.Name `xml:"Term"`
|
|
Name string `xml:"Name,attr"`
|
|
Type string `xml:"Type,attr"`
|
|
BaseTerm string `xml:"BaseTerm,attr,omitempty"`
|
|
DefaultValue string `xml:"DefaultValue,attr,omitempty"`
|
|
AppliesTo string `xml:"AppliesTo,attr,omitempty"`
|
|
}
|