This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues/pull-requests.
FileStore/app.js

55 lines
1.5 KiB
JavaScript

const fs=require('fs')
const path=require('path')
const promisify=require('util').promisify
const dbprovider=require('./DatabaseProvider')
const Config=require('./ConfigReader')
const logger=require('./SimpleLogger')()
logger.log("[Start] Initializing database provider...")
let db=null
try {
let provider=`./database_${Config.db_engine.toLowerCase()}`
logger.log(`[Working] Provider resolved to ${provider}`)
let providerClass=require(provider)
db=new dbprovider(new providerClass)
} catch (e) {
logger.log("[Fatal] Failed to create db provider.")
logger.log(e.toString())
return
}
logger.log("[Done] Database provider Initialized.")
async function ScanSingle(retArr,filepath) {
let stat=await promisify(fs.stat)(filepath)
if(stat.isDirectory()) {
return ScanDir(retArr,filepath)
} else if(stat.isFile()) {
retArr.push({path:filepath,mtime:stat.mtime,size:stat.size})
}
}
async function ScanDir(retArr,dir) {
logger.log(`Scanning ${dir}...`)
let files=await promisify(fs.readdir)(dir)
let pArr=new Array
files.forEach((file)=>{
pArr.push(ScanSingle(retArr,path.join(dir,file)))
})
return Promise.all(pArr)
}
async function main() {
logger.log(`[Start] About to scan ${Config.scan_path.length} dir${Config.scan_path.length>1?"s":""}...`)
let retArr=new Array
let pArr=new Array
Config.scan_path.forEach((dir)=>{
pArr.push(ScanDir(retArr,dir))
})
await Promise.all(pArr)
logger.log(`[Done] Scan Finished. ${retArr.length} results in set.`)
}
main()