mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-03 17:51:58 +01:00
Batch review and confirmation eligibility per company, scope decision and budget hints, and keep child blocker relation intents inside their owning transaction. Cover ordinary child, budget and execution producers plus full candidate-page query bounds; update startup/import fixtures for source-driven retention. Co-Authored-By: Paperclip <noreply@paperclip.ing>
25 lines
1.2 KiB
TypeScript
25 lines
1.2 KiB
TypeScript
import { notifyAttentionRetentionWork } from "./retention-work-notifications.js";
|
|
import type { Db } from "@paperclipai/db";
|
|
import { DELIVERY_QUEUES, notifyDeliveryWork } from "./delivery-work-notifications.js";
|
|
|
|
type DecisionWorkScope = { companyId: string; sourceId?: string };
|
|
|
|
export async function notifyDecisionCreated(transaction: object, scope: DecisionWorkScope) {
|
|
await notifyAttentionRetentionWork(transaction, { ...scope, sourceKind: "decision" });
|
|
return notifyDeliveryWork(transaction, DELIVERY_QUEUES.decisionExpiry);
|
|
}
|
|
|
|
export async function notifyDecisionChange(transaction: object, scope: DecisionWorkScope) {
|
|
await notifyAttentionRetentionWork(transaction, { ...scope, sourceKind: "decision" });
|
|
await notifyDeliveryWork(transaction, DELIVERY_QUEUES.decisionContinuation);
|
|
await notifyDeliveryWork(transaction, DELIVERY_QUEUES.decisionExpiry);
|
|
}
|
|
|
|
export function writeDecisionChange<T>(db: Db, write: (transaction: Db) => Promise<T>, scope: DecisionWorkScope): Promise<T> {
|
|
return db.transaction(async transaction => {
|
|
await notifyDecisionChange(transaction, scope);
|
|
await notifyDeliveryWork(transaction, DELIVERY_QUEUES.decisionEffectRecovery);
|
|
return write(transaction as unknown as Db);
|
|
});
|
|
}
|