import { KyselyLockAdapter } from "@daiso-tech/core/lock/kysely-lock-adapter";
import { LockProvider } 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 lockProvider = new LockProvider({
serde,
adapter: lockAdapter,
});
import { LockProvider } 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 lockProvider = new LockProvider({
adapter: new MemoryLockAdapter(),
namespace: new Namespace("lock"),
serde: new Serde(new SuperJsonSerdeAdapter())
});
const lock = lockProvider.create("a");
LockProviderclass can be derived from anyILockAdapterorIDatabaseLockAdapter.Note the
ILockinstances created by theLockProviderclass 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/lock"