Added clear questions api

This commit is contained in:
mrfry 2022-02-21 20:41:46 +01:00
parent a8d4a35eb8
commit f651536354
2 changed files with 83 additions and 3 deletions

View file

@ -1,4 +1,5 @@
import fs from 'fs' import fs from 'fs'
import { fork } from 'child_process'
import logger from '../../../utils/logger' import logger from '../../../utils/logger'
import utils from '../../../utils/utils' import utils from '../../../utils/utils'
@ -600,7 +601,7 @@ function setup(data: SubmoduleData): any {
if (!req.body.questions) { if (!req.body.questions) {
res.json({ res.json({
message: `ask something! { question:'' ,subject:'', location:'' }`, message: `ask something! { questions:'' ,subject:'', location:'' }`,
result: [], result: [],
recievedData: JSON.stringify(req.body), recievedData: JSON.stringify(req.body),
success: false, success: false,
@ -1006,6 +1007,57 @@ function setup(data: SubmoduleData): any {
}) })
}) })
let questionCleaner = null
app.get('/clearQuestions', (req: Request, res) => {
// TODO: dont allow multiple instances
// TODO: get status of it cleaning
logger.LogReq(req)
const user: User = req.session.user
const status: any = req.query.status
if (status) {
if (!questionCleaner) {
res.json({
msg: 'question cleaner not running',
success: false,
})
return
}
questionCleaner.once('message', function (response) {
res.json({
msg: response,
success: true,
})
})
questionCleaner.send({ data: 'asd' })
return
}
if (questionCleaner) {
res.json({
msg: 'question cleaner already running',
success: false,
})
return
}
questionCleaner = fork(
`${process.cwd()}/src/standaloneUtils/rmDuplicates.js`,
['-s', `${process.cwd()}/${questionDbs[0].path}`]
)
questionCleaner.on('exit', function (code) {
console.log('EXIT', code)
questionCleaner = null
})
res.json({
user: user,
success: true,
msg: 'OK',
})
})
return { return {
dailyAction: () => { dailyAction: () => {
backupData(questionDbs) backupData(questionDbs)

View file

@ -41,7 +41,30 @@ const globalLog = './duplicateRemovingLog/log'
utils.CreatePath(logPath) utils.CreatePath(logPath)
utils.WriteFile('', globalLog) utils.WriteFile('', globalLog)
const params = process.argv.splice(2) // ----------------------------------------------
let currentMaxIndex = -1
let currentIndex = -1
process.on('message', function () {
process.send({
currentMaxIndex: currentMaxIndex,
currentIndex: currentIndex,
})
})
// ----------------------------------------------
let params = process.argv.splice(2)
let silenced = false
if (params.includes('-s')) {
silenced = true
}
params = params.filter((x) => {
return !x.startsWith('-')
})
console.log(params)
if (params.length === 0) {
console.log('At least 1 parameter required (path to DB)')
process.exit(1)
}
const pathA = params[0] const pathA = params[0]
const pathB = params[1] const pathB = params[1]
@ -268,6 +291,7 @@ function difference({ dbA, dbB }) {
iterateSubjects(dbA, () => { iterateSubjects(dbA, () => {
dbLength++ dbLength++
}) })
currentMaxIndex = dbLength
const getResultDbLength = () => { const getResultDbLength = () => {
let resultDbLength = 0 let resultDbLength = 0
@ -303,6 +327,7 @@ function difference({ dbA, dbB }) {
printProgressBar(processedQuestions, dbLength) printProgressBar(processedQuestions, dbLength)
processedQuestions++ processedQuestions++
currentIndex = processedQuestions
const res = hasRequiredPercent(searchRes, minpercent) const res = hasRequiredPercent(searchRes, minpercent)
@ -408,6 +433,7 @@ function hr() {
function log(text) { function log(text) {
utils.AppendToFile(text, globalLog) utils.AppendToFile(text, globalLog)
if (silenced) return
if (process.stdout.isTTY) { if (process.stdout.isTTY) {
process.stdout.clearLine() process.stdout.clearLine()
process.stdout.cursorTo(0) process.stdout.cursorTo(0)
@ -431,7 +457,7 @@ function writeInSameLine(text, returnToLineStart) {
} }
function printProgressBar(current, total) { function printProgressBar(current, total) {
if (!process.stdout.isTTY) { if (!process.stdout.isTTY || silenced) {
return return
} }
const width = process.stdout.columns - 30 const width = process.stdout.columns - 30
@ -462,3 +488,5 @@ function printProgressBar(current, total) {
function C(color) { function C(color) {
return logger.C(color) return logger.C(color)
} }
process.exit()