Skip to content

Commit

Permalink
add lazy attempts catalog entries
Browse files Browse the repository at this point in the history
  • Loading branch information
nicktrn committed May 28, 2024
1 parent 839b349 commit 16a365f
Show file tree
Hide file tree
Showing 2 changed files with 395 additions and 1 deletion.
394 changes: 394 additions & 0 deletions references/v3-catalog/src/trigger/lazyAttempts.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,394 @@
import { logger, task, wait } from "@trigger.dev/sdk/v3";

export const lazyImmediate = task({
id: "lazy-immediate",
run: async (payload: { forceError?: boolean }) => {
logger.info("Log something", { payload });
logger.info("Log something else", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyWait = task({
id: "lazy-wait",
run: async (payload: { forceError?: boolean; delayInSeconds?: number }) => {
logger.info("Log something", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazySingleDependency = task({
id: "lazy-single-dependency",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result", { result });

logger.info("Log something else", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyBatchDependency = task({
id: "lazy-batch-dependency",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results", { results });

logger.info("Log something else", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyConsecutiveWaits = task({
id: "lazy-consecutive-waits",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyConsecutiveDependencies = task({
id: "lazy-consecutive-dependencies",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result #1", { result });

logger.info("Log something else", { payload });

const result2 = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result #2", { result2 });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyConsecutiveBatchDependencies = task({
id: "lazy-consecutive-batch-dependencies",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results #1", { results });

logger.info("Log something else", { payload });

const results2 = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results #2", { results2 });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyWaitThenSingleDependency = task({
id: "lazy-wait-then-single-dependency",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result", { result });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyWaitThenBatchDependency = task({
id: "lazy-wait-then-batch-dependency",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results", { results });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazySingleDependencyThenWait = task({
id: "lazy-single-dependency-then-wait",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result", { result });

logger.info("Log something else", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazySingleDependencyThenBatch = task({
id: "lazy-single-dependency-then-batch",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result", { result });

logger.info("Log something else", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results", { results });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyBatchDependencyThenWait = task({
id: "lazy-batch-dependency-then-wait",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results", { results });

logger.info("Log something else", { payload });

await wait.for({ seconds: payload.delayInSeconds ?? 1 });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});

export const lazyBatchDependencyThenSingle = task({
id: "lazy-batch-dependency-then-single",
run: async (payload: {
forceError?: boolean;
forceChildError?: boolean;
delayInSeconds?: number;
}) => {
logger.info("Log something", { payload });

const results = await lazyWait.batchTriggerAndWait([
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
{ payload: { delayInSeconds: payload.delayInSeconds, forceError: payload.forceChildError } },
]);
logger.info("Batch results", { results });

logger.info("Log something else", { payload });

const result = await lazyWait.triggerAndWait({
delayInSeconds: payload.delayInSeconds,
forceError: payload.forceChildError,
});
logger.info("Single result", { result });

logger.info("Log something else again", { payload });

if (payload.forceError) {
throw new Error("Forced error");
}

return {
message: "This is a message",
payload,
};
},
});
Loading

0 comments on commit 16a365f

Please sign in to comment.