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,
});
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");
LockFactoryclass can be derived from anyILockAdapterorIDatabaseLockAdapter.Note the
ILockinstances created by theLockFactoryclass 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"