MCPcopy
hub / github.com/simstudioai/sim / makeUpdateChain

Function makeUpdateChain

apps/sim/lib/core/outbox/service.test.ts:35–70  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

33 }
34
35 const makeUpdateChain = () => {
36 const row: { set: Record<string, unknown>; where?: unknown } = { set: {} }
37 const chain: Record<string, unknown> = {}
38 chain.set = vi.fn((s: Record<string, unknown>) => {
39 row.set = s
40 return chain
41 })
42 chain.where = vi.fn((w: unknown) => {
43 row.where = w
44 state.updates.push(row)
45 return chain
46 })
47 chain.returning = vi.fn(async () => {
48 // Terminal UPDATE (lease CAS): has `attempts` + `availableAt`
49 // on retry, or explicit completed/dead_letter. Reaper path sets
50 // status='pending' without attempts/availableAt.
51 const isReaperUpdate =
52 row.set.status === 'pending' && !('attempts' in row.set) && !('availableAt' in row.set)
53
54 if (isReaperUpdate) {
55 return state.reapedRowIds.map((id) => ({ id }))
56 }
57
58 if (
59 row.set.status === 'completed' ||
60 row.set.status === 'dead_letter' ||
61 (row.set.status === 'pending' && 'attempts' in row.set && 'availableAt' in row.set) ||
62 (!('status' in row.set) && 'attempts' in row.set && 'lockedAt' in row.set)
63 ) {
64 return state.leaseHeld ? [{ id: 'evt-1' }] : []
65 }
66
67 return []
68 })
69 return chain
70 }
71
72 const makeSelectChain = () => {
73 const chain: Record<string, unknown> = {}

Callers 1

service.test.tsFile · 0.85

Calls 1

pushMethod · 0.45

Tested by

no test coverage detected