hooks

package
v1.8.2 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package hooks provides ecosystem integration hooks for Trove.

Index

Constants

View Source
const (
	EventObjectCreated  = "trove.object.created"
	EventObjectRead     = "trove.object.read"
	EventObjectDeleted  = "trove.object.deleted"
	EventObjectCopied   = "trove.object.copied"
	EventBucketCreated  = "trove.bucket.created"
	EventBucketDeleted  = "trove.bucket.deleted"
	EventUploadStarted  = "trove.upload.initiated"
	EventUploadComplete = "trove.upload.completed"
	EventUploadAborted  = "trove.upload.aborted"
	EventCASStored      = "trove.cas.stored"
	EventCASGC          = "trove.cas.gc"
)

Event names for storage operations.

View Source
const (
	ResourceBucket = "trove:bucket"
	ResourceObject = "trove:object"
	ResourceUpload = "trove:upload"
	ResourceStream = "trove:stream"
	ResourceCAS    = "trove:cas"
)

Resource types for Trove operations.

View Source
const (
	ActionCreate  = "create"
	ActionRead    = "read"
	ActionUpdate  = "update"
	ActionDelete  = "delete"
	ActionList    = "list"
	ActionPresign = "presign"
	ActionStream  = "stream"
)

Actions for Trove operations.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChronicleHook

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

ChronicleHook emits audit events for storage operations via Chronicle.

func NewChronicleHook

func NewChronicleHook(fapp forge.App, logger log.Logger) *ChronicleHook

NewChronicleHook creates a Chronicle hook, auto-discovering the emitter from DI. Returns nil if Chronicle is not available.

func (*ChronicleHook) RecordBucketCreated

func (h *ChronicleHook) RecordBucketCreated(ctx context.Context, name string)

RecordBucketCreated emits a bucket creation event.

func (*ChronicleHook) RecordBucketDeleted

func (h *ChronicleHook) RecordBucketDeleted(ctx context.Context, name string)

RecordBucketDeleted emits a bucket deletion event.

func (*ChronicleHook) RecordCASGC

func (h *ChronicleHook) RecordCASGC(ctx context.Context, scanned, deleted int, freedBytes int64)

RecordCASGC emits a CAS garbage collection event.

func (*ChronicleHook) RecordCASStored

func (h *ChronicleHook) RecordCASStored(ctx context.Context, hash string, size int64, deduplicated bool)

RecordCASStored emits a CAS store event.

func (*ChronicleHook) RecordObjectCreated

func (h *ChronicleHook) RecordObjectCreated(ctx context.Context, bucket, key string, size int64)

RecordObjectCreated emits an object creation event.

func (*ChronicleHook) RecordObjectDeleted

func (h *ChronicleHook) RecordObjectDeleted(ctx context.Context, bucket, key string)

RecordObjectDeleted emits an object deletion event.

func (*ChronicleHook) RecordObjectRead

func (h *ChronicleHook) RecordObjectRead(ctx context.Context, bucket, key string)

RecordObjectRead emits an object read event.

type DispatchHook

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

DispatchHook registers background jobs with Dispatch.

func NewDispatchHook

func NewDispatchHook(fapp forge.App, t *trove.Trove, logger log.Logger) *DispatchHook

NewDispatchHook creates a Dispatch hook, auto-discovering the engine from DI. Returns nil if Dispatch is not available.

func (*DispatchHook) RegisterJobs

func (h *DispatchHook) RegisterJobs(ctx context.Context)

RegisterJobs registers all Trove background jobs.

type Metrics

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

Metrics records Trove's metrics on a Forge app's metrics registry. It implements observe.Recorder, so you hand it to trove.WithMetrics (the extension does that for every store it opens) or to cas.WithMetrics.

Every metric in observe.Metrics is declared once, up front, with its label keys. Forge exports each under its namespace prefix:

trove_operation_duration_seconds   forge_trove_operation_duration_seconds
trove_object_bytes_total           forge_trove_object_bytes_total
trove_scans_total                  forge_trove_scans_total
trove_cas_stores_total             forge_trove_cas_stores_total
trove_cas_gc_deleted_total         forge_trove_cas_gc_deleted_total
trove_cas_gc_freed_bytes_total     forge_trove_cas_gc_freed_bytes_total

No metric carries a bucket, a key, a store name or a tenant. Package observe lists every label value.

func NewMetrics

func NewMetrics(m forge.Metrics) *Metrics

NewMetrics declares Trove's metrics on m. Call it once per app and share the result across stores: a second call declares the same names again. A nil m returns nil, which records nothing.

func (*Metrics) Add

func (m *Metrics) Add(name string, delta float64, labelValues ...string)

Add implements observe.Recorder.

func (*Metrics) Observe

func (m *Metrics) Observe(name string, value float64, labelValues ...string)

Observe implements observe.Recorder.

type VaultHook

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

VaultHook auto-configures encryption middleware with Vault-managed keys.

func NewVaultHook

func NewVaultHook(fapp forge.App, logger log.Logger) *VaultHook

NewVaultHook creates a Vault hook, auto-discovering Vault from DI. Returns nil if Vault is not available.

func (*VaultHook) KeyProvider

func (h *VaultHook) KeyProvider(appID string) encrypt.KeyProvider

KeyProvider returns a KeyProvider backed by Vault secrets.

type WardenHook

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

WardenHook provides authorization middleware using Warden.

func NewWardenHook

func NewWardenHook(fapp forge.App, logger log.Logger) *WardenHook

NewWardenHook creates a Warden hook, auto-discovering the engine from DI. Returns nil if Warden is not available.

func (*WardenHook) Middleware

func (h *WardenHook) Middleware() func(http.Handler) http.Handler

Middleware returns an HTTP middleware that checks authorization.

Jump to

Keyboard shortcuts

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