id

package
v1.5.1 Latest Latest
Warning

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

Go to latest
Published: May 18, 2026 License: Apache-2.0 Imports: 4 Imported by: 2

Documentation

Overview

Package id defines TypeID-based identity types for all Warden entities.

Every entity in Warden uses a single ID struct with a prefix that identifies the entity type. IDs are K-sortable (UUIDv7-based), globally unique, and URL-safe in the format "prefix_suffix".

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AnyID

type AnyID = ID

AnyID is a type alias that accepts any valid prefix.

type AssignmentID

type AssignmentID = ID

AssignmentID is a type-safe identifier for role assignments (prefix: "asgn").

type CheckLogID

type CheckLogID = ID

CheckLogID is a type-safe identifier for check log entries (prefix: "chklog").

type ConditionID

type ConditionID = ID

ConditionID is a type-safe identifier for policy conditions (prefix: "cond").

type ID

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

ID is the primary identifier type for all Warden entities. It wraps a TypeID providing a prefix-qualified, globally unique, sortable, URL-safe identifier in the format "prefix_suffix".

var Nil ID

Nil is the zero-value ID.

func MustParse

func MustParse(s string) ID

MustParse is like Parse but panics on error. Use for hardcoded ID values.

func MustParseWithPrefix

func MustParseWithPrefix(s string, expected Prefix) ID

MustParseWithPrefix is like ParseWithPrefix but panics on error.

func New

func New(prefix Prefix) ID

New generates a new globally unique ID with the given prefix. It panics if prefix is not a valid TypeID prefix (programming error).

func NewAssignmentID

func NewAssignmentID() ID

NewAssignmentID generates a new unique assignment ID.

func NewCheckLogID

func NewCheckLogID() ID

NewCheckLogID generates a new unique check log ID.

func NewConditionID

func NewConditionID() ID

NewConditionID generates a new unique condition ID.

func NewPermissionID

func NewPermissionID() ID

NewPermissionID generates a new unique permission ID.

func NewPolicyID

func NewPolicyID() ID

NewPolicyID generates a new unique policy ID.

func NewRelationID

func NewRelationID() ID

NewRelationID generates a new unique relation ID.

func NewResourceTypeID

func NewResourceTypeID() ID

NewResourceTypeID generates a new unique resource type ID.

func NewRoleID

func NewRoleID() ID

NewRoleID generates a new unique role ID.

func Parse

func Parse(s string) (ID, error)

Parse parses a TypeID string (e.g., "role_01h2xcejqtf2nbrexx3vqjhp41") into an ID. Returns an error if the string is not valid.

func ParseAny

func ParseAny(s string) (ID, error)

ParseAny parses a string into an ID without type checking the prefix.

func ParseAssignmentID

func ParseAssignmentID(s string) (ID, error)

ParseAssignmentID parses a string and validates the "asgn" prefix.

func ParseCheckLogID

func ParseCheckLogID(s string) (ID, error)

ParseCheckLogID parses a string and validates the "chklog" prefix.

func ParseConditionID

func ParseConditionID(s string) (ID, error)

ParseConditionID parses a string and validates the "cond" prefix.

func ParsePermissionID

func ParsePermissionID(s string) (ID, error)

ParsePermissionID parses a string and validates the "perm" prefix.

func ParsePolicyID

func ParsePolicyID(s string) (ID, error)

ParsePolicyID parses a string and validates the "wpol" prefix.

func ParseRelationID

func ParseRelationID(s string) (ID, error)

ParseRelationID parses a string and validates the "rel" prefix.

func ParseResourceTypeID

func ParseResourceTypeID(s string) (ID, error)

ParseResourceTypeID parses a string and validates the "rtype" prefix.

func ParseRoleID

func ParseRoleID(s string) (ID, error)

ParseRoleID parses a string and validates the "role" prefix.

func ParseWithPrefix

func ParseWithPrefix(s string, expected Prefix) (ID, error)

ParseWithPrefix parses a TypeID string and validates that its prefix matches the expected value.

func (ID) IsNil

func (i ID) IsNil() bool

IsNil reports whether this ID is the zero value.

func (ID) MarshalBSONValue

func (i ID) MarshalBSONValue() (bsonType byte, data []byte, err error)

MarshalBSONValue satisfies bson.ValueMarshaler (mongo-driver v2) so the ID is stored as a BSON string instead of an opaque struct. No bson import needed because Go uses structural typing for interface satisfaction.

func (ID) MarshalText

func (i ID) MarshalText() ([]byte, error)

MarshalText implements encoding.TextMarshaler.

func (ID) Prefix

func (i ID) Prefix() Prefix

Prefix returns the prefix component of this ID.

func (*ID) Scan

func (i *ID) Scan(src any) error

Scan implements sql.Scanner for database retrieval.

func (ID) String

func (i ID) String() string

String returns the full TypeID string representation (prefix_suffix). Returns an empty string for the Nil ID.

func (*ID) UnmarshalBSONValue

func (i *ID) UnmarshalBSONValue(t byte, data []byte) error

UnmarshalBSONValue satisfies bson.ValueUnmarshaler (mongo-driver v2).

func (*ID) UnmarshalText

func (i *ID) UnmarshalText(data []byte) error

UnmarshalText implements encoding.TextUnmarshaler.

func (ID) Value

func (i ID) Value() (driver.Value, error)

Value implements driver.Valuer for database storage. Returns nil for the Nil ID so that optional foreign key columns store NULL.

type PermissionID

type PermissionID = ID

PermissionID is a type-safe identifier for permissions (prefix: "perm").

type PolicyID

type PolicyID = ID

PolicyID is a type-safe identifier for ABAC policies (prefix: "wpol").

type Prefix

type Prefix string

Prefix identifies the entity type encoded in a TypeID.

const (
	PrefixRole         Prefix = "role"
	PrefixPermission   Prefix = "perm"
	PrefixAssignment   Prefix = "asgn"
	PrefixPolicy       Prefix = "wpol"
	PrefixRelation     Prefix = "rel"
	PrefixCheckLog     Prefix = "chklog"
	PrefixResourceType Prefix = "rtype"
	PrefixCondition    Prefix = "cond"
)

Prefix constants for all Warden entity types.

type RelationID

type RelationID = ID

RelationID is a type-safe identifier for relation tuples (prefix: "rel").

type ResourceTypeID

type ResourceTypeID = ID

ResourceTypeID is a type-safe identifier for resource type definitions (prefix: "rtype").

type RoleID

type RoleID = ID

RoleID is a type-safe identifier for roles (prefix: "role").

Jump to

Keyboard shortcuts

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