mirror of
https://github.com/lancedb/lancedb.git
synced 2026-01-07 20:32:59 +00:00
feat(nodejs): update({values | valuesSql}) (#1439)
This commit is contained in:
@@ -96,6 +96,50 @@ describe.each([arrow, arrowOld])("Given a table", (arrow: any) => {
|
||||
expect(await table.countRows("id == 10")).toBe(1);
|
||||
});
|
||||
|
||||
it("should let me update values with `values`", async () => {
|
||||
await table.add([{ id: 1 }]);
|
||||
expect(await table.countRows("id == 1")).toBe(1);
|
||||
expect(await table.countRows("id == 7")).toBe(0);
|
||||
await table.update({ values: { id: 7 } });
|
||||
expect(await table.countRows("id == 1")).toBe(0);
|
||||
expect(await table.countRows("id == 7")).toBe(1);
|
||||
await table.add([{ id: 2 }]);
|
||||
// Test Map as input
|
||||
await table.update({
|
||||
values: {
|
||||
id: "10",
|
||||
},
|
||||
where: "id % 2 == 0",
|
||||
});
|
||||
expect(await table.countRows("id == 2")).toBe(0);
|
||||
expect(await table.countRows("id == 7")).toBe(1);
|
||||
expect(await table.countRows("id == 10")).toBe(1);
|
||||
});
|
||||
|
||||
it("should let me update values with `valuesSql`", async () => {
|
||||
await table.add([{ id: 1 }]);
|
||||
expect(await table.countRows("id == 1")).toBe(1);
|
||||
expect(await table.countRows("id == 7")).toBe(0);
|
||||
await table.update({
|
||||
valuesSql: {
|
||||
id: "7",
|
||||
},
|
||||
});
|
||||
expect(await table.countRows("id == 1")).toBe(0);
|
||||
expect(await table.countRows("id == 7")).toBe(1);
|
||||
await table.add([{ id: 2 }]);
|
||||
// Test Map as input
|
||||
await table.update({
|
||||
valuesSql: {
|
||||
id: "10",
|
||||
},
|
||||
where: "id % 2 == 0",
|
||||
});
|
||||
expect(await table.countRows("id == 2")).toBe(0);
|
||||
expect(await table.countRows("id == 7")).toBe(1);
|
||||
expect(await table.countRows("id == 10")).toBe(1);
|
||||
});
|
||||
|
||||
// https://github.com/lancedb/lancedb/issues/1293
|
||||
test.each([new arrow.Float16(), new arrow.Float32(), new arrow.Float64()])(
|
||||
"can create empty table with non default float type: %s",
|
||||
|
||||
28
nodejs/__test__/util.test.ts
Normal file
28
nodejs/__test__/util.test.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import { IntoSql, toSQL } from "../lancedb/util";
|
||||
test.each([
|
||||
["string", "'string'"],
|
||||
[123, "123"],
|
||||
[1.11, "1.11"],
|
||||
[true, "TRUE"],
|
||||
[false, "FALSE"],
|
||||
[null, "NULL"],
|
||||
[new Date("2021-01-01T00:00:00.000Z"), "'2021-01-01T00:00:00.000Z'"],
|
||||
[[1, 2, 3], "[1, 2, 3]"],
|
||||
[new ArrayBuffer(8), "X'0000000000000000'"],
|
||||
[Buffer.from("hello"), "X'68656c6c6f'"],
|
||||
["Hello 'world'", "'Hello ''world'''"],
|
||||
])("toSQL(%p) === %p", (value, expected) => {
|
||||
expect(toSQL(value)).toBe(expected);
|
||||
});
|
||||
|
||||
test("toSQL({}) throws on unsupported value type", () => {
|
||||
expect(() => toSQL({} as unknown as IntoSql)).toThrow(
|
||||
"Unsupported value type: object value: ([object Object])",
|
||||
);
|
||||
});
|
||||
test("toSQL() throws on unsupported value type", () => {
|
||||
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
|
||||
expect(() => (<any>toSQL)()).toThrow(
|
||||
"Unsupported value type: undefined value: (undefined)",
|
||||
);
|
||||
});
|
||||
Reference in New Issue
Block a user