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",
)
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 Fields []*Field }
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"` 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.