store

package
v1.13.1 Latest Latest
Warning

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

Go to latest
Published: Jun 17, 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.

Functions

This section is empty.

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 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
}

type Repository

type Repository struct {
	// contains filtered or unexported fields
}

func New

func (*Repository) BatchUpsert

func (r *Repository) BatchUpsert(ctx context.Context, 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.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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