Class LockProviderFactory<TAdapters>

The LockProviderFactory class is immutable.

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

Type Parameters

  • TAdapters extends string

Implements

Constructors

  • Type Parameters

    • TAdapters extends string

    Returns LockProviderFactory<TAdapters>

    import { LockProviderFactory } from "@daiso-tech/core/lock";
    import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
    import { MemoryLockAdapter, RedisLockAdapter, SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
    import { Namespace } from "@daiso-tech/core/utilities";
    import Redis from "ioredis"

    const serde = new Serde(new SuperJsonSerdeAdapter());
    const lockProviderFactory = new LockProviderFactory({
    serde,
    namespace: new Namespace("lock"),
    adapters: {
    memory: new MemoryLockAdapter(),
    redis: new RedisLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
    },
    defaultAdapter: "memory",
    });

Methods

  • Parameters

    Returns ILockProvider

    import { LockProviderFactory } from "@daiso-tech/core/lock";
    import type { IDatabaseLockAdapter } from "@daiso-tech/core/lock/contracts";
    import { MemoryLockAdapter, RedisLockAdapter, SqliteLockAdapter } from "@daiso-tech/core/lock/adapters";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters";
    import { Namespace, TimeSpan } from "@daiso-tech/core/utilities";
    import Redis from "ioredis";

    const serde = new Serde(new SuperJsonSerdeAdapter());
    const lockProviderFactory = new LockProviderFactory({
    namespace: new Namespace("lock"),
    serde,
    adapters: {
    memory: new MemoryLockAdapter(),
    redis: new RedisLockAdapter(new Redis("YOUR_REDIS_CONNECTION")),
    },
    defaultAdapter: "memory",
    });

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

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