Files
term_portal/express/models/helpers/extraction.js
T
2022-12-07 04:43:36 +01:00

63 lines
1.8 KiB
JavaScript

const { readdir, stat } = require('fs/promises')
const { partial } = require('filesize')
const { DATA_FILES_PATH } = require('../../config/settings')
const formatFileSize = partial({ separator: ',' })
exports.deserialize = {
extraction(extraction) {
const deserializedExtraction = {
id: extraction.id,
name: extraction.name,
status: extraction.status,
corpusId: extraction.corpus_id,
timeStarted: extraction.time_started,
timeFinished: extraction.time_finished,
ossParams: extraction.oss_params
}
return deserializedExtraction
}
}
exports.getExtractionFilesPath = getExtractionFilesPath
exports.getDocumentsPath = extractionId => {
return `${getExtractionFilesPath(extractionId)}/documents`
}
exports.getStopTermsPath = extractionId => {
return `${getExtractionFilesPath(extractionId)}/stop_terms`
}
exports.getConllusPath = extractionId => {
return `${getExtractionFilesPath(extractionId)}/conllu`
}
exports.getTermCandidatesPath = extractionId => {
return `${getExtractionFilesPath(extractionId)}/term_candidates.json`
}
exports.getFileNamesInFolder = async folderPath => {
const filenames = await readdir(folderPath)
return filenames
}
exports.getFileStatsInFolder = async folderPath => {
const filenames = await readdir(folderPath)
const fileStats = await Promise.all(
filenames.map(async filename => {
const filePath = `${folderPath}/${filename}`
const { mtimeMs: timeModified, size } = await stat(filePath)
const sizeHumanReadable = formatFileSize(size)
const fileStats = { filename, size: sizeHumanReadable, timeModified }
return fileStats
})
)
return fileStats
}
function getExtractionFilesPath(extractionId) {
return `${DATA_FILES_PATH}/extraction/${extractionId}`
}