chore(core): integrate backup routes

This commit is contained in:
Elian Doran
2026-04-12 18:20:58 +03:00
parent 9d4ff506dc
commit b921c3c587
3 changed files with 23 additions and 3 deletions

View File

@@ -172,9 +172,7 @@ function register(app: express.Application) {
asyncRoute(PST, "/api/database/rebuild/", [auth.checkApiAuthOrElectron], databaseRoute.rebuildIntegrationTestDatabase, apiResultHandler);
}
// backup requires execution outside of transaction
asyncRoute(PST, "/api/database/backup-database", [auth.checkApiAuthOrElectron, csrfMiddleware], databaseRoute.backupDatabase, apiResultHandler);
apiRoute(GET, "/api/database/backups", databaseRoute.getExistingBackups);
// backup/download is server-specific (uses Express res.download), backup-database and backups are in core
route(GET, "/api/database/backup/download", [auth.checkApiAuthOrElectron], databaseRoute.downloadBackup);
// VACUUM requires execution outside of transaction
asyncRoute(PST, "/api/database/vacuum-database", [auth.checkApiAuthOrElectron, csrfMiddleware], databaseRoute.vacuumDatabase, apiResultHandler);

View File

@@ -0,0 +1,17 @@
import type { BackupDatabaseNowResponse, DatabaseBackup } from "@triliumnext/commons";
import { getBackup } from "../../services/backup.js";
function getExistingBackups(): DatabaseBackup[] {
return getBackup().getExistingBackups();
}
async function backupDatabase(): Promise<BackupDatabaseNowResponse> {
return {
backupFile: await getBackup().backupNow("now")
};
}
export default {
getExistingBackups,
backupDatabase
};

View File

@@ -29,6 +29,7 @@ import importRoute from "./api/import";
import exportRoute from "./api/export";
import scriptRoute from "./api/script";
import backendLogRoute from "./api/backend_log";
import backupRoute from "./api/backup";
// TODO: Deduplicate with routes.ts
const GET = "get",
@@ -201,6 +202,10 @@ export function buildSharedApiRoutes({ route, asyncRoute, apiRoute, asyncApiRout
apiRoute(GET, "/api/app-info", appInfoRoute.getAppInfo);
asyncApiRoute(GET, "/api/backend-log", backendLogRoute.getBackendLog);
// Backup routes
apiRoute(GET, "/api/database/backups", backupRoute.getExistingBackups);
asyncApiRoute(PST, "/api/database/backup-database", backupRoute.backupDatabase);
apiRoute(GET, "/api/other/icon-usage", otherRoute.getIconUsage);
apiRoute(PST, "/api/other/render-markdown", otherRoute.renderMarkdown);
apiRoute(PST, "/api/other/to-markdown", otherRoute.toMarkdown);