SharedLockFactory class can be derived from any ISharedLockAdapter or IDatabaseSharedLockAdapter.

Note the ISharedLock instances created by the SharedLockFactory 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/shared-lock"

Implements

Constructors

Accessors

Methods

Constructors

  • Parameters

    Returns SharedLockFactory

    import { KyselySharedLockAdapter } from "@daiso-tech/core/shared-lock/kysely-shared-lock-adapter";
    import { SharedLockFactory } from "@daiso-tech/core/shared-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 sharedLockAdapter = new KyselySharedLockAdapter({
    kysely: new Kysely({
    dialect: new SqliteDialect({
    database: new Sqlite("local.db"),
    }),
    });
    });
    // You need initialize the adapter once before using it.
    await sharedLockAdapter.init();

    const serde = new Serde(new SuperJsonSerdeAdapter())
    const lockFactory = new SharedLockFactory({
    serde,
    adapter: sharedLockAdapter,
    });

Accessors

Methods

  • Parameters

    Returns ISharedLock

    import { SharedLockFactory } from "@daiso-tech/core/shared-lock";
    import { MemorySharedLockAdapter } from "@daiso-tech/core/shared-lock/memory-shared-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 SharedLockFactory({
    adapter: new MemorySharedLockAdapter(),
    namespace: new Namespace("shared_lock"),
    serde: new Serde(new SuperJsonSerdeAdapter())
    });

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