Saving questions

This commit is contained in:
mrfry 2020-12-25 18:01:45 +01:00
parent 8d2bc709f3
commit 2998239344
3 changed files with 86 additions and 27 deletions

View file

@ -70,7 +70,6 @@ const todosFile = 'data/todos.json'
const userScriptFile = 'submodules/moodle-test-userscript/stable.user.js'
const rootRedirectToFile = 'data/apiRootRedirectTo'
const recievedQuestionFile = 'stats/recievedQuestions'
const dbsFile = 'data/dbs.json'
// other constants
const line = '====================================================' // lol
@ -94,6 +93,10 @@ function GetApp(): ModuleType {
}
// files in public dirs
const questionDbsDir = publicDir + 'questionDbs'
const dbsFile = publicDir + 'questionDbs.json'
const savedQuestionsFile = publicDir + 'savedQuestions.json'
const savedQuestionsDir = publicDir + 'savedQuestions'
const recivedFiles = publicDir + 'recivedfiles'
const uloadFiles = publicDir + 'f'
const dataFiles: Array<DataFile> = utils.ReadJSON(dbsFile)
@ -144,7 +147,7 @@ function GetApp(): ModuleType {
})
)
const questionDbs = loadJSON(dataFiles, publicDir)
const questionDbs = loadJSON(dataFiles, questionDbsDir)
let version = ''
let rootRedirectURL = ''
let motd = ''
@ -782,20 +785,40 @@ function GetApp(): ModuleType {
})
app.get('/allqr.txt', function(req: Request, res: any) {
// TODO: if dataId param exists download only that db
res.set('Content-Type', 'text/plain')
const stringifiedData = questionDbs.map((qdb) => {
let result = ''
result += '\n' + line
result += ` Questions in ${qdb.name}: `
result += line + '\n'
result += dataToString(qdb.data)
result += '\n' + line + line + '\n'
return result
})
res.send(stringifiedData.join('\n\n'))
res.end()
logger.LogReq(req)
const db: any = req.query.db
let stringifiedData = ''
if (db) {
const requestedDb = questionDbs.find((qdb) => {
return qdb.name === db
})
if (!requestedDb) {
res.end(`No such db ${db}`)
return
}
stringifiedData = '\n' + line
stringifiedData += ` Questions in ${requestedDb.name}: `
stringifiedData += line + '\n'
stringifiedData += dataToString(requestedDb.data)
stringifiedData += '\n' + line + line + '\n'
} else {
res.set('Content-Type', 'text/plain')
stringifiedData = questionDbs
.map((qdb) => {
let result = ''
result += '\n' + line
result += ` Questions in ${qdb.name}: `
result += line + '\n'
result += dataToString(qdb.data)
result += '\n' + line + line + '\n'
return result
})
.join('\n\n')
}
res.end(stringifiedData)
})
// -------------------------------------------------------------------------------------------
@ -1026,7 +1049,32 @@ function GetApp(): ModuleType {
}
}
function saveQuestion(questions, subj, location, userid) {
const toWrite = {
questions: questions,
subj: subj,
userid: userid,
location: location,
date: new Date(),
}
const fname = `${utils.GetDateString()}_${userid}_${location}.json`
const savedQuestions = utils.ReadJSON(savedQuestionsFile)
savedQuestions.push({
fname: fname,
subj: subj,
userid: userid,
location: location,
date: new Date(),
})
utils.WriteFile(JSON.stringify(savedQuestions), savedQuestionsFile)
utils.WriteFile(JSON.stringify(toWrite), `${savedQuestionsDir}/${fname}`)
}
app.post('/ask', function(req: Request, res) {
const user: User = req.session.user
if (!req.body.questions) {
res.json({
message:
@ -1038,6 +1086,7 @@ function GetApp(): ModuleType {
return
}
const subj: any = req.body.subj || ''
const location = req.body.location.split('/')[2]
writeAskData(req.body)
@ -1046,14 +1095,24 @@ function GetApp(): ModuleType {
})
Promise.all(resultPromises).then((results) => {
res.json(
results.map((result: any) => {
return {
answers: result.result,
question: result.question,
}
})
)
const response = results.map((result: any) => {
return {
answers: result.result,
question: result.question,
}
})
res.json(response)
const saveableQuestions = response.reduce((acc, res) => {
// TODO
// if (res.answers.length === 0) {
// acc.push(res.question)
// }
acc.push(res.question)
return acc
}, [])
saveQuestion(saveableQuestions, subj, location, user.id)
})
})