Class LockProviderFactory<TAdapters>

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

Type Parameters

  • TAdapters extends string

Implements

Constructors

Methods

Constructors

  • Type Parameters

    • TAdapters extends string

    Returns LockProviderFactory<TAdapters>

    import { LockProviderFactory } from "@daiso-tech/core/lock/implementations/derivables";
    import { MemoryLockAdapter, RedisLockAdapter } from "@daiso-tech/core/lock/implementations/adapters";
    import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
    import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
    import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
    import Redis from "ioredis"

    const eventBus = new EventBus({
    adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
    });
    const serde = new Serde(new SuperJsonSerdeAdapter());
    const lockProviderFactory = new LockProviderFactory({
    serde,
    adapters: {
    memory: new MemoryLockAdapter({
    rootGroup: "@global"
    }),
    redis: new RedisLockAdapter({
    client: new Redis("YOUR_REDIS_CONNECTION"),
    rootGroup: "@global"
    }),
    },
    defaultAdapter: "memory",
    eventBus,
    });

Methods

  • Parameters

    Returns IGroupableLockProvider

    import { LockProviderFactory } from "@daiso-tech/core/lock/implementations/derivables";
    import { MemoryLockAdapter, RedisLockAdapter } from "@daiso-tech/core/lock/implementations/adapters";
    import { EventBus } from "@daiso-tech/core/event-bus/implementations/derivables";
    import { MemoryEventBusAdapter } from "@daiso-tech/core/event-bus/implementations/adapters";
    import { Serde } from "@daiso-tech/core/serde/implementations/derivables";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/implementations/adapters";
    import Redis from "ioredis"

    const eventBus = new EventBus({
    adapter: new MemoryEventBusAdapter({ rootGroup: "@global" })
    });
    const serde = new Serde(new SuperJsonSerdeAdapter());
    const lockProviderFactory = new LockProviderFactory({
    serde,
    adapters: {
    memory: new MemoryLockAdapter({
    rootGroup: "@global"
    }),
    redis: new RedisLockAdapter({
    client: new Redis("YOUR_REDIS_CONNECTION"),
    rootGroup: "@global"
    }),
    },
    defaultAdapter: "memory",
    eventBus,
    });

    // Will create and acquire the lock with default adapter which is MemoryEventBusAdapter
    await lockProviderFactory.use().create("a").acquire();

    // Will create and acquire the lock with redis adapter which is RedisLockAdapter
    await lockProviderFactory.use("redis").create("a").acquire();