Added localDatabase support with NeDB
This commit is contained in:
parent
7eb6126402
commit
3d0fb303e1
6 changed files with 68 additions and 34 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -1,2 +1,3 @@
|
|||
node_modules
|
||||
settings.json
|
||||
resources/databases/*
|
||||
|
|
|
|||
27
database.js
Normal file
27
database.js
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
//database.js
|
||||
var config = require('./configuration');
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function () {
|
||||
if (!config().localDatabase) return require('mongoskin').db('mongodb://' + config().database);
|
||||
else {
|
||||
var databases = {
|
||||
index: new (require('nedb'))({ filename: __dirname + '/resources/databases/index.db', autoload: true})
|
||||
};
|
||||
|
||||
return {
|
||||
'collection': function (collection) {
|
||||
var database = databases[collection];
|
||||
|
||||
database.drop = function () {
|
||||
fs.writeFileSync(database.filename, '');
|
||||
}
|
||||
|
||||
return database;
|
||||
},
|
||||
'close': function () {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
lookup.js
15
lookup.js
|
|
@ -6,7 +6,7 @@ var schoolID = config().schoolID;
|
|||
|
||||
//Getting first and third party modules
|
||||
var fs = require('fs');
|
||||
var database = require('mongoskin').db('mongodb://' + config().database);
|
||||
var database = require('./database')();
|
||||
|
||||
function get(req, res, next, search) {
|
||||
var index = database.collection('index');
|
||||
|
|
@ -14,9 +14,21 @@ function get(req, res, next, search) {
|
|||
easter(search) ? search = easter(search).name : null;
|
||||
search = new RegExp(search, 'i');
|
||||
|
||||
if (!config().localDatabase) {
|
||||
index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}, {username: search}]}).toArray(function (err, databaseEntry) {
|
||||
if (err) console.warn(err);
|
||||
handle(req, next, databaseEntry);
|
||||
});
|
||||
}
|
||||
else {
|
||||
index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}, {username: search}]}, function (err, databaseEntry) {
|
||||
if (err) console.warn(err);
|
||||
handle(req, next, databaseEntry);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function handle(req, next, databaseEntry) {
|
||||
if ((req.easter || {}).type == 'RIP') {
|
||||
require('./auth').is(req, res, function () {
|
||||
res.render('schedule', req);
|
||||
|
|
@ -38,7 +50,6 @@ function get(req, res, next, search) {
|
|||
res.render('list', req);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function api(req, callback) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
"jade": "^1.11.0",
|
||||
"mongodb": "^1.4.38",
|
||||
"mongoskin": "^1.4.13",
|
||||
"nedb": "^1.1.3",
|
||||
"socks5-http-client": "^1.0.1",
|
||||
"socks5-https-client": "^1.1.1"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ function getSchedule(getUrl, callback) {
|
|||
});
|
||||
}
|
||||
|
||||
function types(page) {
|
||||
function scheduleTypes(page) {
|
||||
var extract = cheerio('table tr td[valign="bottom"] table tr td b, table tr td[valign="bottom"] table tr td a', page).text().split(/\s\s/);
|
||||
var tab = 0;
|
||||
var types = [];
|
||||
|
|
@ -54,7 +54,7 @@ function types(page) {
|
|||
//Function for converting the page into a json dataset.
|
||||
function toJSON(page) {
|
||||
var result = cheerio('td:nth-child(3) table', page);
|
||||
var types = types(page);
|
||||
var types = scheduleTypes(page);
|
||||
var isTeacher = cheerio(cheerio(page).find('tr.CoreDark').find('td')[3]).find('a').html() == null;
|
||||
var amountOfDays = cheerio(result).find('tr.AccentDark').find('td').length - 1;
|
||||
var amountOfHours = config().amountOfHours;
|
||||
|
|
|
|||
10
spider.js
10
spider.js
|
|
@ -1,9 +1,9 @@
|
|||
var http = require('socks5-http-client');
|
||||
var cheerio = require('cheerio');
|
||||
var iconv = require('iconv-lite');
|
||||
var mongodb = require('mongodb').MongoClient;
|
||||
var config = require('./configuration');
|
||||
var url = require('url');
|
||||
var database = require('./')();
|
||||
|
||||
var scheduletypes = [
|
||||
'Klasrooster',
|
||||
|
|
@ -12,7 +12,6 @@ var scheduletypes = [
|
|||
'Lokaalrooster'
|
||||
];
|
||||
var schoolID;
|
||||
var database;
|
||||
|
||||
//Function for getting pages with http requests.
|
||||
function get() {
|
||||
|
|
@ -123,12 +122,7 @@ function rip(data) {
|
|||
//Function being called to access functionality from this module.
|
||||
function crawl() {
|
||||
schoolID = config().schoolID;
|
||||
mongodb.connect('mongodb://' + config().database, function (error, db) {
|
||||
if (error) console.warn(error);
|
||||
database = db;
|
||||
|
||||
get();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -144,6 +138,6 @@ module.exports = {
|
|||
'crawl' : crawl
|
||||
}
|
||||
|
||||
if (process.argv[2] == 'test') {
|
||||
if (process.argv[2] == 'test' || process.argv[2] == 'rip') {
|
||||
module.exports.crawl(934);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue