Ga naar hoofdinhoud

auditTrailsPlugin

Adds audit-trail support to the object store at two scopes:

  • Object-scoped — paginated audit trails for a single object (generated by createSubResourcePlugin).
  • Global — every audit trail in the system, plus statistics, filtering/search state, and delete.

Usage

import { createObjectStore, auditTrailsPlugin } from '@conduction/nextcloud-vue'

const useMyStore = createObjectStore('myapp', {
plugins: [auditTrailsPlugin({ globalLimit: 50 })],
})

const store = useMyStore()

// Object-scoped
await store.fetchAuditTrails('case', caseId)

// Global
await store.fetchGlobalAuditTrails({ _limit: 50, _page: 1 })
const stats = await store.fetchAuditTrailStatistics()
// stats: { total, create, update, delete, read }

// Delete
await store.deleteGlobalAuditTrail(id)
await store.deleteMultipleGlobalAuditTrails([id1, id2])

// Filter / search / item state
store.setAuditTrailFilters({ action: 'create', register: '1' })
store.setAuditTrailSearch('foo')
store.setAuditTrailItem(selected)
store.clearAuditTrailFilters()
store.clearGlobalAuditTrails()

// Clear everything (object-scoped + global)
store.clearAuditTrails()

Options

OptionTypeDefaultDescription
limitnumber20Default page size for object-scoped queries
globalLimitnumber50Default page size for global queries

State

Object-scoped (inherited from createSubResourcePlugin):

PropertyType
auditTrails{ results, total, page, pages, limit, offset }
auditTrailsLoadingboolean
auditTrailsErrorApiError | null

Global (added here):

PropertyTypeDescription
globalAuditTrails{ results, total, page, pages, limit, offset }Paginated state from the global endpoint
globalAuditTrailsLoadingboolean
globalAuditTrailsErrorApiError | null
auditTrailStatistics{ total, create, update, delete, read }Action count statistics
auditTrailStatisticsLoadingboolean
auditTrailStatisticsErrorApiError | null
auditTrailItemobject | nullCurrently selected audit trail (for detail modals)
auditTrailFiltersobjectActive filter key/value pairs
auditTrailSearchstringActive search term

Getters

getAuditTrails, isAuditTrailsLoading, getAuditTrailsError, getGlobalAuditTrails, isGlobalAuditTrailsLoading, getGlobalAuditTrailsError, getAuditTrailStatistics, isAuditTrailStatisticsLoading, getAuditTrailStatisticsError, getAuditTrailItem, getAuditTrailFilters, getAuditTrailSearch.

Actions

ActionSignatureDescription
fetchAuditTrails(type, objectId, params?) => Promise<Array>Object-scoped fetch (from createSubResourcePlugin).
fetchGlobalAuditTrails(params?) => Promise<Array>GET the global /audit-trails endpoint. Params: _limit, _page, _search, _order, plus filter keys.
refreshGlobalAuditTrails() => Promise<Array>Re-fetch with current globalAuditTrails.limit/page.
fetchAuditTrailStatistics() => Promise<object>GET /audit-trails/statistics.
deleteGlobalAuditTrail(id) => Promise<boolean>DELETE one. On success, removes it from globalAuditTrails.results and decrements total.
deleteMultipleGlobalAuditTrails(ids) => Promise<boolean>Bulk DELETE with { ids } body.
setAuditTrailItem(item | null) => voidSet the detail item.
setAuditTrailFilters(filters) => voidMerges into existing auditTrailFilters.
setAuditTrailSearch(search) => voidReplace the search term.
clearAuditTrailFilters() => voidReset filters + search.
clearGlobalAuditTrails() => voidReset all global state (results, statistics, item, filters).
clearAuditTrails() => voidClears both object-scoped and global state (overrides the base clearAuditTrails).

Notes

  • The global endpoint URL is derived from the store's baseUrl by replacing /objects with /audit-trails (e.g. /apps/openregister/api/objects/apps/openregister/api/audit-trails).
  • auditTrailFilters / auditTrailSearch are audit-trail-specific and do not conflict with other plugin filter state.
  • Client-side analytics (action distribution, top objects) are not included — compute these in the consuming component from globalAuditTrails.results.
  • On network failures, errors are set via networkError; on other errors via genericError.