hatchyt
Version:
Hatch your next idea.
61 lines (50 loc) • 1.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _database = require('../database');
var _database2 = _interopRequireDefault(_database);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// sneak in an extra row (101st) to determine
// if there are "more"
var PAGE_SIZE = 100;
var query = '\nSELECT domain, email, datetime\nFROM signups\nORDER BY datetime DESC\nLIMIT ' + (PAGE_SIZE + 1) + '\nOFFSET ?\n';
var downloadQuery = '\nSELECT domain, email, datetime\nFROM signups\nORDER BY datetime DESC';
// parse the page from the query param
function getPage(req) {
var input = req.query.page || 1;
input = parseInt(input, 10);
if (isNaN(input)) {
input = 1;
}
return (input - 1) * PAGE_SIZE;
}
function main(req, res) {
var page = getPage(req);
_database2.default.all(query, [page], function (err, rows) {
var hasMore = rows.length > PAGE_SIZE;
if (hasMore) rows.pop();
res.render('signups', {
hasMore: hasMore,
page: page,
isSignups: true,
rows: err ? [{ domain: "serveR_error", email: err.toString() }] : rows });
});
}
function download(req, res) {
_database2.default.all(downloadQuery, function (err, rows) {
res.set({ 'Content-Disposition': 'attachment; filename="download.csv"' });
res.send(rows.map(function (row) {
var fields = [];
for (var field in row) {
fields.push(row[field]);
}
return fields.join(', ');
}).join('\n'));
});
}
exports.default = {
main: main,
download: download
};
//# sourceMappingURL=signups.js.map