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
| Option | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Default page size for object-scoped queries |
globalLimit | number | 50 | Default page size for global queries |
State
Object-scoped (inherited from createSubResourcePlugin):
| Property | Type |
|---|---|
auditTrails | { results, total, page, pages, limit, offset } |
auditTrailsLoading | boolean |
auditTrailsError | ApiError | null |
Global (added here):
| Property | Type | Description |
|---|---|---|
globalAuditTrails | { results, total, page, pages, limit, offset } | Paginated state from the global endpoint |
globalAuditTrailsLoading | boolean | |
globalAuditTrailsError | ApiError | null | |
auditTrailStatistics | { total, create, update, delete, read } | Action count statistics |
auditTrailStatisticsLoading | boolean | |
auditTrailStatisticsError | ApiError | null | |
auditTrailItem | object | null | Currently selected audit trail (for detail modals) |
auditTrailFilters | object | Active filter key/value pairs |
auditTrailSearch | string | Active search term |
Getters
getAuditTrails, isAuditTrailsLoading, getAuditTrailsError, getGlobalAuditTrails, isGlobalAuditTrailsLoading, getGlobalAuditTrailsError, getAuditTrailStatistics, isAuditTrailStatisticsLoading, getAuditTrailStatisticsError, getAuditTrailItem, getAuditTrailFilters, getAuditTrailSearch.
Actions
| Action | Signature | Description |
|---|---|---|
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) => void | Set the detail item. |
setAuditTrailFilters | (filters) => void | Merges into existing auditTrailFilters. |
setAuditTrailSearch | (search) => void | Replace the search term. |
clearAuditTrailFilters | () => void | Reset filters + search. |
clearGlobalAuditTrails | () => void | Reset all global state (results, statistics, item, filters). |
clearAuditTrails | () => void | Clears both object-scoped and global state (overrides the base clearAuditTrails). |
Notes
- The global endpoint URL is derived from the store's
baseUrlby replacing/objectswith/audit-trails(e.g./apps/openregister/api/objects→/apps/openregister/api/audit-trails). auditTrailFilters/auditTrailSearchare 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 viagenericError.