storage

package
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 17, 2023 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Migrate

func Migrate(conf config.Database, l logger.Interface) (err error)

Migrate - migrate the database

Types

type Attribute added in v0.5.0

type Attribute struct {
	ID         uint64
	TenantID   string
	EntityType string
	EntityID   string
	Attribute  string
	Value      *anypb.Any
}

func (Attribute) ToAttribute added in v0.5.0

func (r Attribute) ToAttribute() *base.Attribute

type DataReader added in v0.5.0

type DataReader interface {
	// QueryRelationships reads relation tuples from the storage based on the given filter.
	// It returns an iterator to iterate over the tuples and any error encountered.
	QueryRelationships(ctx context.Context, tenantID string, filter *base.TupleFilter, snap string) (iterator *database.TupleIterator, err error)

	// ReadRelationships reads relation tuples from the storage based on the given filter and pagination.
	// It returns a collection of tuples, a continuous token indicating the position in the data set, and any error encountered.
	ReadRelationships(ctx context.Context, tenantID string, filter *base.TupleFilter, snap string, pagination database.Pagination) (collection *database.TupleCollection, ct database.EncodedContinuousToken, err error)

	// QuerySingleAttribute retrieves a single attribute from the storage based on the given filter.
	// It returns the retrieved attribute and any error encountered.
	QuerySingleAttribute(ctx context.Context, tenantID string, filter *base.AttributeFilter, snap string) (attribute *base.Attribute, err error)

	// QueryAttributes reads multiple attributes from the storage based on the given filter.
	// It returns an iterator to iterate over the attributes and any error encountered.
	QueryAttributes(ctx context.Context, tenantID string, filter *base.AttributeFilter, snap string) (iterator *database.AttributeIterator, err error)

	// ReadAttributes reads multiple attributes from the storage based on the given filter and pagination.
	// It returns a collection of attributes, a continuous token indicating the position in the data set, and any error encountered.
	ReadAttributes(ctx context.Context, tenantID string, filter *base.AttributeFilter, snap string, pagination database.Pagination) (collection *database.AttributeCollection, ct database.EncodedContinuousToken, err error)

	// QueryUniqueEntities reads unique entities from the storage based on the given filter and pagination.
	// It returns a slice of entity IDs, a continuous token indicating the position in the data set, and any error encountered.
	QueryUniqueEntities(ctx context.Context, tenantID, name, snap string, pagination database.Pagination) (ids []string, ct database.EncodedContinuousToken, err error)

	// QueryUniqueSubjectReferences reads unique subject references from the storage based on the given filter and pagination.
	// It returns a slice of subject reference IDs, a continuous token indicating the position in the data set, and any error encountered.
	QueryUniqueSubjectReferences(ctx context.Context, tenantID string, subjectReference *base.RelationReference, snap string, pagination database.Pagination) (ids []string, ct database.EncodedContinuousToken, err error)

	// HeadSnapshot reads the latest version of the snapshot from the storage for a specific tenant.
	// It returns the snapshot token representing the version of the snapshot and any error encountered.
	HeadSnapshot(ctx context.Context, tenantID string) (token.SnapToken, error)
}

DataReader - Interface for reading Data from the storage.

func NewNoopRelationshipReader added in v0.4.4

func NewNoopRelationshipReader() DataReader

type DataWriter added in v0.5.0

type DataWriter interface {
	// Write writes relation tuples to the storage.
	Write(ctx context.Context, tenantID string, tupleCollection *database.TupleCollection, attributesCollection *database.AttributeCollection) (token token.EncodedSnapToken, err error)
	// Delete deletes relation tuples from the storage.
	Delete(ctx context.Context, tenantID string, tupleFilter *base.TupleFilter, attributeFilter *base.AttributeFilter) (token token.EncodedSnapToken, err error)
}

DataWriter - Writes relation tuples to the storage.

func NewNoopDataWriter added in v0.5.0

func NewNoopDataWriter() DataWriter

type NoopDataReader added in v0.5.0

type NoopDataReader struct{}

func (*NoopDataReader) HeadSnapshot added in v0.5.0

func (f *NoopDataReader) HeadSnapshot(_ context.Context, _ string) (token.SnapToken, error)

func (*NoopDataReader) QueryAttributes added in v0.5.0

func (*NoopDataReader) QueryRelationships added in v0.5.0

func (f *NoopDataReader) QueryRelationships(_ context.Context, _ string, _ *base.TupleFilter, _ string) (*database.TupleIterator, error)

func (*NoopDataReader) QuerySingleAttribute added in v0.5.0

func (f *NoopDataReader) QuerySingleAttribute(_ context.Context, _ string, _ *base.AttributeFilter, _ string) (*base.Attribute, error)

func (*NoopDataReader) QueryUniqueEntities added in v0.5.0

func (f *NoopDataReader) QueryUniqueEntities(_ context.Context, _, _, _ string, _ database.Pagination) ([]string, database.EncodedContinuousToken, error)

func (*NoopDataReader) QueryUniqueSubjectReferences added in v0.5.0

func (*NoopDataReader) ReadRelationships added in v0.5.0

type NoopDataWriter added in v0.5.0

type NoopDataWriter struct{}

func (*NoopDataWriter) Delete added in v0.5.0

func (*NoopDataWriter) Write added in v0.5.0

type NoopSchemaReader added in v0.4.4

type NoopSchemaReader struct{}

func (*NoopSchemaReader) HeadVersion added in v0.4.4

