Documentation
¶
Index ¶
- func AcceptanceTest(t *testing.T, schema Schema)
- func DescriptorToString(d Descriptor) string
- func FieldToString(f Field) string
- func ToString(s Schema) string
- type ArrayDescriptor
- type Descriptor
- type EnumDescriptor
- type EnumValueDescriptor
- type Field
- type MapDescriptor
- type MutableArrayDescriptor
- type MutableDescriptor
- type MutableEnumDescriptor
- type MutableEnumValueDescriptor
- type MutableField
- type MutableMapDescriptor
- type MutablePrimitiveDescriptor
- type MutableSchema
- type MutableStructDescriptor
- type PrimitiveDescriptor
- type PrimitiveDescriptorType
- type Schema
- type StructDescriptor
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AcceptanceTest ¶
AcceptanceTest is the acceptance test that all implementations of Schema should pass. It should manually be called from a test case in each implementation:
func TestSchema(t *testing.T) {
s = NewSchema()
schema.AcceptanceTest(t, s)
}
func DescriptorToString ¶
func DescriptorToString(d Descriptor) string
DescriptorToString converts Descriptor into a human readable string.
func FieldToString ¶
FieldToString converts Field into a human readable string.
Types ¶
type ArrayDescriptor ¶
type ArrayDescriptor interface {
Descriptor
// ValueDescriptor returns the descriptor for a value stored in the array.
ValueDescriptor() Descriptor
// contains filtered or unexported methods
}
ArrayDescriptor defines an array of values.
type Descriptor ¶
type Descriptor interface {
// Parameters returns additional settings specific for the schema type.
Parameters() map[string]interface{}
}
Descriptor represents a Descriptor for a single type. Any Descriptor has to implement at least one of the following interfaces:
- StructDescriptor or MutableStructDescriptor
- MapDescriptor or MutableMapDescriptor
- ArrayDescriptor or MutableArrayDescriptor
- PrimitiveDescriptor or MutablePrimitiveDescriptor
- EnumDescriptor or MutableEnumDescriptor
- EnumValueDescriptor or MutableEnumValueDescriptor
type EnumDescriptor ¶
type EnumDescriptor interface {
Descriptor
// Name returns the local name of the enum.
Name() string
// ValueDescriptors returns a slice of descriptors that define all possible
// enum values.
ValueDescriptors() []EnumValueDescriptor
// contains filtered or unexported methods
}
EnumDescriptor defines an enumeration type with a finite set of possible values.
type EnumValueDescriptor ¶
type EnumValueDescriptor interface {
Descriptor
// Name returns the local name of the enum value.
Name() string
// Value returns the value of the enum value.
Value() string
// contains filtered or unexported methods
}
EnumValueDescriptor defines a single enumeration value inside of an EnumDescriptor. It has a name and a value.
type Field ¶
type Field interface {
// Name returns the name of the field in its parent struct. The name of a
// field has to be unique among all field names in a struct.
Name() string
// Index returns the numeric identifier of the field. The index of a field
// has to be unique among all field indexes in a struct. NB: field indexes
// are not necessarily consecutive (e.g. in protobuf schemas an index
// represents the field number).
Index() int
// Descriptor returns the descriptor for the underlying field value.
Descriptor() Descriptor
// contains filtered or unexported methods
}
Field defines a single field inside of a StructDescriptor. It has a name, an index and a descriptor for the underlying value.
type MapDescriptor ¶
type MapDescriptor interface {
Descriptor
// KeyDescriptor returns the descriptor for a map key.
KeyDescriptor() Descriptor
// KeyDescriptor returns the descriptor for a map value.
ValueDescriptor() Descriptor
// contains filtered or unexported methods
}
MapDescriptor defines a map with a single key and a value.
type MutableArrayDescriptor ¶
type MutableArrayDescriptor interface {
ArrayDescriptor
SetValueDescriptor(MutableDescriptor)
}
MutableArrayDescriptor is a mutable instance of a ArrayDescriptor.
type MutableDescriptor ¶
type MutableDescriptor interface {
Descriptor
// SetParameters sets additional settings specific for the schema type.
SetParameters(map[string]interface{})
}
MutableDescriptor is a mutable instance of a Descriptor. Any MutableDescriptor has to implement at least one of the following interfaces:
- MutableStructDescriptor
- MutableMapDescriptor
- MutableArrayDescriptor
- MutablePrimitiveDescriptor
- MutableEnumDescriptor
- MutableEnumValueDescriptor
type MutableEnumDescriptor ¶
type MutableEnumDescriptor interface {
EnumDescriptor
SetName(string)
SetValueDescriptors([]MutableEnumValueDescriptor)
}
MutableEnumDescriptor is a mutable instance of a EnumDescriptor.
type MutableEnumValueDescriptor ¶
type MutableEnumValueDescriptor interface {
EnumValueDescriptor
SetName(string)
SetValue(string)
}
MutableEnumValueDescriptor is a mutable instance of a EnumValueDescriptor.
type MutableField ¶
type MutableField interface {
Field
SetName(string)
SetIndex(int)
SetDescriptor(MutableDescriptor)
}
MutableField is a mutable instance of a Field.
type MutableMapDescriptor ¶
type MutableMapDescriptor interface {
MapDescriptor
SetKeyDescriptor(MutableDescriptor)
SetValueDescriptor(MutableDescriptor)
}
MutableMapDescriptor is a mutable instance of a MapDescriptor.
type MutablePrimitiveDescriptor ¶
type MutablePrimitiveDescriptor interface {
PrimitiveDescriptor
SetType(PrimitiveDescriptorType)
}
MutablePrimitiveDescriptor is a mutable instance of a PrimitiveDescriptor.
type MutableSchema ¶
type MutableSchema interface {
// Type returns the schema type (e.g. protobuf).
Type() string
// Version represents the schema version. A higher version represents a
// newer schema.
Version() int
// Descriptors returns descriptors defined at the root of this schema.
Descriptors() []Descriptor
// SetVersion sets the version.
SetVersion(int)
// SetDescriptors sets the descriptors defined at the root of this schema.
// Any descriptors, that were defined before, are overwritten.
SetDescriptors([]MutableDescriptor)
// Build validates the schema, compiles it and returns an immutable Schema.
// If the schema can't be validated or compiled it returns an error.
Build() (Schema, error)
}
MutableSchema provides functionality for changing the underlying descriptors or the version of a schema and essentially building a new schema.
type MutableStructDescriptor ¶
type MutableStructDescriptor interface {
StructDescriptor
SetName(string)
SetFields([]MutableField)
}
MutableStructDescriptor is a mutable instance of a StructDescriptor.
type PrimitiveDescriptor ¶
type PrimitiveDescriptor interface {
Descriptor
// Type returns the PrimitiveDescriptorType of the primitive value.
Type() PrimitiveDescriptorType
// contains filtered or unexported methods
}
PrimitiveDescriptor defines a value of a primitive type. Primitive types are constants of the type PrimitiveDescriptorType.
type PrimitiveDescriptorType ¶
type PrimitiveDescriptorType int
PrimitiveDescriptorType represents the type of a PrimitiveDescriptor.
const ( Unknown PrimitiveDescriptorType = iota Int32 Int64 UInt32 UInt64 Float32 Float64 Boolean String Bytes )
func (PrimitiveDescriptorType) String ¶
func (st PrimitiveDescriptorType) String() string
String formats PrimitiveDescriptorType to a human readable string.
type Schema ¶
type Schema interface {
// Type returns the schema type (e.g. protobuf).
Type() string
// Version represents the schema version. A higher version represents a
// newer schema.
Version() int
// Descriptors returns descriptors defined at the root of this schema.
Descriptors() []Descriptor
// ToMutable returns a MutableSchema, that contains the same properties and
// descriptors as this Schema, except that all of them are mutable.
ToMutable() MutableSchema
}
Schema represents an immutable schema.
type StructDescriptor ¶
type StructDescriptor interface {
Descriptor
// Name returns the local name of the struct.
Name() string
// Fields returns a slice of fields defined in this struct.
Fields() []Field
// contains filtered or unexported methods
}
StructDescriptor defines a struct type. A struct is a type with a name and 0 or more fields.