From eed99e6f02bb660b967c6b7fb755c4b24cb0bd27 Mon Sep 17 00:00:00 2001 From: mrfry Date: Sun, 30 Apr 2023 18:54:38 +0200 Subject: [PATCH] ability to download subjects in txt --- src/modules/api/submodules/qminingapi.ts | 26 ++++++++++++++++++++++-- src/utils/qdbUtils.ts | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/modules/api/submodules/qminingapi.ts b/src/modules/api/submodules/qminingapi.ts index 022c009..9671d1e 100644 --- a/src/modules/api/submodules/qminingapi.ts +++ b/src/modules/api/submodules/qminingapi.ts @@ -53,6 +53,7 @@ import { dataToString, getSubjNameWithoutYear, SearchResultQuestion, + subjectToString, } from '../../../utils/qdbUtils' import { paths } from '../../../utils/files' import constants from '../../../constants' @@ -499,11 +500,32 @@ function setup(data: SubmoduleData): Submodule { app.get('/allqr.txt', function (req: Request, res: Response) { logger.LogReq(req) const db: string = req.query.db + const subjectName: string = req.query.subj let stringifiedData = '' res.setHeader('content-type', 'text/plain; charset=utf-8') - if (db) { + if (subjectName) { + const requestedDb = getQuestionDbs().find((qdb) => { + return qdb.name === db + }) + if (!requestedDb) { + res.end(`No such db ${db}`) + return + } + const requestedSubject = requestedDb.data.find((subject) => { + return subject.Name === subjectName + }) + if (!requestedSubject) { + res.end(`No such db ${db}`) + return + } + stringifiedData = '\n' + line + stringifiedData += ` Questions in "${requestedDb.name}"-"${subjectName}": ` + stringifiedData += line + '\n' + stringifiedData += subjectToString(requestedSubject) + stringifiedData += '\n' + line + line + '\n' + } else if (db) { const requestedDb = getQuestionDbs().find((qdb) => { return qdb.name === db }) @@ -514,7 +536,7 @@ function setup(data: SubmoduleData): Submodule { } stringifiedData = '\n' + line - stringifiedData += ` Questions in ${requestedDb.name}: ` + stringifiedData += ` Questions in "${requestedDb.name}": ` stringifiedData += line + '\n' stringifiedData += dataToString(requestedDb.data) stringifiedData += '\n' + line + line + '\n' diff --git a/src/utils/qdbUtils.ts b/src/utils/qdbUtils.ts index fbc7c9c..d63af9d 100644 --- a/src/utils/qdbUtils.ts +++ b/src/utils/qdbUtils.ts @@ -354,7 +354,7 @@ function questionToString(question: Question): string { } } -function subjectToString(subj: Subject): string { +export function subjectToString(subj: Subject): string { const { Questions, Name } = subj const result: string[] = []