func (n *NoopSchemaReader) HeadVersion(_ context.Context, _ string) (string, error)

func (*NoopSchemaReader) ReadEntityDefinition added in v0.5.0

func (n *NoopSchemaReader) ReadEntityDefinition(_ context.Context, _, _, _ string) (*base.EntityDefinition, string, error)

func (*NoopSchemaReader) ReadRuleDefinition added in v0.5.0

func (n *NoopSchemaReader) ReadRuleDefinition(_ context.Context, _, _, _ string) (*base.RuleDefinition, string, error)

func (*NoopSchemaReader) ReadSchema added in v0.4.4

func (n *NoopSchemaReader) ReadSchema(_ context.Context, _, _ string) (*base.SchemaDefinition, error)

type NoopSchemaWriter added in v0.4.4

type NoopSchemaWriter struct{}

func (*NoopSchemaWriter) WriteSchema added in v0.4.4

func (n *NoopSchemaWriter) WriteSchema(_ context.Context, _ []SchemaDefinition) error

type NoopTenantReader added in v0.4.4

type NoopTenantReader struct{}

func (*NoopTenantReader) ListTenants added in v0.4.4

type NoopTenantWriter added in v0.4.4

type NoopTenantWriter struct{}

func (*NoopTenantWriter) CreateTenant added in v0.4.4

func (n *NoopTenantWriter) CreateTenant(_ context.Context, _, _ string) (*base.Tenant, error)

func (*NoopTenantWriter) DeleteTenant added in v0.4.4

func (n *NoopTenantWriter) DeleteTenant(_ context.Context, _ string) (*base.Tenant, error)

type NoopWatcher added in v0.4.4

type NoopWatcher struct{}

func (*NoopWatcher) Watch added in v0.4.4

func (n *NoopWatcher) Watch(_ context.Context, _, _ string) (<-chan *base.DataChanges, <-chan error)

type RelationTuple

type RelationTuple struct {
	ID              uint64
	TenantID        string
	EntityType      string
	EntityID        string
	Relation        string
	SubjectType     string
	SubjectID       string
	SubjectRelation string
}

RelationTuple - Structure for Relational Tuple

func (RelationTuple) ToTuple

func (r RelationTuple) ToTuple() *base.Tuple

ToTuple - Convert database relation tuple to base relation tuple

type SchemaDefinition

type SchemaDefinition struct {
	TenantID             string
	Name                 string
	SerializedDefinition []byte
	Version              string
}

SchemaDefinition - Structure for Schema Definition

func (SchemaDefinition) Serialized

func (e SchemaDefinition) Serialized() string

Serialized - get schema serialized definition

type SchemaReader

type SchemaReader interface {
	// ReadSchema reads entity config from the storage.
	ReadSchema(ctx context.Context, tenantID, version string) (schema *base.SchemaDefinition, err error)
	// ReadEntityDefinition reads entity config from the storage.
	ReadEntityDefinition(ctx context.Context, tenantID, entityName, version string) (definition *base.EntityDefinition, v string, err error)
	// ReadRuleDefinition reads rule config from the storage.
	ReadRuleDefinition(ctx context.Context, tenantID, ruleName, version string) (definition *base.RuleDefinition, v string, err error)
	// HeadVersion reads the latest version of the schema from the storage.
	HeadVersion(ctx context.Context, tenantID string) (version string, err error)
}

SchemaReader - Reads schema definitions from the storage.

func NewNoopSchemaReader added in v0.4.4

func NewNoopSchemaReader() SchemaReader

type SchemaWriter

type SchemaWriter interface {
	// WriteSchema writes schema to the storage.
	WriteSchema(ctx context.Context, definitions []SchemaDefinition) (err error)
}

SchemaWriter - Writes schema definitions to the storage.

func NewNoopSchemaWriter added in v0.4.4

func NewNoopSchemaWriter() SchemaWriter

type Tenant

type Tenant struct {
	ID        string
	Name      string
	CreatedAt time.Time
}

Tenant - Structure for tenant

func (Tenant) ToTenant

func (r Tenant) ToTenant() *base.Tenant

ToTenant - Convert database tenant to base tenant

type TenantReader

type TenantReader interface {
	// ListTenants reads tenants from the storage.
	ListTenants(ctx context.Context, pagination database.Pagination) (tenants []*base.Tenant, ct database.EncodedContinuousToken, err error)
}

TenantReader - Reads tenants from the storage.

func NewNoopTenantReader added in v0.4.4

func NewNoopTenantReader() TenantReader

type TenantWriter

type TenantWriter interface {
	// CreateTenant writes tenant to the storage.
	CreateTenant(ctx context.Context, id, name string) (tenant *base.Tenant, err error)
	// DeleteTenant deletes tenant from the storage.
	DeleteTenant(ctx context.Context, tenantID string) (tenant *base.Tenant, err error)
}

TenantWriter - Writes tenants to the storage.

func NewNoopTenantWriter added in v0.4.4

func NewNoopTenantWriter() TenantWriter

type Watcher added in v0.4.4

type Watcher interface {
	// Watch watches relation tuple changes from the storage.
	Watch(ctx context.Context, tenantID, snap string) (<-chan *base.DataChanges, <-chan error)
}

Watcher - Watches relation tuple changes from the storage.

func NewNoopWatcher added in v0.4.4

func NewNoopWatcher() Watcher

Directories

Path Synopsis
gc

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL