client/data/simple-persist.js
author rougeronj
Wed, 16 Sep 2015 17:36:46 +0200
changeset 524 904effa4b6d7
parent 356 763c925e7a9c
child 647 eaaa1efce396
permissions -rw-r--r--
improve view management: - we can pass a negative view index, in this case we count from the end of the list of view - before creating/changing the view representation, we remove the previous one and reinitialize the node visibility - each time we save a view, it creates a new one at the end of the list - "restore" view loads the last view of the list

// Simple persist middle ware
var path = require('path'),
    fs = require('fs');

var jsonFile = path.join(__dirname,"example-cinema.json");
var resetFile = path.join(__dirname,"example-cinema-src.json");

exports.middleware = function(req, res, next) {
    'use strict';

    if (req.url !== '/simple-persist') {
      return next();
    }

    res.setHeader('Content-Type', 'application/json; charset=utf-8');
    res.statusCode = 200;

    if(req.method === "PUT" || req.method === "POST") {
      req.pipe(fs.createWriteStream(jsonFile));
      setTimeout(function () {
    	  res.end(JSON.stringify({result: "OK"}));
      }, 3000);
    }
    else {
      var params = require('url').parse(req.url),
          readStream;
      if('reset' in params && params.reset) {
        readStream = fs.createReadStream(resetFile);
        readStream.pipe(fs.createWriteStream(jsonFile));
      }
      else {
        readStream = fs.createReadStream(jsonFile);
        readStream.on('error',function() {
          var srcFile = fs.createReadStream(resetFile);
          srcFile.pipe(fs.createWriteStream(jsonFile));
          srcFile.pipe(res);
        });
      }
      readStream.pipe(res);
    }
};