SharedLockProvider class can be derived from any ISharedLockAdapter or IDatabaseSharedLockAdapter.

Note the ISharedLock instances created by the SharedLockProvider 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

  • Parameters

    Returns SharedLockProvider

    import { KyselySharedLockAdapter } from "@daiso-tech/core/shared-lock/kysely-shared-lock-adapter";
    import { SharedLockProvider } 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 lockProvider = new SharedLockProvider({
    serde,
    adapter: sharedLockAdapter,
    });

Methods

  • Parameters

    Returns ISharedLock

    import { SharedLockProvider } 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 lockProvider = new SharedLockProvider({
    adapter: new MemorySharedLockAdapter(),
    namespace: new Namespace("shared_lock"),
    serde: new Serde(new SuperJsonSerdeAdapter())
    });

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