63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
module.exports.create = function (opts) {
 | 
						|
  // opts = { filepath };
 | 
						|
  var engine = { db: null };
 | 
						|
 | 
						|
  var db = require(opts.filepath);
 | 
						|
 | 
						|
  engine.primaryNameservers = db.primaryNameservers;
 | 
						|
  engine.peers = {
 | 
						|
    all: function (cb) {
 | 
						|
      process.nextTick(function () {
 | 
						|
        cb(null, db.primaryNameservers.map(function (ns) {
 | 
						|
          return { name: ns };
 | 
						|
        }));
 | 
						|
      });
 | 
						|
    }
 | 
						|
  };
 | 
						|
  engine.zones = {
 | 
						|
    all: function (cb) {
 | 
						|
      process.nextTick(function () {
 | 
						|
        cb(null, db.domains.slice(0));
 | 
						|
      });
 | 
						|
    }
 | 
						|
  , get: function (query, cb) {
 | 
						|
      var myDomains = db.domains.filter(function (d) {
 | 
						|
        return -1 !== query.names.indexOf(d.id.toLowerCase());
 | 
						|
      });
 | 
						|
      process.nextTick(function () {
 | 
						|
        cb(null, myDomains);
 | 
						|
      });
 | 
						|
    }
 | 
						|
  };
 | 
						|
  engine.records = {
 | 
						|
    all: function (cb) {
 | 
						|
      process.nextTick(function () {
 | 
						|
        cb(null, db.records.slice(0));
 | 
						|
      });
 | 
						|
    }
 | 
						|
  , get: function (query, cb) {
 | 
						|
      var myRecords = db.records.slice(0).filter(function (r) {
 | 
						|
 | 
						|
        if ('string' !== typeof r.name) {
 | 
						|
          return false;
 | 
						|
        }
 | 
						|
 | 
						|
        // TODO use IN in masterquest (or implement OR)
 | 
						|
        // Only return single-level wildcard?
 | 
						|
        if (query.name === r.name || ('*.' + query.name.split('.').slice(1).join('.')) === r.name) {
 | 
						|
          return true;
 | 
						|
        }
 | 
						|
      });
 | 
						|
      process.nextTick(function () {
 | 
						|
        cb(null, myRecords);
 | 
						|
      });
 | 
						|
    }
 | 
						|
  };
 | 
						|
  engine.getSoas = engine.zones.get;
 | 
						|
  engine.getRecords = engine.records.get;
 | 
						|
 | 
						|
  return engine;
 | 
						|
};
 |