Source: lib/graph.js

var fs = require("fs");
var parent_dir = process.getAbsolutePath(__dirname);
var proto = require(parent_dir + '/lib/proto.js');
var JSONX = proto.JSONX;
var check = require("check-types");
/**
	Represents a Graph
	@author Tilak Patidar <tilakpatidar@gmail.com>
	@constructor
	@param {Message} message_obj
*/

var Graph = function(message_obj) {
    var message = message_obj;
    var config = message.get('config');
    var log = message.get('log');
    var pool = message.get('pool');


    this.insert = function insert(url, parent_url) {
        pool.graph_collection.insert({
            "url": url,
            "parent": parent_url
        }, function insert() {

        });
    };

    this.fetchNode = function fetchNode(url, fn) {
        var li = []
        pool.graph_collection.find({
            "url": url
        }).toArray(function fetchNode(err, docs) {
            for (var i = 0; i < docs.length; i++) {
                var parent = docs[i]["parent"];
                li.push(parent);
            };
            return fn(err, {
                "url": url,
                "parents": li
            });
        })
    };

    this.fetchChildNodes = function fetchChildNodes(url, fn) {
        pool.graph_collection.find({
            "parent": url
        }).toArray(function fetchChildNodes(err, docs) {
            return fn(err, docs);
        });
    };

    if (config.getConfig("web_graph")) {
        msg("Web graph started.", "success");
    } else {
        msg("Web graph not selected in config.", "info");
        this.insert = function() {};
        this.fetchNode = function(url, fn) {
            return fn(new Error(), null);
        };
        this.fetchChildNodes = function(url, fn) {
            return fn(new Error(), null);
        }

    }

    function msg() {
        log.put(arguments[0], arguments[1], __filename.split('/').pop(), arguments.callee.caller.name.toString());
    }

};


module.exports = Graph;