mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
mergeDuplicateSubjectsAndRmDuplicates.sh
This commit is contained in:
parent
2c031e4d05
commit
c8653805fb
2 changed files with 63 additions and 28 deletions
|
@ -1,52 +1,59 @@
|
|||
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const arg = process.argv[2]
|
||||
const files = fs.readdirSync(arg)
|
||||
const resdir = './res'
|
||||
const filesDirPath = process.argv[2]
|
||||
const resdir = process.argv[3]
|
||||
const files = fs.readdirSync(filesDirPath)
|
||||
|
||||
let duplicateSubjects = 0
|
||||
let questionsInDuplicateSubjects = 0
|
||||
|
||||
if (!fs.existsSync(resdir)) {
|
||||
fs.mkdirSync(resdir)
|
||||
}
|
||||
|
||||
function merge(x, y) {
|
||||
return {
|
||||
Name: x.Name,
|
||||
Questions: [...x.Questions, ...y.Questions],
|
||||
}
|
||||
return {
|
||||
Name: x.Name,
|
||||
Questions: [...x.Questions, ...y.Questions],
|
||||
}
|
||||
}
|
||||
|
||||
const fixQdb = (dbname) => {
|
||||
console.log(dbname)
|
||||
console.log()
|
||||
const file = JSON.parse(fs.readFileSync(path.join(arg + dbname), 'utf8'))
|
||||
console.log(dbname)
|
||||
console.log()
|
||||
const file = JSON.parse(
|
||||
fs.readFileSync(path.join(filesDirPath + dbname), 'utf8')
|
||||
)
|
||||
|
||||
const result = {}
|
||||
const result = {}
|
||||
|
||||
file.forEach((x) => {
|
||||
if (result[x.Name]) {
|
||||
console.log(x.Name, ' is duplicate!')
|
||||
duplicateSubjects += 1
|
||||
result[x.Name] = merge(result[x.Name], x)
|
||||
questionsInDuplicateSubjects += result[x.Name].Questions.length
|
||||
} else {
|
||||
result[x.Name] = x
|
||||
}
|
||||
})
|
||||
file.forEach((x) => {
|
||||
if (result[x.Name]) {
|
||||
console.log(x.Name, ' is duplicate!')
|
||||
duplicateSubjects += 1
|
||||
result[x.Name] = merge(result[x.Name], x)
|
||||
questionsInDuplicateSubjects += result[x.Name].Questions.length
|
||||
} else {
|
||||
result[x.Name] = x
|
||||
}
|
||||
})
|
||||
|
||||
const newFile = Object.values(result)
|
||||
const newFile = Object.values(result)
|
||||
|
||||
fs.writeFileSync(path.join(resdir, dbname), JSON.stringify(newFile))
|
||||
fs.writeFileSync(path.join(resdir, dbname), JSON.stringify(newFile))
|
||||
}
|
||||
|
||||
if (fs.existsSync(resdir)) {
|
||||
fs.rmSync(resdir, { recursive: true })
|
||||
fs.mkdirSync(resdir)
|
||||
fs.rmSync(resdir, { recursive: true })
|
||||
fs.mkdirSync(resdir)
|
||||
}
|
||||
|
||||
files.forEach((x) => {
|
||||
if (x.includes('json')) {
|
||||
fixQdb(x)
|
||||
}
|
||||
if (x.includes('json')) {
|
||||
fixQdb(x)
|
||||
}
|
||||
})
|
||||
|
||||
console.log('Done! Found duplicates:', duplicateSubjects)
|
||||
|
|
28
src/standaloneUtils/mergeDuplicateSubjectsAndRmDuplicates.sh
Executable file
28
src/standaloneUtils/mergeDuplicateSubjectsAndRmDuplicates.sh
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/bin/bash
|
||||
|
||||
OUTDIR="/tmp/res/"
|
||||
|
||||
echo "> pwd ${PWD}"
|
||||
|
||||
mkdir -p OUTDIR
|
||||
node ./src/standaloneUtils/duplicateSubjectsInQdbFix.js ./public/questionDbs/ "${OUTDIR}"
|
||||
|
||||
echo -e "\n\n\n"
|
||||
find "${OUTDIR}" -type f | while IFS= read -r qdb; do
|
||||
node \
|
||||
./src/standaloneUtils/rmDuplicates.js \
|
||||
"${qdb}"
|
||||
|
||||
echo -e "\n\n\n"
|
||||
done
|
||||
|
||||
rm -v ${OUTDIR}*.json || exit
|
||||
|
||||
mv -v ./*.res "${OUTDIR}" || exit
|
||||
|
||||
find "${OUTDIR}" -type f | while IFS= read -r qdb; do
|
||||
newName=$(echo "${qdb}" | rev | cut -d '.' -f 2- | rev)
|
||||
mv -v "${qdb}" "${newName}"
|
||||
done
|
||||
|
||||
echo "Done!"
|
Loading…
Add table
Add a link
Reference in a new issue