| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | 'use strict';const cache = require('./cache');const db = require('./db');const async = require('async');module.exports = {	init: cb => {		db.models.playlist.find({}, (err, playlists) => {			if (!err) {				playlists.forEach((playlist) => {					cache.hset('playlists', playlist._id, cache.schemas.playlist(playlist));				});				cb();			}		});	},	getPlaylist: (_id, cb) => {		async.waterfall([			(next) => {				cache.hget('playlists', _id, next);			},			(playlist, next) => {				if (playlist) return next(true, playlist);				db.models.playlist.findOne({ _id }, next);			},			(playlist, next) => {				if (playlist) {					cache.hset('playlists', _id, playlist);					next(true, playlist);				} else next('Playlist not found');			},		], (err, playlist) => {			if (err && err !== true) return cb(err);			else cb(null, playlist);		});	},	updatePlaylist: (_id, cb) => {		async.waterfall([			(next) => {				db.models.playlist.findOne({ _id }, next);			},			(playlist, next) => {				if (!playlist) return next('Playlist not found');				cache.hset('playlists', _id, playlist, next);			}		], (err, playlist) => {			if (err && err !== true) cb(err);			cb(null, playlist);		});	}};
 |