Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let storage = {}
- let fs = require('fs')
- const filePath = './storage.json'
- let checkIfKeyString = (key) => {
- if (typeof key !== 'string') {
- throw new Error('key is not a string!')
- }
- }
- let checkIfKeyExist = (key, storage) => {
- if (storage.hasOwnProperty(key)) {
- throw new Error('Key already exist!')
- }
- }
- let checkIfKeyNotExist = (key, storage) => {
- if (!storage.hasOwnProperty(key)) {
- throw new Error('Key does not exist!')
- }
- }
- let put = (key, value) => {
- checkIfKeyString(key)
- checkIfKeyExist(key, storage)
- storage[key] = value
- return storage
- }
- let get = (key) => {
- checkIfKeyString(key)
- checkIfKeyNotExist(key, storage)
- return storage[key]
- }
- let update = (key, value) => {
- checkIfKeyString(key)
- checkIfKeyNotExist(key, storage)
- storage[key] = value
- return storage
- }
- let deleteItem = (key) => {
- checkIfKeyString(key)
- checkIfKeyNotExist(key, storage)
- delete storage[key]
- return storage
- }
- let clear = () => {
- storage = {}
- return storage
- }
- // This is with callback
- // let save = (callback) => {
- // fs.writeFile(filePath, JSON.stringify(storage, null, 2), (err) => {
- // if (err) console.log(err)
- // callback()
- // })
- // }
- // let load = (callback) => { // приемаме callback като параметър на функцията и когато е изпълнен промиса викаме callback-a
- // fs.readFile(filePath, 'utf8', (err, data) => {
- // if (err) throw err
- // callback(data)
- // })
- // }
- // This is with Promises
- let save = () => {
- return new Promise((resolve, reject) => {
- fs.writeFile(filePath, JSON.stringify(storage, null, 2), (err) => {
- if (err) {
- reject(err)
- return
- }
- resolve()
- })
- })
- }
- let load = () => {
- return new Promise((resolve, reject) => {
- fs.readFile(filePath, 'utf8', (err, data) => {
- if (err) {
- reject(err)
- return
- }
- resolve(data)
- })
- })
- }
- let getAll = () => {
- return storage
- }
- module.exports = {
- put,
- get,
- getAll,
- update,
- delete: deleteItem,
- clear,
- save,
- load
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement