-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathnavigation.js
63 lines (47 loc) · 1.63 KB
/
navigation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Navigation
// (c)copyright 2014 by Gerald Wodni <[email protected]>
"use strict";
var fs = require("fs");
var path = require("path");
var _ = require("underscore");
var async = require("async");
var express = require("express");
module.exports = function( rdb ) {
var websites = {};
function getIndexKey( prefix ) {
return prefix + ":navigation";
};
function getKey( prefix, link ) {
return prefix + ":navigation:" + ( link || "" );
};
function loadWebsite( website, callback ) {
rdb.navigation.readAll( website, function( err, data ) {
if( err )
return callback( err );
var router = express.Router();
router.get( "/navs", function( req, res ) { res.send( "NAVS!" ); } );
var i = 0;
console.log( "DATA:", data );
data.sort( function( a, b ) {
return b.link.length - a.link.length;
});
data.forEach(function( item ) {
console.log( "Route ->", item );
//router.get( "/nav/" + (i++),
});
websites[ website ] = router;
callback( null, router );
});
};
rdb.navigation = k.crud.setHash( "navigation" );
return function( req, res, next ) {
if( req.website in websites )
websites[req.website].handle( req, res, next );
else
loadWebsite( req.website, function( err, router ) {
if( err )
return next( err );
router.handle( req, res, next );
});
};
};