mirror of
https://github.com/langgenius/dify.git
synced 2026-09-08 11:04:27 +08:00
fix(knowledge-fs): decode freeze bigint evidence
This commit is contained in:
parent
da9870b5e1
commit
76f67f096e
@ -64,6 +64,34 @@ describe.each(["postgres", "tidb"] as const)("database Dify integration freeze (
|
||||
).resolves.toMatchObject({ applied: false, replayed: true });
|
||||
script.expectDone();
|
||||
});
|
||||
|
||||
it("accepts safe bigint freeze values returned as decimal strings", async () => {
|
||||
const script = scriptedDatabase(dialect, [
|
||||
{
|
||||
operation: "select",
|
||||
rows: [{ ...stateRow(), freeze_revision: "7", source_task_watermark: "12" }],
|
||||
},
|
||||
]);
|
||||
|
||||
await expect(
|
||||
createDatabaseDifyIntegrationFreezeRepository({ database: script.database }).get("tenant-a"),
|
||||
).resolves.toMatchObject({ freezeRevision: 7, sourceTaskWatermark: 12 });
|
||||
script.expectDone();
|
||||
});
|
||||
|
||||
it("rejects bigint freeze values outside JavaScript's safe integer range", async () => {
|
||||
const script = scriptedDatabase(dialect, [
|
||||
{
|
||||
operation: "select",
|
||||
rows: [{ ...stateRow(), freeze_revision: "9007199254740992" }],
|
||||
},
|
||||
]);
|
||||
|
||||
await expect(
|
||||
createDatabaseDifyIntegrationFreezeRepository({ database: script.database }).get("tenant-a"),
|
||||
).rejects.toThrow("nonnegative safe integer");
|
||||
script.expectDone();
|
||||
});
|
||||
});
|
||||
|
||||
interface ScriptStep {
|
||||
|
||||
@ -5,7 +5,7 @@ import type {
|
||||
DatabaseRow,
|
||||
} from "@knowledge/core";
|
||||
|
||||
import { numberColumn, stringColumn } from "./database-row-utils";
|
||||
import { nonnegativeSafeIntegerColumn, stringColumn } from "./database-row-utils";
|
||||
import { databasePlaceholder, quoteDatabaseIdentifier } from "./database-sql-utils";
|
||||
import {
|
||||
DifyIntegrationFreezeConflictError,
|
||||
@ -154,11 +154,11 @@ async function updateState(
|
||||
function stateFromRow(row: DatabaseRow): DifyIntegrationFreezeState {
|
||||
const state = {
|
||||
freezeId: stringColumn(row, "freeze_id"),
|
||||
freezeRevision: numberColumn(row, "freeze_revision"),
|
||||
freezeRevision: nonnegativeSafeIntegerColumn(row, "freeze_revision"),
|
||||
frozenAt: stringColumn(row, "frozen_at"),
|
||||
namespaceId: stringColumn(row, "tenant_id"),
|
||||
sourceRevisionDigest: stringColumn(row, "source_revision_digest"),
|
||||
sourceTaskWatermark: numberColumn(row, "source_task_watermark"),
|
||||
sourceTaskWatermark: nonnegativeSafeIntegerColumn(row, "source_task_watermark"),
|
||||
updatedAt: stringColumn(row, "updated_at"),
|
||||
};
|
||||
assertDifyIntegrationFreezeState(state);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user