mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Moved qminingapi submodule, added pagination to forum posts
This commit is contained in:
parent
7010d5e8ba
commit
cdd01b70de
3 changed files with 71 additions and 28 deletions
|
@ -84,7 +84,7 @@ function addReaction(obj, path, { reaction, isDelete, uid }) {
|
|||
function getForumData(
|
||||
forumName: string,
|
||||
forumDir: string
|
||||
): { forumPath: string; contentFilePath: string; content: any } {
|
||||
): { forumPath: string; contentFilePath: string; contents: any } {
|
||||
const safeForumName = forumName.replace(/\./g, '').replace(/\/+/g, '')
|
||||
const forumPath = forumDir + '/' + safeForumName
|
||||
const contentFilePath = forumPath + '/' + forumContentsFileName
|
||||
|
@ -126,7 +126,6 @@ function setup(data: SubmoduleData): void {
|
|||
|
||||
app.get('/forumEntries', (req: Request, res) => {
|
||||
logger.LogReq(req)
|
||||
|
||||
const forumName: any = req.query.forumName
|
||||
if (!forumName) {
|
||||
res.json({
|
||||
|
@ -138,9 +137,41 @@ function setup(data: SubmoduleData): void {
|
|||
|
||||
const { forumPath, contents } = getForumData(forumName, forumDir)
|
||||
|
||||
const from = req.query.from || Object.keys(contents).reverse()[0]
|
||||
const count = parseInt(req.query.count ? req.query.count.toString() : '5')
|
||||
const getContent = req.query.getContent
|
||||
|
||||
let entries = {}
|
||||
let i = 0
|
||||
let passed = false
|
||||
let lastKey = undefined
|
||||
Object.keys(contents)
|
||||
.reverse()
|
||||
.some((key) => {
|
||||
const entry = getContent
|
||||
? utils.ReadJSON(forumPath + '/' + key)
|
||||
: contents[key]
|
||||
if (key === from) {
|
||||
passed = true
|
||||
}
|
||||
if (i < count && passed) {
|
||||
entries = {
|
||||
...entries,
|
||||
[key]: entry,
|
||||
}
|
||||
}
|
||||
if (i === count) {
|
||||
lastKey = key
|
||||
return true
|
||||
}
|
||||
if (passed) {
|
||||
i++
|
||||
}
|
||||
})
|
||||
|
||||
res.json({
|
||||
entriesPath: forumPath.replace(publicDir, ''),
|
||||
contents: contents,
|
||||
entries: entries,
|
||||
nextKey: lastKey,
|
||||
})
|
||||
})
|
||||
|
||||
|
@ -148,7 +179,7 @@ function setup(data: SubmoduleData): void {
|
|||
logger.LogReq(req)
|
||||
|
||||
const { title, content } = req.body
|
||||
const forumName: any = req.query.forumName
|
||||
const forumName: any = req.body.forumName
|
||||
if (!forumName) {
|
||||
res.json({
|
||||
success: false,
|
||||
|
@ -156,7 +187,10 @@ function setup(data: SubmoduleData): void {
|
|||
})
|
||||
return
|
||||
}
|
||||
const { contents } = getForumData(forumName, forumDir)
|
||||
const { forumPath, contents, contentFilePath } = getForumData(
|
||||
forumName,
|
||||
forumDir
|
||||
)
|
||||
const user: User = req.session.user
|
||||
const admins: any = utils.FileExists(adminUsersFile)
|
||||
? utils.ReadJSON(adminUsersFile)
|
||||
|
@ -172,18 +206,23 @@ function setup(data: SubmoduleData): void {
|
|||
}
|
||||
|
||||
contents[newPostKey] = postData
|
||||
utils.WriteFile(JSON.stringify(contents, null, 2), contentFilePath)
|
||||
utils.WriteFile(
|
||||
JSON.stringify({ ...postData, content: content }),
|
||||
newPostKey + '.json'
|
||||
forumPath + '/' + newPostKey
|
||||
)
|
||||
|
||||
res.json({ success: true, newEntry: { ...postData, content: content } })
|
||||
res.json({
|
||||
success: true,
|
||||
newPostKey: newPostKey,
|
||||
newEntry: { ...postData, content: content },
|
||||
})
|
||||
})
|
||||
|
||||
app.post('/rmPost', (req: Request, res) => {
|
||||
logger.LogReq(req)
|
||||
const { postKey } = req.body
|
||||
const forumName: any = req.query.forumName
|
||||
const forumName: any = req.body.forumName
|
||||
if (!forumName) {
|
||||
res.json({
|
||||
success: false,
|
||||
|
@ -198,7 +237,7 @@ function setup(data: SubmoduleData): void {
|
|||
const user: User = req.session.user
|
||||
|
||||
if (contents[postKey] && contents[postKey].user === user.id) {
|
||||
utils.deleteFile(forumPath + '/' + postKey + '.json')
|
||||
utils.deleteFile(forumPath + '/' + postKey)
|
||||
delete contents[postKey]
|
||||
utils.WriteFile(JSON.stringify(contents), contentFilePath)
|
||||
|
||||
|
@ -216,7 +255,7 @@ function setup(data: SubmoduleData): void {
|
|||
app.post('/comment', (req: Request, res) => {
|
||||
logger.LogReq(req)
|
||||
|
||||
const forumName: any = req.query.forumName
|
||||
const forumName: any = req.body.forumName
|
||||
if (!forumName) {
|
||||
res.json({
|
||||
success: false,
|
||||
|
@ -279,13 +318,13 @@ function setup(data: SubmoduleData): void {
|
|||
|
||||
utils.WriteFile(JSON.stringify(postData, null, 2), postPath)
|
||||
utils.WriteFile(JSON.stringify(contents, null, 2), contentFilePath)
|
||||
res.json({ success: true, postData: postData })
|
||||
res.json({ success: true, postKey: postKey, postData: postData })
|
||||
})
|
||||
|
||||
app.post('/react', (req: Request, res) => {
|
||||
logger.LogReq(req)
|
||||
|
||||
const forumName: any = req.query.forumName
|
||||
const forumName: any = req.body.forumName
|
||||
if (!forumName) {
|
||||
res.json({
|
||||
success: false,
|
||||
|
|
|
@ -176,14 +176,8 @@ function searchInDbs(
|
|||
})
|
||||
}
|
||||
|
||||
function getResult(
|
||||
question,
|
||||
subj,
|
||||
recData,
|
||||
recievedData,
|
||||
questionDbs,
|
||||
testUrl?
|
||||
) {
|
||||
function getResult(data) {
|
||||
const { question, subj, recData, recievedData, questionDbs, testUrl } = data
|
||||
return new Promise((resolve) => {
|
||||
const searchIn = getDbIndexesToSearchIn(testUrl, questionDbs, false)
|
||||
|
||||
|
@ -590,7 +584,13 @@ function setup(data: SubmoduleData): any {
|
|||
|
||||
// every question in a different thread
|
||||
const resultPromises = req.body.questions.map((question) => {
|
||||
return getResult(question, subj, null, req.body, testUrl, questionDbs)
|
||||
return getResult({
|
||||
question: question,
|
||||
subj: subj,
|
||||
recData: req.body,
|
||||
testUrl: testUrl,
|
||||
questionDbs: questionDbs,
|
||||
})
|
||||
})
|
||||
|
||||
Promise.all(resultPromises).then((results) => {
|
||||
|
@ -637,11 +637,15 @@ function setup(data: SubmoduleData): any {
|
|||
const subj: any = req.query.subj || ''
|
||||
const question = req.query.q
|
||||
const recData: any = req.query.data
|
||||
getResult(question, subj, recData, req.query, questionDbs).then(
|
||||
(result) => {
|
||||
res.json(result)
|
||||
}
|
||||
)
|
||||
getResult({
|
||||
question: question,
|
||||
subj: subj,
|
||||
recData: recData,
|
||||
recievedData: req.query,
|
||||
questionDbs: questionDbs,
|
||||
}).then((result) => {
|
||||
res.json(result)
|
||||
})
|
||||
} else {
|
||||
logger.DebugLog(`Invalid question`, 'ask', 1)
|
||||
res.json({
|
|
@ -32,7 +32,7 @@ const commonUselessAnswerParts = [
|
|||
/* Percent minus for length difference */
|
||||
const lengthDiffMultiplier = 10
|
||||
/* Minimum ammount to consider that two questions match during answering */
|
||||
const minMatchAmmount = 70
|
||||
const minMatchAmmount = 75
|
||||
const magicNumber = 0.7 // same as minMatchAmmount, but /100
|
||||
/* If all of the results are below this match percent (when only one subject is searched due to
|
||||
* subject name matching) then all subjects are searched for answer */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue