store

package
v1.19.2 Latest Latest
Warning

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

Go to latest
Published: Jun 28, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrDuplicateGrant = errors.New("duplicate (subject, object, kind) in the batch")

ErrDuplicateGrant means a batch held two grants with the same (Subject, Object, Kind). The partial unique index allows one DIRECT role per grant, so the upsert touches a row twice and the DB rejects it; the handler maps this to InvalidArgument.

View Source
var ErrNoObjects = errors.New("store: read requires at least one object")

ErrNoObjects means a read was requested without any object to scope it to.

Functions

func AllObjectsGranted added in v1.18.0

func AllObjectsGranted(ctx context.Context, db storage.DBTX, subject uuid.UUID, objects []uuid.UUID, role uuid.UUID) (bool, error)

Types

type Grant

type Grant struct {
	Subject uuid.UUID
	Object  uuid.UUID
	Kind    Kind
	Role    uuid.UUID
}

type Kind

type Kind int32

Kind mirrors relationshipspb.Kind but keeps this package free of a proto dependency; the handler maps the proto enum onto it.

type ReadQuery added in v1.16.0

type ReadQuery struct {
	Subject uuid.UUID
	Objects []uuid.UUID
	Kinds   []Kind
}

type Relationship

type Relationship struct {
	Subject uuid.UUID
	Object  uuid.UUID
	Kind    Kind
	// EdgeType is the stored edge class (1=DIRECT). This API only writes DIRECT
	// rows; it is mapped through so the struct mirrors the row for future readers.
	EdgeType  int32
	Role      uuid.UUID
	CreatedAt time.Time
}

func BatchUpsert added in v1.14.0

func BatchUpsert(ctx context.Context, tx storage.Transaction, grants []Grant) ([]Relationship, error)

BatchUpsert writes every grant in one statement and returns the stored rows in the same order as grants. A batch must not contain two grants with the same (Subject, Object, Kind); the DB rejects that and BatchUpsert returns ErrDuplicateGrant. It writes, so it takes the transaction it runs in.

func Read added in v1.16.0

func Read(ctx context.Context, db storage.DBTX, query ReadQuery) ([]Relationship, error)

Read returns a subject's relationships for the given objects (optionally filtered by kind). It is read-only, so it takes a DBTX (the pool, or a tx).

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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