const db = require('./RedisClient')

const BlacklistSet = 'blacklisted-packages'

function addPackage(packageName) {
  return new Promise((resolve, reject) => {
    db.sadd(BlacklistSet, packageName, (error, value) => {
      if (error) {
        reject(error)
      } else {
        resolve(value === 1)
      }
    })
  })
}

function removePackage(packageName) {
  return new Promise((resolve, reject) => {
    db.srem(BlacklistSet, packageName, (error, value) => {
      if (error) {
        reject(error)
      } else {
        resolve(value === 1)
      }
    })
  })
}

function removeAllPackages() {
  return new Promise((resolve, reject) => {
    db.del(BlacklistSet, error => {
      if (error) {
        reject(error)
      } else {
        resolve()
      }
    })
  })
}

function getPackages() {
  return new Promise((resolve, reject) => {
    db.smembers(BlacklistSet, (error, value) => {
      if (error) {
        reject(error)
      } else {
        resolve(value)
      }
    })
  })
}

function includesPackage(packageName) {
  return new Promise((resolve, reject) => {
    db.sismember(BlacklistSet, packageName, (error, value) => {
      if (error) {
        reject(error)
      } else {
        resolve(value === 1)
      }
    })
  })
}

module.exports = {
  addPackage,
  removePackage,
  removeAllPackages,
  getPackages,
  includesPackage
}