mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 10:59:13 +00:00
fix(ext/node): implement DatabaseSync#applyChangeset()
(#27967)
https://nodejs.org/api/sqlite.html#databaseapplychangesetchangeset-options ```js const sourceDb = new DatabaseSync(':memory:'); const targetDb = new DatabaseSync(':memory:'); sourceDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); targetDb.exec('CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)'); const session = sourceDb.createSession(); const insert = sourceDb.prepare('INSERT INTO data (key, value) VALUES (?, ?)'); insert.run(1, 'hello'); insert.run(2, 'world'); const changeset = session.changeset(); targetDb.applyChangeset(changeset); // Now that the changeset has been applied, targetDb contains the same data as sourceDb. ```
This commit is contained in:
parent
bc8554878e
commit
ece384c094
3 changed files with 160 additions and 0 deletions
|
@ -152,3 +152,32 @@ Deno.test({
|
|||
}
|
||||
},
|
||||
});
|
||||
|
||||
Deno.test("[node/sqlite] applyChangeset across databases", () => {
|
||||
const sourceDb = new DatabaseSync(":memory:");
|
||||
const targetDb = new DatabaseSync(":memory:");
|
||||
|
||||
sourceDb.exec("CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)");
|
||||
targetDb.exec("CREATE TABLE data(key INTEGER PRIMARY KEY, value TEXT)");
|
||||
|
||||
const session = sourceDb.createSession();
|
||||
|
||||
const insert = sourceDb.prepare(
|
||||
"INSERT INTO data (key, value) VALUES (?, ?)",
|
||||
);
|
||||
insert.run(1, "hello");
|
||||
insert.run(2, "world");
|
||||
|
||||
const changeset = session.changeset();
|
||||
targetDb.applyChangeset(changeset, {
|
||||
filter(e) {
|
||||
return e === "data";
|
||||
},
|
||||
});
|
||||
|
||||
const stmt = targetDb.prepare("SELECT * FROM data");
|
||||
assertEquals(stmt.all(), [
|
||||
{ key: 1, value: "hello", __proto__: null },
|
||||
{ key: 2, value: "world", __proto__: null },
|
||||
]);
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue