Documentation
¶
Overview ¶
Package storages defines the Storage interface for idempotency key persistence. Implementations are in subpackages: memory, redis, nats.
Example:
var store storages.Storage = redis.New(client) store.Add(ctx, "request-123")
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Storage ¶
type Storage interface {
// AttemptLock tries to acquire a lock for the given key.
// It operates atomically:
// - If key does not exist: Sets key to val and returns (true, nil, nil).
// - If key exists: Returns (false, existingVal, nil).
AttemptLock(ctx context.Context, key string, val []byte) (bool, []byte, error)
// Complete marks the idempotency key as completed by updating its value.
// It overwrites the existing value with val.
Complete(ctx context.Context, key string, val []byte) error
// Delete removes the key from storage (e.g. on failure).
Delete(ctx context.Context, key string) error
}
Storage interface for idempotency key storage.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package memory provides in-memory storage for idempotency keys with TTL support.
|
Package memory provides in-memory storage for idempotency keys with TTL support. |
|
Package nats provides NATS JetStream KeyValue storage for idempotency keys.
|
Package nats provides NATS JetStream KeyValue storage for idempotency keys. |
|
Package redis provides Redis storage for idempotency keys with TTL support.
|
Package redis provides Redis storage for idempotency keys with TTL support. |
Click to show internal directories.
Click to hide internal directories.