feat(audit-core, xo-server-audit): ability to delete a range of records (#5277)

This commit is contained in:
badrAZ
2020-10-19 13:09:08 +02:00
committed by GitHub
parent 48eeab974c
commit f41cca45aa
5 changed files with 82 additions and 6 deletions
+18
View File
@@ -20,6 +20,7 @@ const DEFAULT_BLOCKED_LIST = {
'acl.getCurrentPermissions': true,
'audit.checkIntegrity': true,
'audit.clean': true,
'audit.deleteRange': true,
'audit.generateFingerprint': true,
'audit.getRecords': true,
'backup.list': true,
@@ -238,11 +239,21 @@ class AuditXoPlugin {
clean.permission = 'admin'
clean.description = 'Clean audit database'
const deleteRange = this._deleteRangeAndRewrite.bind(this)
deleteRange.description =
'Delete a range of records and rewrite the records chain'
deleteRange.permission = 'admin'
deleteRange.params = {
newest: { type: 'string' },
oldest: { type: 'string', optional: true },
}
cleaners.push(
this._xo.addApiMethods({
audit: {
checkIntegrity,
clean,
deleteRange,
exportRecords,
generateFingerprint,
getRecords,
@@ -428,6 +439,13 @@ class AuditXoPlugin {
throw error
}
}
async _deleteRangeAndRewrite({ newest, oldest = newest }) {
await this._auditCore.deleteRangeAndRewrite(newest, oldest)
if (this._uploadLastHashJob !== undefined) {
await this._uploadLastHash()
}
}
}
AuditXoPlugin.prototype._getRecordsStream = asyncIteratorToStream(