const jetpack = require('fs-jetpack')
const path = require('path')
const config = require('./utils/ConfigManager')

const self = {}

self.uploads = path.resolve(config.uploads.folder)
self.chunks = config.uploads.chunksFolder
  ? path.resolve(config.uploads.chunksFolder)
  : path.join(self.uploads, 'chunks')
self.thumbs = path.join(self.uploads, 'thumbs')
self.zips = path.join(self.uploads, 'zips')

self.thumbPlaceholder = path.resolve(config.uploads.generateThumbs.placeholder || 'public/images/unavailable.png')

self.logs = path.resolve(config.logsFolder)

self.customPages = path.resolve('pages/custom')
self.dist = process.env.NODE_ENV === 'development'
  ? path.resolve('dist-dev')
  : path.resolve('dist')
self.public = path.resolve('public')

self.errorRoot = path.resolve(config.errorPages.rootDir)

const verify = [
  self.uploads,
  {
    path: self.chunks,
    criteria: { empty: true }
  },
  self.thumbs,
  self.zips,
  self.logs,
  self.customPages
]

if (['better-sqlite3', 'sqlite3'].includes(config.database.client)) {
  verify.unshift(path.resolve('database'))
}

self.initSync = () => {
  // Check & create directories (synchronous)
  for (const obj of verify) {
    if (typeof obj === 'object') {
      jetpack.dir(obj.path, obj.criteria)
    } else {
      jetpack.dir(obj)
    }
  }
}

module.exports = self