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,
});
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");
SharedLockFactoryclass can be derived from anyISharedLockAdapterorIDatabaseSharedLockAdapter.Note the
ISharedLockinstances created by theSharedLockFactoryclass are serializable and deserializable, allowing them to be seamlessly transferred across different servers, processes, and databases. This can be done directly usingISerderRegisteror indirectly through components that rely onISerderRegisterinternally.IMPORT_PATH:
"@daiso-tech/core/shared-lock"