Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
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.
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 ¶
Types ¶
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
}
func BatchUpsert ¶ added in v1.14.0
func BatchUpsert(ctx context.Context, tx storage.Transaction, grants []Grant) ([]Relationship, error)
BatchUpsert writes the grants in statements of at most maxBatchSize rows and returns the stored rows in the same order as grants. The write stays atomic across chunks: BatchUpsert takes the transaction it runs in, and on any error the caller rolls back, so the rows written by earlier chunks never commit. A batch must not contain two grants with the same (Subject, Object, Kind); BatchUpsert returns ErrDuplicateGrant.
type ScanQuery ¶ added in v1.27.0
type ScanQuery struct {
OrgID string
Objects []uuid.UUID
Kinds []Kind
Roles []uuid.UUID
After *Cursor // nil reads the first page
Limit int
}
ScanQuery is the input to LookupByOrg. After is nil for the first page. Limit must be between 1 and maxPageSize.
type ScannedRelationship ¶ added in v1.27.0
type ScannedRelationship struct {
Subject uuid.UUID
Object uuid.UUID
Kind Kind
Role uuid.UUID
CreatedAt time.Time
LocalID string
}
ScannedRelationship is one row of an org scan, plus the LocalID of the subject's identity in that org.
func LookupByOrg ¶ added in v1.27.0
func LookupByOrg(ctx context.Context, db storage.DBTX, query ScanQuery) ([]ScannedRelationship, error)
LookupByOrg returns one page of an org's relationships, keyset-paginated. It is read-only, so it takes a DBTX.