storage

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2024 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Migrate

func Migrate(conf config.Database) (err error)

Migrate performs database migrations depending on the given configuration.

func MigrateDown added in v0.5.4

func MigrateDown(engine, uri string) (err error)

MigrateDown undoes all database migrations, reverting the schema to the initial state.

func MigrateDownTo added in v0.5.4

func MigrateDownTo(engine, uri string, p int64) (err error)

MigrateDownTo undoes database migrations down to a specific version.

func MigrateReset added in v0.5.4

func MigrateReset(engine, uri string) (err error)

MigrateReset roll back all migrations.

func MigrateStatus added in v0.5.4

func MigrateStatus(engine, uri string) (err error)

MigrateStatus displays the status of all migrations.

func MigrateUp added in v0.5.4

func MigrateUp(engine, uri string) (err error)

MigrateUp performs all available database migrations to update the schema to the latest version.

func MigrateUpTo added in v0.5.4

func MigrateUpTo(engine, uri string, p int64) (err error)

MigrateUpTo performs database migrations up to a specific version.

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 Bundle added in v0.6.5

type Bundle struct {
	Name       string
	DataBundle *base.DataBundle
	TenantID   string
}

Bundle - Structure for Bundle

type BundleReader added in v0.6.0

type BundleReader interface {
	// Read retrieves a data bundle based on tenant ID and name.
	Read(ctx context.Context, tenantID, name string) (bundle *base.DataBundle, err error)
}

BundleReader - Reads data bundles from storage.

func NewNoopBundleReader added in v0.6.0

func NewNoopBundleReader() BundleReader

type BundleWriter added in v0.6.0

type BundleWriter interface {
	// Write stores bundles in storage for a tenant.
	Write(ctx context.Context, bundles []Bundle) (names []string, err error)

	// Delete removes a bundle from storage for a tenant.
	Delete(ctx context.Context, tenantID, name string) (err error)
}

BundleWriter - Manages writing and deletion of data bundles.

func NewNoopBundleWriter added in v0.6.0

func NewNoopBundleWriter() BundleWriter

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, pagination database.CursorPagination) (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, pagination database.CursorPagination) (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)

	// 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, excluded []string, 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 inserts a new TupleCollection and AttributeCollection into the database for a specified tenant.
	// Returns an encoded snapshot token representing the state of the database after the write operation and any error encountered.
	Write(ctx context.Context, tenantID string, tupleCollection *database.TupleCollection, attributesCollection *database.AttributeCollection) (token token.EncodedSnapToken, err error)

	// Delete removes data from the database based on the provided tuple and attribute filters for a specified tenant.
	// Returns an encoded snapshot token representing the state of the database after the delete operation and any error encountered.
	Delete(ctx context.Context, tenantID string, tupleFilter *base.TupleFilter, attributeFilter *base.AttributeFilter) (token token.EncodedSnapToken, err error)

	// RunBundle executes a specified data bundle for a given tenant.
	// Returns an encoded snapshot token representing the state of the database after running the bundle and any error encountered.
	RunBundle(ctx context.Context, tenantID string, arguments map[string]string, bundle *base.DataBundle) (token token.EncodedSnapToken, err error)
}

func NewNoopDataWriter added in v0.5.0

func NewNoopDataWriter() DataWriter

type NoopBundleReader added in v0.6.0

type NoopBundleReader struct{}

func (*NoopBundleReader) Read added in v0.6.0

type NoopBundleWriter added in v0.6.0

type NoopBundleWriter struct{}

func (*NoopBundleWriter) Delete added in v0.6.0

func (n *NoopBundleWriter) Delete(_ context.Context, _, _ string) error

func (*NoopBundleWriter) Write added in v0.6.0

func (n *NoopBundleWriter) Write(_ context.Context, _ []Bundle) (names []string, err error)

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 (*NoopDataReader) QuerySingleAttribute added in v0.5.0

func (f *NoopDataReader) QuerySingleAttribute(_ context.Context, _ string, _ *base.AttributeFilter, _ string) (*base.Attribute, 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) RunBundle added in v0.6.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) ListSchemas added in v0.7.5

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)

func (*NoopSchemaReader) ReadSchemaString added in v0.7.9

func (n *NoopSchemaReader) ReadSchemaString(_ context.Context, _, _ string) ([]string, 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 returns the schema definition for a specific tenant and version as a structured object.
	ReadSchema(ctx context.Context, tenantID, version string) (schema *base.SchemaDefinition, err error)
	// ReadSchemaString returns the schema definition for a specific tenant and version as a string.
	ReadSchemaString(ctx context.Context, tenantID, version string) (definitions []string, 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)
	// ListSchemas lists all schemas from the storage
	ListSchemas(ctx context.Context, tenantID string, pagination database.Pagination) (schemas []*base.SchemaList, ct database.EncodedContinuousToken, 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
decorators
gc

Jump to

Keyboard shortcuts

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