

























@@ -6,6 +6,7 @@ import {
66executeSqliteQueryTakeFirstSync,
77getNodeSqliteKysely,
88} from "../../infra/kysely-sync.js";
9+import { normalizeSqliteNumber } from "../../infra/sqlite-number.js";
910import type { DB as OpenClawStateKyselyDatabase } from "../../state/openclaw-state-db.generated.js";
1011import type { CronRunLogEntry } from "../run-log-types.js";
1112import type { CronDeliveryStatus, CronRunStatus } from "../types.js";
@@ -27,19 +28,12 @@ function getCronRunLogKysely(db: DatabaseSync) {
2728return getNodeSqliteKysely<CronRunLogDatabase>(db);
2829}
293030-function normalizeNumber(value: number | bigint | null): number | undefined {
31-if (typeof value === "bigint") {
32-return Number(value);
33-}
34-return typeof value === "number" ? value : undefined;
35-}
36-3731function booleanToInteger(value: boolean | undefined): number | null {
3832return typeof value === "boolean" ? (value ? 1 : 0) : null;
3933}
40344135function integerToBoolean(value: number | bigint | null): boolean | undefined {
42-const normalized = normalizeNumber(value);
36+const normalized = normalizeSqliteNumber(value);
4337return normalized == null ? undefined : normalized !== 0;
4438}
4539@@ -91,7 +85,7 @@ export function parseStoredRunLogEntry(row: CronRunLogRow): CronRunLogEntry | nu
9185}
9286return {
9387 ...parsed,
94-ts: normalizeNumber(row.ts) ?? parsed.ts,
88+ts: normalizeSqliteNumber(row.ts) ?? parsed.ts,
9589jobId: row.job_id,
9690status: (row.status as CronRunStatus | null) ?? parsed.status,
9791error: row.error ?? parsed.error,
@@ -102,9 +96,9 @@ export function parseStoredRunLogEntry(row: CronRunLogRow): CronRunLogEntry | nu
10296sessionId: row.session_id ?? parsed.sessionId,
10397sessionKey: row.session_key ?? parsed.sessionKey,
10498runId: row.run_id ?? parsed.runId,
105-runAtMs: normalizeNumber(row.run_at_ms) ?? parsed.runAtMs,
106-durationMs: normalizeNumber(row.duration_ms) ?? parsed.durationMs,
107-nextRunAtMs: normalizeNumber(row.next_run_at_ms) ?? parsed.nextRunAtMs,
99+runAtMs: normalizeSqliteNumber(row.run_at_ms) ?? parsed.runAtMs,
100+durationMs: normalizeSqliteNumber(row.duration_ms) ?? parsed.durationMs,
101+nextRunAtMs: normalizeSqliteNumber(row.next_run_at_ms) ?? parsed.nextRunAtMs,
108102model: row.model ?? parsed.model,
109103provider: row.provider ?? parsed.provider,
110104};
@@ -175,7 +169,7 @@ export function countCronRunLogRows(params: {
175169params,
176170),
177171);
178-return normalizeNumber(row?.count ?? null) ?? 0;
172+return normalizeSqliteNumber(row?.count ?? null) ?? 0;
179173}
180174181175/** Reads a sorted, filtered page of cron run-log rows. */
@@ -211,7 +205,7 @@ function nextCronRunLogSeq(db: DatabaseSync, storeKey: string, jobId: string): n
211205.where("store_key", "=", storeKey)
212206.where("job_id", "=", jobId),
213207);
214-return (normalizeNumber(row?.seq ?? null) ?? 0) + 1;
208+return (normalizeSqliteNumber(row?.seq ?? null) ?? 0) + 1;
215209}
216210217211/** Appends a cron run-log entry with a per-job monotonic sequence number. */
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。