From 82f5553980da763fdbc1483bd5afcec09f77d124 Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Fri, 5 Apr 2024 20:26:45 +0300 Subject: [PATCH] server-ts: Convert routes/api/autocomplete --- src/becca/becca-interface.ts | 2 +- .../api/{autocomplete.js => autocomplete.ts} | 27 +++++++++++-------- src/routes/routes.js | 2 +- 3 files changed, 18 insertions(+), 13 deletions(-) rename src/routes/api/{autocomplete.js => autocomplete.ts} (66%) diff --git a/src/becca/becca-interface.ts b/src/becca/becca-interface.ts index 29c2d080e..48a096eda 100644 --- a/src/becca/becca-interface.ts +++ b/src/becca/becca-interface.ts @@ -242,7 +242,7 @@ export default class Becca { return (this as any)[camelCaseEntityName][entityId]; } - getRecentNotesFromQuery(query: string, params = []): BRecentNote[] { + getRecentNotesFromQuery(query: string, params: string[] = []): BRecentNote[] { const rows = sql.getRows(query, params); const BRecentNote = require('./entities/brecent_note'); // avoiding circular dependency problems diff --git a/src/routes/api/autocomplete.js b/src/routes/api/autocomplete.ts similarity index 66% rename from src/routes/api/autocomplete.js rename to src/routes/api/autocomplete.ts index 9ed36f89e..0aaa3f537 100644 --- a/src/routes/api/autocomplete.js +++ b/src/routes/api/autocomplete.ts @@ -1,21 +1,26 @@ "use strict"; -const beccaService = require('../../becca/becca_service'); -const searchService = require('../../services/search/services/search'); -const log = require('../../services/log'); -const utils = require('../../services/utils'); -const cls = require('../../services/cls'); -const becca = require('../../becca/becca'); +import beccaService = require('../../becca/becca_service'); +import searchService = require('../../services/search/services/search'); +import log = require('../../services/log'); +import utils = require('../../services/utils'); +import cls = require('../../services/cls'); +import becca = require('../../becca/becca'); +import { Request } from 'express'; +import ValidationError = require('../../errors/validation_error'); -function getAutocomplete(req) { - const query = req.query.query.trim(); +function getAutocomplete(req: Request) { + if (typeof req.query.query !== "string") { + throw new ValidationError("Invalid query data type."); + } + const query = (req.query.query || "").trim(); const activeNoteId = req.query.activeNoteId || 'none'; let results; const timestampStarted = Date.now(); - if (query.length === 0) { + if (query.length === 0 && typeof activeNoteId === "string") { results = getRecentNotes(activeNoteId); } else { @@ -31,7 +36,7 @@ function getAutocomplete(req) { return results; } -function getRecentNotes(activeNoteId) { +function getRecentNotes(activeNoteId: string) { let extraCondition = ''; const params = [activeNoteId]; @@ -70,6 +75,6 @@ function getRecentNotes(activeNoteId) { }); } -module.exports = { +export = { getAutocomplete }; diff --git a/src/routes/routes.js b/src/routes/routes.js index 269f2a6ae..27465e442 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -26,7 +26,7 @@ const treeApiRoute = require('./api/tree.js'); const notesApiRoute = require('./api/notes.js'); const branchesApiRoute = require('./api/branches.js'); const attachmentsApiRoute = require('./api/attachments'); -const autocompleteApiRoute = require('./api/autocomplete.js'); +const autocompleteApiRoute = require('./api/autocomplete'); const cloningApiRoute = require('./api/cloning'); const revisionsApiRoute = require('./api/revisions'); const recentChangesApiRoute = require('./api/recent_changes.js');