63 lines
1.8 KiB
JavaScript
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}`
|
|
}
|