UNPKG

nodulator

Version:

Complete NodeJS Framework for Restfull APIs

360 lines (233 loc) 12.7 kB
<!DOCTYPE html> <html> <head> <title>Cache.ls</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width, target-densitydpi=160dpi, initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"> <link rel="stylesheet" media="all" href="docco.css" /> </head> <body> <div id="container"> <div id="background"></div> <ul id="jump_to"> <li> <a class="large" href="javascript:void(0);">Jump To &hellip;</a> <a class="small" href="javascript:void(0);">+</a> <div id="jump_wrapper"> <div id="jump_page_wrapper"> <div id="jump_page"> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="ClientDB.html"> ClientDB.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Bus.html"> Bus.ls </a> <a class="source" href="Cache.html"> Cache.ls </a> <a class="source" href="ChangeWatcher.html"> ChangeWatcher.ls </a> <a class="source" href="Debug.html"> Debug.ls </a> <a class="source" href="Wrappers.html"> Wrappers.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Schema.html"> Schema.ls </a> <a class="source" href="NModule.html"> NModule.ls </a> <a class="source" href="AccountResource.html"> AccountResource.ls </a> <a class="source" href="User.html"> User.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator-Angular.html"> Nodulator-Angular.ls </a> <a class="source" href="TaskDirective.html"> TaskDirective.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="TaskService.html"> TaskService.ls </a> <a class="source" href="main.html"> main.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Task.html"> Task.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="DOM.html"> DOM.ls </a> <a class="source" href="View.html"> View.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Nodulator.html"> Nodulator.ls </a> <a class="source" href="Mongo.html"> Mongo.ls </a> <a class="source" href="Mysql.html"> Mysql.ls </a> <a class="source" href="SqlMem.html"> SqlMem.ls </a> <a class="source" href="index.html"> index.ls </a> <a class="source" href="Resource.html"> Resource.ls </a> <a class="source" href="Request.html"> Request.ls </a> <a class="source" href="Route.html"> Route.ls </a> <a class="source" href="index.html"> index.ls </a> </div> </div> </li> </ul> <ul class="sections"> <li id="title"> <div class="annotation"> <h1>Cache.ls</h1> </div> </li> <li id="section-1"> <div class="annotation"> <div class="pilwrap "> <a class="pilcrow" href="#section-1">&#182;</a> </div> </div> <div class="content"><div class='highlight'><pre>redis = <span class="hljs-built_in">require</span> \redis Debug = <span class="hljs-built_in">require</span> <span class="hljs-string">'../Helpers/Debug'</span> debug-cache = <span class="hljs-keyword">new</span> Debug <span class="hljs-string">'N::Resource::Cache'</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">RedisCache</span></span> ({host = <span class="hljs-string">'127.0.0.1'</span>, port = <span class="hljs-number">6379</span>, database = <span class="hljs-number">0</span>}) -&gt; @client = redis.createClient {host, port} @client.select database @client.flushdb() Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> @client.get name, <span class="hljs-function"><span class="hljs-params">(err, reply)</span> -&gt;</span> <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, reply Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -&gt;</span> @client.set name, value, (err, reply) ~&gt; <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? @client.expire(name, <span class="hljs-number">3600</span>); done <span class="hljs-literal">null</span>, reply Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> @client.del name, (err, reply) ~&gt; <span class="hljs-keyword">return</span> done err <span class="hljs-keyword">if</span> err? done <span class="hljs-literal">null</span>, reply Reset: <span class="hljs-function">-&gt;</span> @client.flushdb() <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MemCache</span></span> -&gt; @client = {} Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> <span class="hljs-keyword">if</span> @client[name]? <span class="hljs-keyword">return</span> done <span class="hljs-literal">null</span>, reply done! Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -&gt;</span> @client[name] = value done! Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> <span class="hljs-keyword">delete</span> @client[name] done! Reset: <span class="hljs-function">-&gt;</span> @client = {} <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Cache</span></span> (config) -&gt; <span class="hljs-keyword">if</span> config?.cache?.type <span class="hljs-keyword">is</span> \Redis <span class="hljs-keyword">or</span> config?.cache <span class="hljs-keyword">is</span> \Redis debug-cache.Warn <span class="hljs-string">'Redis cache init'</span> @client = <span class="hljs-keyword">new</span> RedisCache config.cache <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> <span class="hljs-keyword">is</span>-type \String config.cache @client = <span class="hljs-keyword">new</span> RedisCache {} <span class="hljs-keyword">if</span> <span class="hljs-keyword">is</span>-type \String config.cache <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> config?.cache?.type <span class="hljs-keyword">is</span> \Mem <span class="hljs-keyword">or</span> config?.cache <span class="hljs-keyword">is</span> \Mem debug-cache.Warn <span class="hljs-string">'Mem cache init'</span> @client = <span class="hljs-keyword">new</span> MemCache <span class="hljs-keyword">else</span> debug-cache.Warn <span class="hljs-string">'No cache activated'</span> Get: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> <span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client? @client.Get name, <span class="hljs-function"><span class="hljs-params">(err, reply)</span> -&gt;</span> <span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err? debug-cache.Warn <span class="hljs-string">'Cache answered for '</span> + name done <span class="hljs-literal">null</span>, reply Set: <span class="hljs-function"><span class="hljs-params">(name, value, done)</span> -&gt;</span> <span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client? @client.Set name, value, (err, reply) ~&gt; <span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err? debug-cache.Warn <span class="hljs-string">'Cache updated for '</span> + name done <span class="hljs-literal">null</span>, reply Delete: <span class="hljs-function"><span class="hljs-params">(name, done)</span> -&gt;</span> <span class="hljs-keyword">return</span> done! <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client? @client.Delete name, (err, reply) ~&gt; <span class="hljs-keyword">return</span> done! done err <span class="hljs-keyword">if</span> err? debug-cache.Warn <span class="hljs-string">'Cache deleted for '</span> + name done <span class="hljs-literal">null</span>, reply Reset: <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">return</span> <span class="hljs-keyword">if</span> <span class="hljs-keyword">not</span> @client? @client.Reset! <span class="hljs-built_in">module</span>.exports = <span class="hljs-function">-&gt;</span> <span class="hljs-keyword">new</span> Cache it</pre></div></div> </li> </ul> </div> </body> </html>