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
|
node_modules
|
||||||
settings.json
|
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
|
//Getting first and third party modules
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
var database = require('mongoskin').db('mongodb://' + config().database);
|
var database = require('./database')();
|
||||||
|
|
||||||
function get(req, res, next, search) {
|
function get(req, res, next, search) {
|
||||||
var index = database.collection('index');
|
var index = database.collection('index');
|
||||||
|
|
@ -14,9 +14,21 @@ function get(req, res, next, search) {
|
||||||
easter(search) ? search = easter(search).name : null;
|
easter(search) ? search = easter(search).name : null;
|
||||||
search = new RegExp(search, 'i');
|
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) {
|
index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}, {username: search}]}).toArray(function (err, databaseEntry) {
|
||||||
if (err) console.warn(err);
|
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') {
|
if ((req.easter || {}).type == 'RIP') {
|
||||||
require('./auth').is(req, res, function () {
|
require('./auth').is(req, res, function () {
|
||||||
res.render('schedule', req);
|
res.render('schedule', req);
|
||||||
|
|
@ -38,7 +50,6 @@ function get(req, res, next, search) {
|
||||||
res.render('list', req);
|
res.render('list', req);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function api(req, callback) {
|
function api(req, callback) {
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
"jade": "^1.11.0",
|
"jade": "^1.11.0",
|
||||||
"mongodb": "^1.4.38",
|
"mongodb": "^1.4.38",
|
||||||
"mongoskin": "^1.4.13",
|
"mongoskin": "^1.4.13",
|
||||||
|
"nedb": "^1.1.3",
|
||||||
"socks5-http-client": "^1.0.1",
|
"socks5-http-client": "^1.0.1",
|
||||||
"socks5-https-client": "^1.1.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 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 tab = 0;
|
||||||
var types = [];
|
var types = [];
|
||||||
|
|
@ -54,7 +54,7 @@ function types(page) {
|
||||||
//Function for converting the page into a json dataset.
|
//Function for converting the page into a json dataset.
|
||||||
function toJSON(page) {
|
function toJSON(page) {
|
||||||
var result = cheerio('td:nth-child(3) table', 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 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 amountOfDays = cheerio(result).find('tr.AccentDark').find('td').length - 1;
|
||||||
var amountOfHours = config().amountOfHours;
|
var amountOfHours = config().amountOfHours;
|
||||||
|
|
|
||||||
10
spider.js
10
spider.js
|
|
@ -1,9 +1,9 @@
|
||||||
var http = require('socks5-http-client');
|
var http = require('socks5-http-client');
|
||||||
var cheerio = require('cheerio');
|
var cheerio = require('cheerio');
|
||||||
var iconv = require('iconv-lite');
|
var iconv = require('iconv-lite');
|
||||||
var mongodb = require('mongodb').MongoClient;
|
|
||||||
var config = require('./configuration');
|
var config = require('./configuration');
|
||||||
var url = require('url');
|
var url = require('url');
|
||||||
|
var database = require('./')();
|
||||||
|
|
||||||
var scheduletypes = [
|
var scheduletypes = [
|
||||||
'Klasrooster',
|
'Klasrooster',
|
||||||
|
|
@ -12,7 +12,6 @@ var scheduletypes = [
|
||||||
'Lokaalrooster'
|
'Lokaalrooster'
|
||||||
];
|
];
|
||||||
var schoolID;
|
var schoolID;
|
||||||
var database;
|
|
||||||
|
|
||||||
//Function for getting pages with http requests.
|
//Function for getting pages with http requests.
|
||||||
function get() {
|
function get() {
|
||||||
|
|
@ -123,12 +122,7 @@ function rip(data) {
|
||||||
//Function being called to access functionality from this module.
|
//Function being called to access functionality from this module.
|
||||||
function crawl() {
|
function crawl() {
|
||||||
schoolID = config().schoolID;
|
schoolID = config().schoolID;
|
||||||
mongodb.connect('mongodb://' + config().database, function (error, db) {
|
|
||||||
if (error) console.warn(error);
|
|
||||||
database = db;
|
|
||||||
|
|
||||||
get();
|
get();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -144,6 +138,6 @@ module.exports = {
|
||||||
'crawl' : crawl
|
'crawl' : crawl
|
||||||
}
|
}
|
||||||
|
|
||||||
if (process.argv[2] == 'test') {
|
if (process.argv[2] == 'test' || process.argv[2] == 'rip') {
|
||||||
module.exports.crawl(934);
|
module.exports.crawl(934);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue