@convex-dev/action-retrier
Version:
Convex component for retrying idempotent actions.
43 lines • 1.41 kB
JavaScript
import { defineSchema, defineTable } from "convex/server";
import { v } from "convex/values";
const logLevel = v.union(v.literal("DEBUG"), v.literal("INFO"), v.literal("WARN"), v.literal("ERROR"));
export const options = v.object({
initialBackoffMs: v.number(),
base: v.number(),
maxFailures: v.number(),
logLevel,
runAt: v.optional(v.number()),
runAfter: v.optional(v.number()),
onComplete: v.optional(v.string()),
});
export const runResult = v.union(v.object({
type: v.literal("success"),
returnValue: v.any(),
}), v.object({
type: v.literal("failed"),
error: v.string(),
}), v.object({
type: v.literal("canceled"),
}));
export const runState = v.union(v.object({
type: v.literal("inProgress"),
// This is only set to `undefined` during initialization.
schedulerId: v.optional(v.id("_scheduled_functions")),
// Time we scheduled the execution to begin, which may be in the future
// if we are backing off.
startTime: v.number(),
}), v.object({
type: v.literal("completed"),
completedAt: v.number(),
result: runResult,
}));
export default defineSchema({
runs: defineTable({
functionHandle: v.string(),
functionArgs: v.any(),
options,
state: runState,
numFailures: v.number(),
}).index("by_state", ["state.type", "state.completedAt"]),
});
//# sourceMappingURL=schema.js.map