var http = require('http');

var express = require('express');

var url = require('url');

var path = require('path');

var validator = require('validator');


/* db connection */

var mysql = require('mysql');


/*

var db_config = {

host : "localhost",

user : "root",

password : "",

database : ""

};

*/


var db_config = {

host : "us-cdbr-east-05.cleardb.net",

user : "",

password : "",

database : ""

};



var db_pool;


function handleDisconnect() {

db_pool = mysql.createPool(db_config);


db_pool.getConnection(function(err) { 

if (err) { 

console.log('error when connecting to db:', err)

setTimeout(handleDisconnect, 2000);

}

});

db_pool.on('error', function(err) {

console.log('db error', err);

if (err.code === 'PROTOCOL_CONNECTION_LOST') {

handleDisconnect();

} else {

throw err;

}

});

}


handleDisconnect();


/* redis session store */

var RedisStore = require('connect-redis')(express.session);

var redis = require('redis');

var redisURL = url.parse("");

var redisClient = redis.createClient(redisURL.port, redisURL.hostname, {

no_ready_check : true

});

redisClient.auth(redisURL.auth.split(":")[1]);

redisClient.on("error", function(err) {

console.log("error event - " + redisClient.host + ":" + redisClient.port

+ " - " + err)

});


/* express middle wear */

var namespace = require('express-namespace');

var resource = require('express-resource');

var path = require('path');

var ejs = require('ejs');

var app = express();


app.set("view engine", "ejs");

app.engine('html', ejs.renderFile);


var iniparser = require('iniparser');

var config = require('./config.json')[app.get('env')];


app.use(express.static('./public'));

app.set('views', './views');

app.use(express.responseTime());

app.use(express.cookieParser(''));

app.use(express.session({

store : new RedisStore({

client : redisClient

}), 

secret : '',

cookie : {

maxAge :600000

}}));

app.use(app.router);

app.use(express.errorHandler());

app.use(express.logger('dev'));

app.use(express.bodyParser({

keepExtensions: true,

uploadDir: './uploads'

}));


/* routes */

var routesDashboard = require('./routes/dashboard.js')(app);

var routesLogin = require('./routes/login.js')(app);



/* starting server */

http.createServer(app).listen(config.port, function() {

console.log('Express app started on port ' + config.port);

});


개인적인 URL같은건 지웠는데 구조 평가좀...