Documentation
¶
Overview ¶
Package pbnats provides seamless integration between PocketBase and NATS server by automatically generating and managing NATS JWT authentication.
Index ¶
- Constants
- Variables
- func GetDefaultCollectionNames() (user, role, account string)
- func GetDefaultOperatorName() string
- func GetVersion() string
- func IsPermanentError(err error) bool
- func IsTemporaryError(err error) bool
- func RegisterCommands(app *pocketbase.PocketBase)
- func RegisterCommandsWithOptions(app *pocketbase.PocketBase, opts CommandOptions)
- func Setup(app *pocketbase.PocketBase, options Options) error
- type AccountExportRecord
- type AccountImportRecord
- type AccountRecord
- type CommandOptions
- type NatsUserRecord
- type Options
- type PublishQueueRecord
- type RetryConfig
- type RoleRecord
- type SystemOperatorRecord
- type TimeoutConfig
Constants ¶
const ( DefaultAccountCollectionName = pbtypes.DefaultAccountCollectionName DefaultUserCollectionName = pbtypes.DefaultUserCollectionName DefaultRoleCollectionName = pbtypes.DefaultRoleCollectionName DefaultExportCollectionName = pbtypes.DefaultExportCollectionName DefaultImportCollectionName = pbtypes.DefaultImportCollectionName SystemOperatorCollectionName = pbtypes.SystemOperatorCollectionName PublishQueueCollectionName = pbtypes.PublishQueueCollectionName DefaultOperatorName = pbtypes.DefaultOperatorName PublishActionUpsert = pbtypes.PublishActionUpsert PublishActionDelete = pbtypes.PublishActionDelete EventTypeAccountCreate = pbtypes.EventTypeAccountCreate EventTypeAccountUpdate = pbtypes.EventTypeAccountUpdate EventTypeAccountDelete = pbtypes.EventTypeAccountDelete EventTypeUserCreate = pbtypes.EventTypeUserCreate EventTypeUserUpdate = pbtypes.EventTypeUserUpdate EventTypeUserDelete = pbtypes.EventTypeUserDelete EventTypeRoleCreate = pbtypes.EventTypeRoleCreate EventTypeRoleUpdate = pbtypes.EventTypeRoleUpdate EventTypeRoleDelete = pbtypes.EventTypeRoleDelete DefaultInboxSubscribe = pbtypes.DefaultInboxSubscribe )
Re-export constants for external use
const Version = "1.3.0"
Version information
Variables ¶
var ( // Collection errors - Database and schema related issues ErrCollectionNotFound = errors.New("collection not found") // PocketBase collection missing ErrRecordNotFound = errors.New("record not found") // Database record missing ErrInvalidRecord = errors.New("invalid record data") // Record validation failed // Key generation errors - Cryptographic operations ErrKeyGeneration = errors.New("failed to generate keys") // NKey generation failed ErrInvalidSeed = errors.New("invalid seed provided") // Malformed seed data ErrInvalidKeyPair = errors.New("invalid key pair") // Key pair validation failed // JWT errors - Token generation and validation ErrJWTGeneration = errors.New("failed to generate JWT") // JWT creation failed ErrJWTInvalid = errors.New("invalid JWT") // JWT format or signature invalid ErrJWTExpired = errors.New("JWT expired") // JWT past expiration time // Account errors - NATS account management ErrAccountNotFound = errors.New("account not found") // Account record missing ErrAccountInactive = errors.New("account is inactive") // Account disabled ErrSystemAccountProtected = errors.New("cannot modify system account") // System account protection // User errors - NATS user management ErrUserNotFound = errors.New("user not found") // User record missing ErrUserInactive = errors.New("user is inactive") // User disabled ErrUserAlreadyExists = errors.New("user already exists") // Duplicate user creation ErrUserNotAuthorized = errors.New("user not authorized") // Permission denied // Role errors - Permission management ErrRoleNotFound = errors.New("role not found") // Role record missing ErrInvalidPermission = errors.New("invalid permission") // Permission format invalid // Publishing errors - NATS communication ErrNATSConnection = errors.New("failed to connect to NATS") // NATS connectivity issues ErrPublishFailed = errors.New("failed to publish to NATS") // NATS publish operation failed ErrQueueFull = errors.New("publish queue is full") // Queue capacity exceeded // Configuration errors - System setup issues ErrInvalidOptions = errors.New("invalid options provided") // Configuration validation failed ErrMissingOperator = errors.New("system operator not found") // Operator initialization missing ErrMissingSystemAccount = errors.New("system account not found") // System account missing )
Common errors returned by the library organized by operational category.
var ( DefaultPublishPermissions = pbtypes.DefaultPublishPermissions DefaultSubscribePermissions = pbtypes.DefaultSubscribePermissions )
Re-export variables for external use
Functions ¶
func GetDefaultCollectionNames ¶
func GetDefaultCollectionNames() (user, role, account string)
GetDefaultCollectionNames returns the default collection names
func GetDefaultOperatorName ¶
func GetDefaultOperatorName() string
GetDefaultOperatorName returns the default operator name
func IsPermanentError ¶
IsPermanentError determines if an error represents a permanent condition that should not be retried (invalid data, authorization failures, configuration issues).
func IsTemporaryError ¶
IsTemporaryError determines if an error represents a temporary condition that should be retried (network connectivity, timeouts, NATS unavailability).
func RegisterCommands ¶
func RegisterCommands(app *pocketbase.PocketBase)
RegisterCommands adds NATS-related CLI commands to the PocketBase application using default options. This enables users to export NATS configuration files for server setup.
USAGE:
./myapp nats export --output ./nats-config/ ./myapp nats export --operator-jwt ./myapp nats export --config
func RegisterCommandsWithOptions ¶
func RegisterCommandsWithOptions(app *pocketbase.PocketBase, opts CommandOptions)
RegisterCommandsWithOptions adds NATS CLI commands with custom options. This allows customization of default values for the export command.
PARAMETERS:
- app: PocketBase application instance
- opts: Command options for customization
func Setup ¶
func Setup(app *pocketbase.PocketBase, options Options) error
Setup initializes NATS JWT synchronization for a PocketBase instance.
Types ¶
type AccountExportRecord ¶
type AccountExportRecord = pbtypes.AccountExportRecord
type AccountImportRecord ¶
type AccountImportRecord = pbtypes.AccountImportRecord
type AccountRecord ¶
type AccountRecord = pbtypes.AccountRecord
type CommandOptions ¶
type CommandOptions struct {
DefaultServerName string
DefaultPort int
DefaultJetstreamStore string
DefaultOutputDir string
// AccountCollectionName must match Options.AccountCollectionName when a
// custom account collection name is used.
AccountCollectionName string
// EncryptionKey must match Options.EncryptionKey when at-rest encryption is enabled,
// otherwise operator records cannot be decrypted for export.
EncryptionKey string
}
CommandOptions allows customization of command defaults.
func DefaultCommandOptions ¶
func DefaultCommandOptions() CommandOptions
DefaultCommandOptions returns sensible defaults for command options.
type NatsUserRecord ¶
type NatsUserRecord = pbtypes.NatsUserRecord
type Options ¶
Re-export types for external use
func DefaultOptions ¶
func DefaultOptions() Options
DefaultOptions returns sensible defaults for the NATS JWT synchronization options
type PublishQueueRecord ¶
type PublishQueueRecord = pbtypes.PublishQueueRecord
type RetryConfig ¶
type RetryConfig = pbtypes.RetryConfig
type RoleRecord ¶
type RoleRecord = pbtypes.RoleRecord
type SystemOperatorRecord ¶
type SystemOperatorRecord = pbtypes.SystemOperatorRecord
type TimeoutConfig ¶
type TimeoutConfig = pbtypes.TimeoutConfig
Directories
¶
| Path | Synopsis |
|---|---|
|
examples
module
|
|
|
internal
|
|
|
collections
Package collections handles PocketBase collection initialization
|
Package collections handles PocketBase collection initialization |
|
connection
Package connection provides persistent NATS connection management with failover
|
Package connection provides persistent NATS connection management with failover |
|
jwt
Package jwt provides JWT generation for NATS authentication
|
Package jwt provides JWT generation for NATS authentication |
|
nkey
Package nkey provides NKey management for NATS JWT authentication
|
Package nkey provides NKey management for NATS JWT authentication |
|
publisher
Package publisher handles publishing NATS account JWTs to NATS servers
|
Package publisher handles publishing NATS account JWTs to NATS servers |
|
sync
Package sync handles synchronization between PocketBase and NATS
|
Package sync handles synchronization between PocketBase and NATS |
|
types
Package types provides consolidated record-to-model converters for PocketBase records.
|
Package types provides consolidated record-to-model converters for PocketBase records. |
|
utils
Package utils provides utility functions for the pb-nats library
|
Package utils provides utility functions for the pb-nats library |