mirror of
https://github.com/zadam/trilium.git
synced 2025-02-22 05:56:03 +08:00
allow creating backups via ETAPI, #4014
This commit is contained in:
parent
2bdd538d7d
commit
004cfe1965
4 changed files with 44 additions and 1 deletions
14
src/etapi/backup.js
Normal file
14
src/etapi/backup.js
Normal file
|
@ -0,0 +1,14 @@
|
|||
const eu = require("./etapi_utils");
|
||||
const backupService = require("../services/backup");
|
||||
|
||||
function register(router) {
|
||||
eu.route(router, 'put', '/etapi/backup/:backupName', async (req, res, next) => {
|
||||
await backupService.backupNow(req.params.backupName);
|
||||
|
||||
res.sendStatus(204);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
register
|
||||
};
|
|
@ -700,7 +700,26 @@ paths:
|
|||
application/json; charset=utf-8:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
|
||||
/backup/{backupName}:
|
||||
parameters:
|
||||
- name: backupName
|
||||
in: path
|
||||
required: true
|
||||
description: If the backupName is e.g. "now", then the backup will be written to "backup-now.db" file
|
||||
schema:
|
||||
$ref: '#/components/schemas/StringId'
|
||||
put:
|
||||
description: Create a database backup under a given name
|
||||
operationId: createBackup
|
||||
responses:
|
||||
'204':
|
||||
description: backup has been created
|
||||
default:
|
||||
description: unexpected error
|
||||
content:
|
||||
application/json; charset=utf-8:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Error'
|
||||
components:
|
||||
securitySchemes:
|
||||
EtapiTokenAuth:
|
||||
|
@ -880,6 +899,10 @@ components:
|
|||
type: string
|
||||
pattern: '[a-zA-Z0-9_]{4,32}'
|
||||
example: evnnmvHTCgIn
|
||||
StringId:
|
||||
type: string
|
||||
pattern: '[a-zA-Z0-9_]{1,32}'
|
||||
example: my_ID
|
||||
EntityIdList:
|
||||
type: array
|
||||
items:
|
||||
|
|
|
@ -65,6 +65,7 @@ const etapiBranchRoutes = require('../etapi/branches');
|
|||
const etapiNoteRoutes = require('../etapi/notes');
|
||||
const etapiSpecialNoteRoutes = require('../etapi/special_notes');
|
||||
const etapiSpecRoute = require('../etapi/spec');
|
||||
const etapiBackupRoute = require('../etapi/backup');
|
||||
|
||||
const csrfMiddleware = csurf({
|
||||
cookie: true,
|
||||
|
@ -315,6 +316,7 @@ function register(app) {
|
|||
etapiNoteRoutes.register(router);
|
||||
etapiSpecialNoteRoutes.register(router);
|
||||
etapiSpecRoute.register(router);
|
||||
etapiBackupRoute.register(router);
|
||||
|
||||
app.use('', router);
|
||||
}
|
||||
|
|
4
test-etapi/create-backup.http
Normal file
4
test-etapi/create-backup.http
Normal file
|
@ -0,0 +1,4 @@
|
|||
PUT {{triliumHost}}/etapi/backup/etapi_test
|
||||
Authorization: {{authToken}}
|
||||
|
||||
> {% client.assert(response.status === 201); %}
|
Loading…
Reference in a new issue