mirror of
https://github.com/zadam/trilium.git
synced 2026-02-20 20:54:26 +01:00
chore(core): port revisions route
This commit is contained in:
parent
969860c344
commit
08f1d44d90
@ -41,7 +41,6 @@ import passwordApiRoute from "./api/password.js";
|
||||
import recentChangesApiRoute from "./api/recent_changes.js";
|
||||
import recoveryCodes from './api/recovery_codes.js';
|
||||
import relationMapApiRoute from "./api/relation-map.js";
|
||||
import revisionsApiRoute from "./api/revisions.js";
|
||||
import scriptRoute from "./api/script.js";
|
||||
import searchRoute from "./api/search.js";
|
||||
import senderRoute from "./api/sender.js";
|
||||
@ -136,16 +135,10 @@ function register(app: express.Application) {
|
||||
apiRoute(PST, "/api/attachments/:attachmentId/upload-modified-file", filesRoute.uploadModifiedFileToAttachment);
|
||||
route(PUT, "/api/attachments/:attachmentId/file", [auth.checkApiAuthOrElectron, uploadMiddlewareWithErrorHandling, csrfMiddleware], filesRoute.updateAttachment, apiResultHandler);
|
||||
|
||||
apiRoute(GET, "/api/notes/:noteId/revisions", revisionsApiRoute.getRevisions);
|
||||
apiRoute(DEL, "/api/notes/:noteId/revisions", revisionsApiRoute.eraseAllRevisions);
|
||||
apiRoute(PST, "/api/revisions/erase-all-excess-revisions", revisionsApiRoute.eraseAllExcessRevisions);
|
||||
apiRoute(GET, "/api/revisions/:revisionId", revisionsApiRoute.getRevision);
|
||||
apiRoute(GET, "/api/revisions/:revisionId/blob", revisionsApiRoute.getRevisionBlob);
|
||||
apiRoute(DEL, "/api/revisions/:revisionId", revisionsApiRoute.eraseRevision);
|
||||
apiRoute(PST, "/api/revisions/:revisionId/restore", revisionsApiRoute.restoreRevision);
|
||||
route(GET, "/api/revisions/:revisionId/image/:filename", [auth.checkApiAuthOrElectron], imageRoute.returnImageFromRevision);
|
||||
|
||||
route(GET, "/api/revisions/:revisionId/download", [auth.checkApiAuthOrElectron], revisionsApiRoute.downloadRevision);
|
||||
// TODO: Re-enable once we suppourt route()
|
||||
// route(GET, "/api/revisions/:revisionId/download", [auth.checkApiAuthOrElectron], revisionsApiRoute.downloadRevision);
|
||||
|
||||
route(GET, "/api/branches/:branchId/export/:type/:format/:version/:taskId", [auth.checkApiAuthOrElectron], exportRoute.exportBranch);
|
||||
asyncRoute(PST, "/api/notes/:parentNoteId/notes-import", [auth.checkApiAuthOrElectron, uploadMiddlewareWithErrorHandling, csrfMiddleware], importRoute.importNotesToBranch, apiResultHandler);
|
||||
@ -271,7 +264,6 @@ function register(app: express.Application) {
|
||||
apiRoute(PST, "/api/other/render-markdown", otherRoute.renderMarkdown);
|
||||
apiRoute(PST, "/api/other/to-markdown", otherRoute.toMarkdown);
|
||||
apiRoute(GET, "/api/recent-changes/:ancestorNoteId", recentChangesApiRoute.getRecentChanges);
|
||||
apiRoute(GET, "/api/edited-notes/:date", revisionsApiRoute.getEditedNotesOnDate);
|
||||
|
||||
apiRoute(PST, "/api/note-map/:noteId/tree", noteMapRoute.getTreeMap);
|
||||
apiRoute(PST, "/api/note-map/:noteId/link", noteMapRoute.getLinkMap);
|
||||
|
||||
@ -1,14 +1,15 @@
|
||||
import { EditedNotesResponse, RevisionItem, RevisionPojo } from "@triliumnext/commons";
|
||||
import { becca_service, binary_utils, blob as blobService, erase as eraseService, NotePojo } from "@triliumnext/core";
|
||||
import type { Request, Response } from "express";
|
||||
import path from "path";
|
||||
|
||||
import becca from "../../becca/becca.js";
|
||||
import type BNote from "../../becca/entities/bnote.js";
|
||||
import type BRevision from "../../becca/entities/brevision.js";
|
||||
import cls from "../../services/cls.js";
|
||||
import sql from "../../services/sql.js";
|
||||
import utils from "../../services/utils.js";
|
||||
import blobService from "../../services/blob.js";
|
||||
import eraseService from "../../services/erase.js";
|
||||
import { NotePojo } from "../../becca/becca-interface.js";
|
||||
import { becca_service, binary_utils, cls, getSql } from "../../index.js";
|
||||
import { formatDownloadTitle, getContentDisposition } from "../../services/utils/index.js";
|
||||
|
||||
interface NotePath {
|
||||
noteId: string;
|
||||
@ -60,7 +61,7 @@ function getRevision(req: Request) {
|
||||
}
|
||||
|
||||
function getRevisionFilename(revision: BRevision) {
|
||||
let filename = utils.formatDownloadTitle(revision.title, revision.type, revision.mime);
|
||||
let filename = formatDownloadTitle(revision.title, revision.type, revision.mime);
|
||||
|
||||
if (!revision.dateCreated) {
|
||||
throw new Error("Missing creation date for revision.");
|
||||
@ -90,14 +91,14 @@ function downloadRevision(req: Request, res: Response) {
|
||||
|
||||
const filename = getRevisionFilename(revision);
|
||||
|
||||
res.setHeader("Content-Disposition", utils.getContentDisposition(filename));
|
||||
res.setHeader("Content-Disposition", getContentDisposition(filename));
|
||||
res.setHeader("Content-Type", revision.mime);
|
||||
|
||||
res.send(revision.getContent());
|
||||
}
|
||||
|
||||
function eraseAllRevisions(req: Request) {
|
||||
const revisionIdsToErase = sql.getColumn<string>("SELECT revisionId FROM revisions WHERE noteId = ?", [req.params.noteId]);
|
||||
const revisionIdsToErase = getSql().getColumn<string>("SELECT revisionId FROM revisions WHERE noteId = ?", [req.params.noteId]);
|
||||
|
||||
eraseService.eraseRevisions(revisionIdsToErase);
|
||||
}
|
||||
@ -107,7 +108,7 @@ function eraseRevision(req: Request) {
|
||||
}
|
||||
|
||||
function eraseAllExcessRevisions() {
|
||||
const allNoteIds = sql.getRows("SELECT noteId FROM notes WHERE SUBSTRING(noteId, 1, 1) != '_'") as { noteId: string }[];
|
||||
const allNoteIds = getSql().getRows("SELECT noteId FROM notes WHERE SUBSTRING(noteId, 1, 1) != '_'") as { noteId: string }[];
|
||||
allNoteIds.forEach((row) => {
|
||||
becca.getNote(row.noteId)?.eraseExcessRevisionSnapshots();
|
||||
});
|
||||
@ -119,7 +120,7 @@ function restoreRevision(req: Request) {
|
||||
if (revision) {
|
||||
const note = revision.getNote();
|
||||
|
||||
sql.transactional(() => {
|
||||
getSql().transactional(() => {
|
||||
note.saveRevision();
|
||||
|
||||
for (const oldNoteAttachment of note.getAttachments()) {
|
||||
@ -148,7 +149,7 @@ function restoreRevision(req: Request) {
|
||||
}
|
||||
|
||||
function getEditedNotesOnDate(req: Request) {
|
||||
const noteIds = sql.getColumn<string>(/*sql*/`\
|
||||
const noteIds = getSql().getColumn<string>(/*sql*/`\
|
||||
SELECT notes.*
|
||||
FROM notes
|
||||
WHERE noteId IN (
|
||||
@ -13,6 +13,7 @@ import AbstractBeccaEntity from "../becca/entities/abstract_becca_entity";
|
||||
import cloningApiRoute from "./api/cloning";
|
||||
import sqlRoute from "./api/sql";
|
||||
import attributesRoute from "./api/attributes";
|
||||
import revisionsApiRoute from "./api/revisions";
|
||||
|
||||
// TODO: Deduplicate with routes.ts
|
||||
const GET = "get",
|
||||
@ -70,6 +71,15 @@ export function buildSharedApiRoutes(apiRoute: any) {
|
||||
apiRoute(GET, "/api/attribute-names/", attributesRoute.getAttributeNames);
|
||||
apiRoute(GET, "/api/attribute-values/:attributeName", attributesRoute.getValuesForAttribute);
|
||||
|
||||
apiRoute(GET, "/api/notes/:noteId/revisions", revisionsApiRoute.getRevisions);
|
||||
apiRoute(DEL, "/api/notes/:noteId/revisions", revisionsApiRoute.eraseAllRevisions);
|
||||
apiRoute(PST, "/api/revisions/erase-all-excess-revisions", revisionsApiRoute.eraseAllExcessRevisions);
|
||||
apiRoute(GET, "/api/revisions/:revisionId", revisionsApiRoute.getRevision);
|
||||
apiRoute(GET, "/api/revisions/:revisionId/blob", revisionsApiRoute.getRevisionBlob);
|
||||
apiRoute(DEL, "/api/revisions/:revisionId", revisionsApiRoute.eraseRevision);
|
||||
apiRoute(PST, "/api/revisions/:revisionId/restore", revisionsApiRoute.restoreRevision);
|
||||
apiRoute(GET, "/api/edited-notes/:date", revisionsApiRoute.getEditedNotesOnDate);
|
||||
|
||||
apiRoute(PUT, "/api/branches/:branchId/move-to/:parentBranchId", branchesApiRoute.moveBranchToParent);
|
||||
apiRoute(PUT, "/api/branches/:branchId/move-before/:beforeBranchId", branchesApiRoute.moveBranchBeforeNote);
|
||||
apiRoute(PUT, "/api/branches/:branchId/move-after/:afterBranchId", branchesApiRoute.moveBranchAfterNote);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user