UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

49 lines (48 loc) 1.38 kB
import { $atom, $inject, $module, $state, z } from "alepha"; import { AlephaQueue, QueueProvider } from "alepha/queue"; import { RedisProvider } from "alepha/redis"; //#region ../../src/queue/redis/providers/RedisQueueProvider.ts /** * Redis queue configuration atom. */ const redisQueueOptions = $atom({ name: "alepha.queue.redis.options", schema: z.object({ prefix: z.text({ default: "queue", description: "Prefix for all queue keys in Redis." }) }), default: { prefix: "queue" } }); var RedisQueueProvider = class { options = $state(redisQueueOptions); redisProvider = $inject(RedisProvider); prefix(queue) { return `${this.options.prefix}:${queue}`; } async push(queue, message) { await this.redisProvider.lpush(this.prefix(queue), message); } async pop(queue) { return this.redisProvider.rpop(this.prefix(queue)); } }; //#endregion //#region ../../src/queue/redis/index.ts /** * Plugin for Alepha Queue that provides Redis queue capabilities. * * @see {@link RedisQueueProvider} * @module alepha.queue.redis */ const AlephaQueueRedis = $module({ name: "alepha.queue.redis", services: [RedisQueueProvider], register: (alepha) => alepha.with({ optional: true, provide: QueueProvider, use: RedisQueueProvider }).with(AlephaQueue) }); //#endregion export { AlephaQueueRedis, RedisQueueProvider, redisQueueOptions }; //# sourceMappingURL=index.js.map