LockFactory class can be derived from any ILockAdapter or IDatabaseLockAdapter.

Note the ILock instances created by the LockFactory class are serializable and deserializable, allowing them to be seamlessly transferred across different servers, processes, and databases. This can be done directly using ISerderRegister or indirectly through components that rely on ISerderRegister internally.

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

Implements

Constructors

Accessors

Methods

Constructors

  • Parameters

    Returns LockFactory

    import { KyselyLockAdapter } from "@daiso-tech/core/lock/kysely-lock-adapter";
    import { LockFactory } from "@daiso-tech/core/lock";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";
    import Sqlite from "better-sqlite3";
    import { Kysely, SqliteDialect } from "kysely";

    const lockAdapter = new KyselyLockAdapter({
    kysely: new Kysely({
    dialect: new SqliteDialect({
    database: new Sqlite("local.db"),
    }),
    });
    });
    // You need initialize the adapter once before using it.
    await lockAdapter.init();

    const serde = new Serde(new SuperJsonSerdeAdapter())
    const lockFactory = new LockFactory({
    serde,
    adapter: lockAdapter,
    });

Accessors

Methods

  • Parameters

    Returns ILock

    import { LockFactory } from "@daiso-tech/core/lock";
    import { MemoryLockAdapter } from "@daiso-tech/core/lock/memory-lock-adapter";
    import { Namespace } from "@daiso-tech/core/namespace";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/super-json-serde-adapter";

    const lockFactory = new LockFactory({
    adapter: new MemoryLockAdapter(),
    namespace: new Namespace("lock"),
    serde: new Serde(new SuperJsonSerdeAdapter())
    });

    const lock = lockFactory.create("a");