Files
speckle-server/packages/server/modules/acc/services/webhooks.ts
T
2025-08-01 15:21:36 +01:00

50 lines
1.5 KiB
TypeScript

import { AccSyncItemStatuses } from '@/modules/acc/domain/constants'
import type {
QueryAllAccSyncItems,
UpsertAccSyncItem
} from '@/modules/acc/domain/operations'
import { logger } from '@/observability/logging'
type OnVersionAdded = (params: {
fileLineageUrn: string
fileVersionUrn: string
fileVersionIndex: number
}) => Promise<void>
export const onVersionAddedFactory =
(deps: {
queryAllAccSyncItems: QueryAllAccSyncItems
upsertAccSyncItem: UpsertAccSyncItem
}): OnVersionAdded =>
async ({ fileLineageUrn, fileVersionUrn, fileVersionIndex }) => {
for await (const syncItems of deps.queryAllAccSyncItems({
filter: { lineageUrn: fileLineageUrn }
})) {
for (const syncItem of syncItems) {
if (syncItem.accFileVersionIndex > fileVersionIndex) {
logger.warn(
{
syncItemId: syncItem.id,
currentVersion: syncItem.accFileVersionIndex,
incomingVersion: fileVersionIndex,
incomingAccFile: {
fileLineageUrn,
fileVersionUrn,
fileVersionIndex
}
},
'Received event for superseded version of sync item {syncItemId} - Current: {currentVersion} Incoming: {incomingVersion}'
)
continue
}
await deps.upsertAccSyncItem({
...syncItem,
status: AccSyncItemStatuses.pending,
accFileVersionIndex: fileVersionIndex,
accFileVersionUrn: fileVersionUrn
})
}
}
}