Simple DB caching manager
npm i asset-js --save
Usage:
const asset = require("asset-js")(gethandler, sethandler, defaults, deleteHandler, autosave)
let myasset = await asset("asset1", defaultValue?, persistent /*persistent = available forever, never uncached, useful for assets used regularly like a config file*/)
myasset.someproperty = "a"
//gets saved automatically after a while
//or save everything manually:
asset.save()
Example:
const fs = require("fs")
function default(assetID){ //Gets called if a certain asset is not found (ie a default value)
if(assetID.startsWith("user/")){ //if assetID is in user folder
return { //return default userdata
username:"",
timeCreated:Date.now()
}
}else return {} //otherwise, return an empty object
}
function get(name){
return JSON.parse(fs.readFileSync(name))
}
function set(name, data){
fs.writeFileSync(name, JSON.strinify(data))
}
const asset = require("asset-js")(get, set, default, fs.unlinkSync, 900000 /*autosave every 900000ms, or 15mins*/)
var john = asset("user/john")
john.username = "johnny_english"
var configuration = asset("config.json", {} /*default value: function default() is ignored in this case*/)
configuration.allowRetards = false
asset.save() //optional because we have autosave
Presets
You can load custom pre-made wrapping functions (presets) to save yourself some time, for example, for firebase: (use asset-js-firestore
)
const asset = require("asset-js")(
require("asset-js-firestore")(collectionName, credentials, default)
//connnects to FIRESTORE!
)
Typically, assetdb presets on npm are named something like asset-js-XXX
, if you wish to make one, please use that format, as it will help users determine what the preset is made for.