Advertisement
braveheart1989

Storage

May 21st, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let storage = {}
  2. let fs = require('fs')
  3. const filePath = './storage.json'
  4. let checkIfKeyString = (key) => {
  5.   if (typeof key !== 'string') {
  6.     throw new Error('key is not a string!')
  7.   }
  8. }
  9.  
  10. let checkIfKeyExist = (key, storage) => {
  11.   if (storage.hasOwnProperty(key)) {
  12.     throw new Error('Key already exist!')
  13.   }
  14. }
  15.  
  16. let checkIfKeyNotExist = (key, storage) => {
  17.   if (!storage.hasOwnProperty(key)) {
  18.     throw new Error('Key does not exist!')
  19.   }
  20. }
  21.  
  22. let put = (key, value) => {
  23.   checkIfKeyString(key)
  24.   checkIfKeyExist(key, storage)
  25.   storage[key] = value
  26.   return storage
  27. }
  28.  
  29. let get = (key) => {
  30.   checkIfKeyString(key)
  31.   checkIfKeyNotExist(key, storage)
  32.   return storage[key]
  33. }
  34.  
  35. let update = (key, value) => {
  36.   checkIfKeyString(key)
  37.   checkIfKeyNotExist(key, storage)
  38.   storage[key] = value
  39.   return storage
  40. }
  41.  
  42. let deleteItem = (key) => {
  43.   checkIfKeyString(key)
  44.   checkIfKeyNotExist(key, storage)
  45.   delete storage[key]
  46.   return storage
  47. }
  48.  
  49. let clear = () => {
  50.   storage = {}
  51.   return storage
  52. }
  53.  
  54. // This is with callback
  55. // let save = (callback) => {
  56. //   fs.writeFile(filePath, JSON.stringify(storage, null, 2), (err) => {
  57. //     if (err) console.log(err)
  58. //     callback()
  59. //   })
  60. // }
  61.  
  62. // let load = (callback) => { // приемаме callback като параметър на функцията и когато е изпълнен промиса викаме callback-a
  63. //   fs.readFile(filePath, 'utf8', (err, data) => {
  64. //     if (err) throw err
  65. //     callback(data)
  66. //   })
  67. // }
  68.  
  69. // This is with Promises
  70. let save = () => {
  71.   return new Promise((resolve, reject) => {
  72.     fs.writeFile(filePath, JSON.stringify(storage, null, 2), (err) => {
  73.       if (err) {
  74.         reject(err)
  75.         return
  76.       }
  77.       resolve()
  78.     })
  79.   })
  80. }
  81.  
  82. let load = () => {
  83.   return new Promise((resolve, reject) => {
  84.     fs.readFile(filePath, 'utf8', (err, data) => {
  85.       if (err) {
  86.         reject(err)
  87.         return
  88.       }
  89.       resolve(data)
  90.     })
  91.   })
  92. }
  93.  
  94. let getAll = () => {
  95.   return storage
  96. }
  97.  
  98. module.exports = {
  99.   put,
  100.   get,
  101.   getAll,
  102.   update,
  103.   delete: deleteItem,
  104.   clear,
  105.   save,
  106.   load
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement