alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
49 lines (48 loc) • 1.38 kB
JavaScript
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