injectable

package
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Feb 5, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BulkAssignmentError

type BulkAssignmentError struct {
	Key   string
	Error error
}

BulkAssignmentError represents an error for a specific key in a bulk operation.

type BulkAssignmentResult

type BulkAssignmentResult struct {
	Succeeded []string
	Failed    []BulkAssignmentError
}

BulkAssignmentResult holds the result of a bulk assignment operation.

type BulkAssignmentsCommand

type BulkAssignmentsCommand struct {
	Keys        []string
	ScopeType   entity.InjectableScopeType
	TenantID    *string
	WorkspaceID *string
}

BulkAssignmentsCommand holds the data needed for bulk scoped assignment operations.

type CreateAssignmentCommand

type CreateAssignmentCommand struct {
	InjectableKey string
	ScopeType     entity.InjectableScopeType
	TenantID      *string
	WorkspaceID   *string
}

CreateAssignmentCommand holds the data needed to create a system injectable assignment.

type CreateWorkspaceInjectableCommand

type CreateWorkspaceInjectableCommand struct {
	WorkspaceID  string
	Key          string
	Label        string
	Description  string
	DefaultValue string
	Metadata     map[string]any
}

CreateWorkspaceInjectableCommand represents the command to create a workspace injectable.

type InjectableUseCase

type InjectableUseCase interface {
	// GetInjectable retrieves an injectable definition by ID.
	GetInjectable(ctx context.Context, id string) (*entity.InjectableDefinition, error)

	// ListInjectables lists all injectable definitions for a workspace (including global, system, and provider).
	ListInjectables(ctx context.Context, req *ListInjectablesRequest) (*ListInjectablesResult, error)
}

InjectableUseCase defines the input port for injectable definition operations. Note: Injectables are read-only - they are managed via database migrations/seeds.

type ListInjectablesRequest

type ListInjectablesRequest struct {
	WorkspaceID string // Workspace ID to list injectables for
	Locale      string // Locale for translations (e.g., "es", "en")
}

ListInjectablesRequest contains parameters for listing injectables.

type ListInjectablesResult

type ListInjectablesResult struct {
	Injectables []*entity.InjectableDefinition
	Groups      []port.GroupConfig
}

ListInjectablesResult contains the list of injectables and groups.

type SystemInjectableUseCase

type SystemInjectableUseCase interface {
	// ListAll returns all system injectors from the registry with their active state.
	// If an injector exists in DB, uses is_active from DB. Otherwise, returns as is_active=false.
	ListAll(ctx context.Context) ([]*entity.SystemInjectableInfo, error)

	// Activate enables a system injectable globally.
	// If the key doesn't exist in DB, creates it with is_active=true.
	Activate(ctx context.Context, key string) error

	// Deactivate disables a system injectable globally.
	// If the key doesn't exist in DB, creates it with is_active=false.
	Deactivate(ctx context.Context, key string) error

	// ListAssignments returns all assignments for a given system injectable key.
	ListAssignments(ctx context.Context, key string) ([]*entity.SystemInjectableAssignment, error)

	// CreateAssignment creates a new assignment for a system injectable.
	CreateAssignment(ctx context.Context, cmd CreateAssignmentCommand) (*entity.SystemInjectableAssignment, error)

	// DeleteAssignment removes an assignment.
	DeleteAssignment(ctx context.Context, key, assignmentID string) error

	// ExcludeAssignment sets an assignment's is_active to false (exclusion).
	ExcludeAssignment(ctx context.Context, key, assignmentID string) error

	// IncludeAssignment sets an assignment's is_active to true (undo exclusion).
	IncludeAssignment(ctx context.Context, key, assignmentID string) error

	// BulkActivate activates multiple system injectables globally.
	BulkActivate(ctx context.Context, keys []string) (*BulkAssignmentResult, error)

	// BulkDeactivate deactivates multiple system injectables globally.
	BulkDeactivate(ctx context.Context, keys []string) (*BulkAssignmentResult, error)

	// BulkCreateAssignments creates scoped assignments for multiple injectable keys.
	BulkCreateAssignments(ctx context.Context, cmd BulkAssignmentsCommand) (*BulkAssignmentResult, error)

	// BulkDeleteAssignments deletes scoped assignments for multiple injectable keys.
	BulkDeleteAssignments(ctx context.Context, cmd BulkAssignmentsCommand) (*BulkAssignmentResult, error)
}

SystemInjectableUseCase defines the input port for system injectable management operations. System injectables are code-defined injectors whose availability is controlled via database.

type UpdateWorkspaceInjectableCommand

type UpdateWorkspaceInjectableCommand struct {
	ID           string
	WorkspaceID  string
	Key          *string
	Label        *string
	Description  *string
	DefaultValue *string
	Metadata     map[string]any
}

UpdateWorkspaceInjectableCommand represents the command to update a workspace injectable.

type WorkspaceInjectableUseCase

type WorkspaceInjectableUseCase interface {
	// CreateInjectable creates a new TEXT type injectable for the workspace.
	CreateInjectable(ctx context.Context, cmd CreateWorkspaceInjectableCommand) (*entity.InjectableDefinition, error)

	// GetInjectable retrieves an injectable by ID (must belong to workspace).
	GetInjectable(ctx context.Context, id, workspaceID string) (*entity.InjectableDefinition, error)

	// ListInjectables lists all injectables owned by the workspace (excluding deleted).
	ListInjectables(ctx context.Context, workspaceID string) ([]*entity.InjectableDefinition, error)

	// UpdateInjectable updates a workspace-owned injectable.
	UpdateInjectable(ctx context.Context, cmd UpdateWorkspaceInjectableCommand) (*entity.InjectableDefinition, error)

	// DeleteInjectable soft-deletes an injectable (sets is_deleted=true).
	DeleteInjectable(ctx context.Context, id, workspaceID string) error

	// ActivateInjectable sets is_active=true for an injectable.
	ActivateInjectable(ctx context.Context, id, workspaceID string) (*entity.InjectableDefinition, error)

	// DeactivateInjectable sets is_active=false for an injectable.
	DeactivateInjectable(ctx context.Context, id, workspaceID string) (*entity.InjectableDefinition, error)
}

WorkspaceInjectableUseCase defines the input port for workspace injectable operations.

Jump to

Keyboard shortcuts

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