UNPKG

@fedify/postgres

Version:

PostgreSQL drivers for Fedify

65 lines (64 loc) 2.02 kB
import { MessageQueue, MessageQueueEnqueueOptions, MessageQueueListenOptions } from "@fedify/fedify"; import { Sql } from "postgres"; //#region src/mq.d.ts /** * Options for the PostgreSQL message queue. */ interface PostgresMessageQueueOptions { /** * The table name to use for the message queue. * `"fedify_message_v2"` by default. * @default `"fedify_message_v2"` */ tableName?: string; /** * The channel name to use for the message queue. * `"fedify_channel"` by default. * @default `"fedify_channel"` */ channelName?: string; /** * Whether the table has been initialized. `false` by default. * @default `false` */ initialized?: boolean; /** * The poll interval for the message queue. 5 seconds by default. * @default `{ seconds: 5 }` */ pollInterval?: Temporal.Duration | Temporal.DurationLike; } /** * A message queue that uses PostgreSQL as the underlying storage. * * @example * ```ts * import { createFederation } from "@fedify/fedify"; * import { PostgresKvStore, PostgresMessageQueue } from "@fedify/postgres"; * import postgres from "postgres"; * * const sql = postgres("postgres://user:pass@localhost/db"); * * const federation = createFederation({ * kv: new PostgresKvStore(sql), * queue: new PostgresMessageQueue(sql), * }); * ``` */ declare class PostgresMessageQueue implements MessageQueue { #private; constructor(sql: Sql<{}>, options?: PostgresMessageQueueOptions); enqueue(message: any, options?: MessageQueueEnqueueOptions): Promise<void>; enqueueMany(messages: any[], options?: MessageQueueEnqueueOptions): Promise<void>; listen(handler: (message: any) => void | Promise<void>, options?: MessageQueueListenOptions): Promise<void>; /** * Initializes the message queue table if it does not already exist. */ initialize(): Promise<void>; /** * Drops the message queue table if it exists. */ drop(): Promise<void>; } //#endregion export { PostgresMessageQueue, PostgresMessageQueueOptions };