diff --git a/lib/models/lists.js b/lib/models/lists.js index 839fefe1..0b208673 100644 --- a/lib/models/lists.js +++ b/lib/models/lists.js @@ -4,6 +4,7 @@ let db = require('../db'); let tools = require('../tools'); let shortid = require('shortid'); let segments = require('./segments'); +let subscriptions = require('./subscriptions'); let _ = require('../translate')._; let tableHelpers = require('../table-helpers'); @@ -64,6 +65,37 @@ module.exports.quicklist = callback => { }); }; +module.exports.getListsWithEmail = (email, callback) => { + db.getConnection((err, connection) => { + if (err) { + return callback(err); + } + + connection.query('SELECT id, name FROM lists', (err, rows) => { + connection.release(); + if (err) { + return callback(err); + } + + let lists = (rows || []).map(tools.convertKeys); + const results = []; + lists.forEach((list, index, arr) => { + subscriptions.getByEmail(list.id, email, (err, sub) => { + if (err) { + return callback(err); + } + if (sub) { + results.push(list.id); + } + if (index === arr.length - 1) { + return callback(null, lists.filter(list => results.includes(list.id))); + } + }); + }); + }); + }); +}; + module.exports.getByCid = (cid, callback) => { resolveCid(cid, (err, id) => { if (err) { diff --git a/routes/api.js b/routes/api.js index 758b5224..d6bf3566 100644 --- a/routes/api.js +++ b/routes/api.js @@ -348,6 +348,22 @@ router.get('/subscriptions/:listId', (req, res) => { }); }); +router.get('/lists/:email', (req, res) => { + lists.getListsWithEmail(req.params.email, (err, lists) => { + if (err) { + res.status(500); + return res.json({ + error: err.message || err, + data: [] + }); + } + res.status(200); + res.json({ + data: lists + }); + }); +}); + router.post('/field/:listId', (req, res) => { let input = {}; Object.keys(req.body).forEach(key => {