Class SemaphoreProviderFactory<TAdapters>

The SemaphoreProviderFactory class is immutable.

IMPORT_PATH: "@daiso-tech/core/semaphore"

Type Parameters

  • TAdapters extends string

Implements

Constructors

Methods

  • Parameters

    Returns ISemaphoreProvider

    import { SemaphoreProviderFactory } from "@daiso-tech/core/semaphore";
    import { MemorySemaphoreAdapter } from "@daiso-tech/core/semaphore/memory-semaphore-adapter";
    import { RedisSemaphoreAdapter } from "@daiso-tech/core/semaphore/redis-semaphore-adapter";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
    import { TimeSpan } from "@daiso-tech/core/time-span" from "@daiso-tech/core/time-span";
    import Redis from "ioredis";

    const serde = new Serde(new SuperJsonSerdeAdapter());
    const semaphoreProviderFactory = new SemaphoreProviderFactory({
    serde,
    adapters: {
    memory: new MemorySemaphoreAdapter(),
    redis: new RedisSemaphoreAdapter(new Redis("YOUR_REDIS_CONNECTION")),
    },
    defaultAdapter: "memory",
    });

    // Will acquire key using the default adapter which is MemorySemaphoreAdapter
    await semaphoreProviderFactory
    .use()
    .create("a")
    .acquire();

    // Will acquire key using the redis adapter which is RedisSemaphoreAdapter
    await semaphoreProviderFactory
    .use("redis")
    .create("a")
    .acquire();