mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
allow creating backups via ETAPI, #4014
This commit is contained in:
parent
2bdd538d7d
commit
004cfe1965
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:
|
application/json; charset=utf-8:
|
||||||
schema:
|
schema:
|
||||||
$ref: '#/components/schemas/Error'
|
$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:
|
components:
|
||||||
securitySchemes:
|
securitySchemes:
|
||||||
EtapiTokenAuth:
|
EtapiTokenAuth:
|
||||||
@ -880,6 +899,10 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
pattern: '[a-zA-Z0-9_]{4,32}'
|
pattern: '[a-zA-Z0-9_]{4,32}'
|
||||||
example: evnnmvHTCgIn
|
example: evnnmvHTCgIn
|
||||||
|
StringId:
|
||||||
|
type: string
|
||||||
|
pattern: '[a-zA-Z0-9_]{1,32}'
|
||||||
|
example: my_ID
|
||||||
EntityIdList:
|
EntityIdList:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
|
@ -65,6 +65,7 @@ const etapiBranchRoutes = require('../etapi/branches');
|
|||||||
const etapiNoteRoutes = require('../etapi/notes');
|
const etapiNoteRoutes = require('../etapi/notes');
|
||||||
const etapiSpecialNoteRoutes = require('../etapi/special_notes');
|
const etapiSpecialNoteRoutes = require('../etapi/special_notes');
|
||||||
const etapiSpecRoute = require('../etapi/spec');
|
const etapiSpecRoute = require('../etapi/spec');
|
||||||
|
const etapiBackupRoute = require('../etapi/backup');
|
||||||
|
|
||||||
const csrfMiddleware = csurf({
|
const csrfMiddleware = csurf({
|
||||||
cookie: true,
|
cookie: true,
|
||||||
@ -315,6 +316,7 @@ function register(app) {
|
|||||||
etapiNoteRoutes.register(router);
|
etapiNoteRoutes.register(router);
|
||||||
etapiSpecialNoteRoutes.register(router);
|
etapiSpecialNoteRoutes.register(router);
|
||||||
etapiSpecRoute.register(router);
|
etapiSpecRoute.register(router);
|
||||||
|
etapiBackupRoute.register(router);
|
||||||
|
|
||||||
app.use('', 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…
x
Reference in New Issue
Block a user