var express = require('express'), fs = require('fs'), sqlite3 = require('sqlite3').verbose();
var router = express.Router();

var weight_db;
var file = process.env.DB_HOME + '/' + "weight.db";

/* GET users listing. */

function createWeightDB() {
  console.log('Creating Weight db...');

  console.log(file);
  if (!fs.existsSync(file)) {
    console.log('creating db file');
    fs.openSync(file,'w');

    weight_db = new sqlite3.Database(file, createWeightTable);

    weight_db.close();
  }



}

function connectWeightDB() {
  "use strict";
  console.log('Connect db.');
  weight_db = new sqlite3.Database(file);
}

function createWeightTable() {
  console.log('Creating weight table...');
  weight_db.run('CREATE TABLE IF NOT EXISTS weight (date text, reading real);');
}


function closeWeightDB() {
  "use strict";
  console.log('Closing db.');
  weight_db.close();
}

function insertWeightReading(time, reading) {
 console.log('Inserting reading:' + reading);

 // var sql = db.prepare('INSERT into temperature(date, reading) VALUES
  // (?,?)',[time],[reading]);

  weight_db.run('BEGIN TRANSACTION');
  weight_db.run('INSERT into weight(date, reading) VALUES (?,?)',[time, reading]);

  weight_db.run('END');

}

router.get('/', function(req, res, next) {
  var now = new Date();

  var t = req.query;

  if (req.query != {} && req.query.weight != null)
  {
   // createDB();
    console.log(req.query);
    connectWeightDB();

    insertWeightReading(now.toJSON(),parseFloat(req.query.weight) );

    closeWeightDB();

    res.writeHead(200, {"ContentType": "application/json"});
    //res.send(JSON.stringify(t));
    res.end(JSON.stringify(t));

  } else
  {
      res.render('weight', {  });
    }




});

router.get('/all', function(req, res, next) {
  "use strict";
  console.log('Selecint all..');
  connectWeightDB();

    weight_db.all('SELECT * from weight', function(err, rows) {

      var out = [];
      console.log(err);
        console.log(rows);
        rows.forEach(function (row) {
          console.log(row.date + ', ' + row.reading);
        //  var t = ;
        //  out.push({"date": Date(row.date), "reading":row.reading});
          out.push({"date":  row.date, "reading":row.reading});
        });

      res.writeHead(200, {"ContentType": "application/json"});
          //res.send(JSON.stringify(t));
          res.end(JSON.stringify(out));

      closeWeightDB();
    });



});

module.exports = router;

createWeightDB();
