Hyperlinkv0.8.0-beta.28

DurableQueueStore

export interface DurableQueueStoreShape {
  /**
   * Persist a pending entry. Dedups on `dedupKey` among live entries (`inserted` vs
   * `deduplicated`); if a live entry with that key exists at a *lower* priority, raises it
   * (`escalated`).
   */
  readonly offer: (
    entry: DurableEntryInput,
  ) => Effect.Effect<OfferResult, DurableQueueError>;
  /**
   * Atomically lease the top-priority available entry (FIFO within a priority), bumping
   * `attempts` and setting a lease (`leaseMillis`). `None` if nothing is available.
   */
  readonly take: (options: {
    readonly key: string;
    readonly leaseMillis: number;
  }) => Effect.Effect<Option.Option<DurableEntry>, DurableQueueError>;
  /** Acknowledge success — remove the entry. */
  readonly complete: (id: string) => Effect.Effect<void, DurableQueueError>;
  /**
   * Negative-ack — requeue (clear the lease) for retry, or dead-letter once `attempts` reaches
   * `maxAttempts`.
   */
  readonly fail: (
    id: string,
    options: { readonly maxAttempts: number },
  ) => Effect.Effect<FailResult, DurableQueueError>;
  /** Pending counts per priority (in-flight included). */
  readonly sizes: (
    key: string,
  ) => Effect.Effect<DurableSizes, DurableQueueError>;
  /**
   * Reclaim work whose lease has expired (`locked_until < now`) — the at-least-once recovery used
   * on boot/restart. Returns the count reclaimed.
   */
  readonly recover: (key: string) => Effect.Effect<number, DurableQueueError>;
  /** Delete all pending (incl. in-flight) entries for a queue. Returns the count removed. */
  readonly clear: (key: string) => Effect.Effect<number, DurableQueueError>;
  /**
   * Remove and return **available** (not in-flight) backlog entries matching `id` or `key` (all if
   * neither given). Powers the durable `release` / `deadLetter` / `drop` control verbs. In-flight
   * (leased) work is left untouched — it can't be selector-targeted while a worker holds it.
   */
  readonly drain: (
    key: string,
    match: { readonly id?: string; readonly key?: string },
  ) => Effect.Effect<ReadonlyArray<DurableEntry>, DurableQueueError>;
}
Referenced by 1 symbols