Documentation
¶
Index ¶
Constants ¶
View Source
const (
PrimaryKeyIndexName = "pkey"
)
View Source
const (
UserDefinedSchema = "user_defined_schema"
)
Variables ¶
View Source
var FieldNames = [...]string{ UnknownType: "unknown", NullType: "null", BoolType: "bool", Int32Type: "int32", Int64Type: "int64", DoubleType: "double", StringType: "string", ByteType: "byte", UUIDType: "uuid", DateTimeType: "datetime", ArrayType: "array", ObjectType: "object", }
View Source
var SupportedFieldProperties = set.New(
"type",
"format",
"items",
"maxLength",
"description",
"contentEncoding",
"properties",
"autoGenerate",
)
Functions ¶
func IsValidIndexType ¶
Types ¶
type DefaultCollection ¶
type DefaultCollection struct {
// Id is the dictionary encoded value for this collection.
Id uint32
// Name is the name of the collection.
Name string
// Fields are derived from the user schema.
Fields []*Field
// Indexes is a wrapper on the indexes part of this collection.
Indexes *Indexes
// Validator is used to validate the JSON document. As it is expensive to create this, it is only created once
// during constructor of the collection.
Validator *jsonschema.Schema
// JSON schema
Schema jsoniter.RawMessage
}
DefaultCollection is used to represent a collection. The tenant in the metadata package is responsible for creating the collection.
func NewDefaultCollection ¶
func NewDefaultCollection(cname string, id uint32, fields []*Field, indexes *Indexes, schema jsoniter.RawMessage) *DefaultCollection
func (*DefaultCollection) GetFields ¶
func (d *DefaultCollection) GetFields() []*Field
func (*DefaultCollection) GetIndexes ¶
func (d *DefaultCollection) GetIndexes() *Indexes
func (*DefaultCollection) GetName ¶
func (d *DefaultCollection) GetName() string
func (*DefaultCollection) Type ¶
func (d *DefaultCollection) Type() string
func (*DefaultCollection) Validate ¶
func (d *DefaultCollection) Validate(document interface{}) error
Validate expects an unmarshalled document which it will validate again the schema of this collection.
type Factory ¶
type Factory struct {
// Fields are derived from the user schema.
Fields []*Field
// Indexes is a wrapper on the indexes part of this collection. At this point the dictionary encoded value is not
// set for these indexes which is set as part of collection creation.
Indexes *Indexes
// Schema is the raw JSON schema received as part of CreateOrUpdateCollection request. This is stored as-is in the
// schema subspace.
Schema jsoniter.RawMessage
// CollectionName is the collection name of this schema.
CollectionName string
}
Factory is used as an intermediate step so that collection can be initialized with properly encoded values.
type Field ¶
type Field struct {
FieldName string
DataType FieldType
MaxLength *int32
UniqueKeyField *bool
PrimaryKeyField *bool
AutoGenerated *bool
Fields []*Field
}
func (*Field) IsAutoGenerated ¶
func (*Field) IsPrimaryKey ¶
type FieldBuilder ¶
type FieldBuilder struct {
FieldName string
Description string `json:"description,omitempty"`
Type string `json:"type,omitempty"`
Format string `json:"format,omitempty"`
Encoding string `json:"contentEncoding,omitempty"`
MaxLength *int32 `json:"maxLength,omitempty"`
Auto *bool `json:"autoGenerate,omitempty"`
Items *FieldBuilder `json:"items,omitempty"`
Properties jsoniter.RawMessage `json:"properties,omitempty"`
Primary *bool
Fields []*Field
}
func (*FieldBuilder) Build ¶
func (f *FieldBuilder) Build() (*Field, error)
func (*FieldBuilder) Validate ¶
func (f *FieldBuilder) Validate(v []byte) error
type FieldType ¶
type FieldType int
const ( UnknownType FieldType = iota NullType BoolType Int32Type Int64Type DoubleType StringType // ByteType is a base64 encoded characters, this means if this type is used as key then we need to decode it // and then use it as key. ByteType UUIDType // DateTimeType is a valid date representation as defined by RFC 3339, see https://datatracker.ietf.org/doc/html/rfc3339#section-5.6 DateTimeType ArrayType ObjectType )
type Index ¶
type Index struct {
// Fields that are part of this index. An index can have a single or composite fields.
Fields []*Field
// Name is used by dictionary encoder for this index.
Name string
// Id is assigned to this index by the dictionary encoder.
Id uint32
}
Index can be composite so it has a list of fields, each index has name and encoded id. The encoded is used for key building.
type Indexes ¶
type Indexes struct {
PrimaryKey *Index
}
Indexes is to wrap different index that a collection can have.
func (*Indexes) GetIndexes ¶
type JSONSchema ¶
type JSONSchema struct {
Name string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
Properties jsoniter.RawMessage `json:"properties,omitempty"`
PrimaryKeys []string `json:"primary_key,omitempty"`
}
Click to show internal directories.
Click to hide internal directories.