class Cache {
	async getItem(name) {
		let output = null;
		try {
			const storage = await Cache.storage();
			output = await storage.getItem(name);
		} catch (error) {
			console.info(error);
			// Defaults to returning null
		}
		return output;
	}

	async setItem(name, value, ttl = null) {
		try {
			const storage = await Cache.storage();
			const options = {};
			if (ttl !== null) options.ttl = ttl;
			await storage.setItem(name, value, options);
		} catch (error) {
			// Defaults to not saving to cache
		}
	}
}

Cache.storage = async function() {
	if (Cache.storage_) return Cache.storage_;
	Cache.storage_ = require('node-persist');
	await Cache.storage_.init({ dir: `${require('os').tmpdir()}/joplin-cache`, ttl: 1000 * 60 });
	return Cache.storage_;
};

module.exports = Cache;