Files
2026-07-13 13:09:14 +08:00

154 lines
5.3 KiB
TypeScript
Vendored

import { strict as assert } from "node:assert";
import { test } from "vitest";
import { buildTabResultSnapshot, decodeTabResultSnapshot, encodeTabResultSnapshot } from "../../apps/desktop/src/lib/tabs/tabResultCache.ts";
import type { QueryTab } from "../../apps/desktop/src/types/database.ts";
function queryTab(overrides: Partial<QueryTab> = {}): QueryTab {
return {
id: "tab-1",
title: "Query 1",
connectionId: "conn-1",
database: "app",
sql: "select * from users",
isExecuting: false,
mode: "query",
...overrides,
};
}
test("result snapshots strip live session handles and clone result rows", () => {
const tab = queryTab({
result: {
columns: ["id"],
rows: [[1]],
mongo_documents: [{ _id: "1", profile: { role: "admin" } }],
affected_rows: 0,
execution_time_ms: 1,
session_id: "live-session",
sourceLabel: "public.users",
sourceStatement: "select * from public.users",
},
results: [
{
columns: ["id"],
rows: [[1]],
affected_rows: 0,
execution_time_ms: 1,
session_id: "live-session",
},
],
activeResultIndex: 0,
resultLocalSortOriginalRows: [[2]],
resultLocalSortOriginalMongoDocuments: [{ _id: "2", profile: { role: "maintainer" } }],
});
const snapshot = buildTabResultSnapshot(tab);
assert.equal(snapshot?.result?.session_id, undefined);
assert.equal(snapshot?.result?.sourceLabel, "public.users");
assert.equal(snapshot?.result?.sourceStatement, "select * from public.users");
assert.equal(snapshot?.results?.[0]?.session_id, undefined);
assert.deepEqual(snapshot?.result?.rows, [[1]]);
assert.deepEqual(snapshot?.result?.mongo_documents, [{ _id: "1", profile: { role: "admin" } }]);
assert.deepEqual(snapshot?.resultLocalSortOriginalRows, [[2]]);
assert.deepEqual(snapshot?.resultLocalSortOriginalMongoDocuments, [{ _id: "2", profile: { role: "maintainer" } }]);
tab.result!.rows[0]![0] = 2;
tab.resultLocalSortOriginalRows![0]![0] = 3;
assert.deepEqual(snapshot?.result?.rows, [[1]]);
assert.deepEqual(snapshot?.resultLocalSortOriginalRows, [[2]]);
});
test("result snapshots strip session handles from result runs", () => {
const tab = queryTab({
resultRuns: [
{
id: "run-1",
title: "Run 1",
sequence: 1,
sql: "select 1",
createdAt: 1,
result: {
columns: ["id"],
rows: [[1]],
affected_rows: 0,
execution_time_ms: 1,
session_id: "live-run-session",
sourceLabel: "users",
sourceStatement: "select * from users",
},
resultLocalSortOriginalRows: [[2]],
resultLocalSortOriginalMongoDocuments: [{ _id: "2", role: "maintainer" }],
},
],
});
const snapshot = buildTabResultSnapshot(tab);
assert.equal(snapshot?.resultRuns?.[0]?.result?.session_id, undefined);
assert.equal(snapshot?.resultRuns?.[0]?.result?.sourceLabel, "users");
assert.equal(snapshot?.resultRuns?.[0]?.result?.sourceStatement, "select * from users");
assert.deepEqual(snapshot?.resultRuns?.[0]?.result?.rows, [[1]]);
assert.deepEqual(snapshot?.resultRuns?.[0]?.resultLocalSortOriginalRows, [[2]]);
assert.deepEqual(snapshot?.resultRuns?.[0]?.resultLocalSortOriginalMongoDocuments, [{ _id: "2", role: "maintainer" }]);
});
test("result snapshots encode as binary columnar payloads and decode back to rows", () => {
const snapshot = buildTabResultSnapshot(
queryTab({
result: {
columns: ["id", "name", "active"],
rows: [
[1, "Ada", true],
[2, "Linus", false],
],
mongo_documents: [
{ _id: "1", name: "Ada", tags: ["admin"] },
{ _id: "2", name: "Linus", tags: ["maintainer"] },
],
affected_rows: 0,
execution_time_ms: 3,
session_id: "live-session",
has_more: true,
sourceLabel: "public.users",
sourceStatement: "select id, name, active from public.users",
},
resultLocalSortOriginalRows: [
[2, "Linus", false],
[1, "Ada", true],
],
resultLocalSortOriginalMongoDocuments: [
{ _id: "2", name: "Linus", tags: ["maintainer"] },
{ _id: "1", name: "Ada", tags: ["admin"] },
],
}),
);
assert.ok(snapshot);
const encoded = encodeTabResultSnapshot(snapshot);
const decoded = decodeTabResultSnapshot(encoded);
assert.ok(encoded instanceof Uint8Array);
assert.deepEqual(decoded?.result?.columns, ["id", "name", "active"]);
assert.deepEqual(decoded?.result?.rows, [
[1, "Ada", true],
[2, "Linus", false],
]);
assert.deepEqual(decoded?.result?.mongo_documents, [
{ _id: "1", name: "Ada", tags: ["admin"] },
{ _id: "2", name: "Linus", tags: ["maintainer"] },
]);
assert.deepEqual(decoded?.resultLocalSortOriginalRows, [
[2, "Linus", false],
[1, "Ada", true],
]);
assert.deepEqual(decoded?.resultLocalSortOriginalMongoDocuments, [
{ _id: "2", name: "Linus", tags: ["maintainer"] },
{ _id: "1", name: "Ada", tags: ["admin"] },
]);
assert.equal(decoded?.result?.session_id, undefined);
assert.equal(decoded?.result?.has_more, true);
assert.equal(decoded?.result?.sourceLabel, "public.users");
assert.equal(decoded?.result?.sourceStatement, "select id, name, active from public.users");
assert.equal(decoded?.cachedAt, snapshot.cachedAt);
});