chore(core): port sql route

This commit is contained in:
Elian Doran 2026-02-09 18:38:51 +02:00
parent 88add55ebc
commit dcfc1119eb
No known key found for this signature in database
3 changed files with 10 additions and 7 deletions

View File

@ -11,9 +11,9 @@ import etapiBackupRoute from "../etapi/backup.js";
import etapiBranchRoutes from "../etapi/branches.js";
import etapiMetricsRoute from "../etapi/metrics.js";
import etapiNoteRoutes from "../etapi/notes.js";
import etapiRevisionsRoutes from "../etapi/revisions.js";
import etapiSpecRoute from "../etapi/spec.js";
import etapiSpecialNoteRoutes from "../etapi/special_notes.js";
import etapiRevisionsRoutes from "../etapi/revisions.js";
import auth from "../services/auth.js";
import openID from '../services/open_id.js';
import { isElectron } from "../services/utils.js";
@ -49,7 +49,6 @@ import senderRoute from "./api/sender.js";
import setupApiRoute from "./api/setup.js";
import similarNotesRoute from "./api/similar_notes.js";
import specialNotesRoute from "./api/special_notes.js";
import sqlRoute from "./api/sql.js";
import syncApiRoute from "./api/sync.js";
import systemInfoRoute from "./api/system_info.js";
import totp from './api/totp.js';
@ -246,8 +245,6 @@ function register(app: express.Application) {
apiRoute(PST, "/api/special-notes/launchers/:parentNoteId/:launcherType", specialNotesRoute.createLauncher);
apiRoute(PUT, "/api/special-notes/api-script-launcher", specialNotesRoute.createOrUpdateScriptLauncherFromApi);
apiRoute(GET, "/api/sql/schema", sqlRoute.getSchema);
apiRoute(PST, "/api/sql/execute/:noteId", sqlRoute.execute);
asyncRoute(PST, "/api/database/anonymize/:type", [auth.checkApiAuthOrElectron, csrfMiddleware], databaseRoute.anonymize, apiResultHandler);
apiRoute(GET, "/api/database/anonymized-databases", databaseRoute.getExistingAnonymizedDatabases);

View File

@ -1,9 +1,9 @@
import { ValidationError } from "@triliumnext/core";
import type { Request } from "express";
import becca from "../../becca/becca.js";
import sql from "../../services/sql.js";
import { safeExtractMessageAndStackFromError } from "../../services/utils.js";
import { getSql } from "../../services/sql/index.js";
import { ValidationError } from "../../errors.js";
import { safeExtractMessageAndStackFromError } from "../../services/utils/index.js";
interface Table {
name: string;
@ -11,6 +11,7 @@ interface Table {
}
function getSchema() {
const sql = getSql();
const tableNames = sql.getColumn<string>(/*sql*/`SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name`);
const tables: Table[] = [];
@ -25,6 +26,7 @@ function getSchema() {
}
function execute(req: Request) {
const sql = getSql();
const note = becca.getNoteOrThrow(req.params.noteId);
const content = note.getContent();

View File

@ -11,6 +11,7 @@ import appInfoRoute from "./api/app_info";
import statsRoute from "./api/stats";
import AbstractBeccaEntity from "../becca/entities/abstract_becca_entity";
import cloningApiRoute from "./api/cloning";
import sqlRoute from "./api/sql";
// TODO: Deduplicate with routes.ts
const GET = "get",
@ -81,6 +82,9 @@ export function buildSharedApiRoutes(apiRoute: any) {
apiRoute(GET, "/api/stats/note-size/:noteId", statsRoute.getNoteSize);
apiRoute(GET, "/api/stats/subtree-size/:noteId", statsRoute.getSubtreeSize);
apiRoute(GET, "/api/sql/schema", sqlRoute.getSchema);
apiRoute(PST, "/api/sql/execute/:noteId", sqlRoute.execute);
apiRoute(GET, "/api/app-info", appInfoRoute.getAppInfo);
apiRoute(GET, "/api/other/icon-usage", otherRoute.getIconUsage);
}