ZenStack LIVE

Audit Logging

Record every change to a model, including ones made outside your app.

Leaving out when listens for all events.

import { beforeAfter } from '@visualbravo/zenstack-live'

const stream = live.stream({
  model: 'Patient',
  slug: 'audit-log',
})

for await (const event of stream) {
  const { before, after } = beforeAfter(event)

  await client.auditLog.upsert({
    where: { eventId: event.id },
    update: {},

    create: {
      before,
      after,
      eventId: event.id,
      model: 'Patient',
      operation: event.type,
      occurredAt: event.date,
    },
  })
}

This also records changes made outside of your app. With a unique eventId, the upsert makes retries harmless.