mailtrain/lib/models/blacklist.js
2017-04-11 10:10:02 +02:00

86 lines
2.4 KiB
JavaScript

'use strict';
let db = require('../db');
module.exports.get = (start, limit, search, callback) => {
db.getConnection((err, connection) => {
if (err) {
return callback(err);
}
search = '%' + search + '%';
connection.query('SELECT SQL_CALC_FOUND_ROWS `email` FROM blacklist WHERE `email` LIKE ? ORDER BY `email` LIMIT ? OFFSET ?', [search, limit, start], (err, rows) => {
if (err) {
return callback(err);
}
connection.query('SELECT FOUND_ROWS() AS total', (err, total) => {
connection.release();
if (err) {
return callback(err);
}
let emails = [];
rows.forEach(email => {
emails.push(email.email);
});
return callback(null, emails, total && total[0] && total[0].total);
});
});
});
};
module.exports.add = (email, callback) => {
db.getConnection((err, connection) => {
if (err) {
return callback(err);
}
connection.query('INSERT IGNORE INTO `blacklist` (`email`) VALUES(?)', email, err => {
if (err) {
return callback(err);
}
connection.release();
return callback(null, null);
});
});
};
module.exports.delete = (email, callback) => {
db.getConnection((err, connection) => {
if (err) {
return callback(err);
}
connection.query('DELETE FROM `blacklist` WHERE `email`=?', email, err => {
if (err) {
return callback(err);
}
connection.release();
return callback(null, null);
});
});
};
module.exports.isblacklisted = (email, callback) => {
db.getConnection((err, connection) => {
if (err) {
return callback(err);
}
connection.query('SELECT `email` FROM blacklist WHERE `email`=?', email, (err, rows) => {
if (err) {
return callback(err);
}
connection.release();
if (rows.length > 0) {
return callback(null, true);
} else {
return callback(null, false);
}
});
});
};