diff --git a/lib/models/phone-number.js b/lib/models/phone-number.js index d430659..6cfa2a4 100644 --- a/lib/models/phone-number.js +++ b/lib/models/phone-number.js @@ -1,45 +1,38 @@ const Model = require('./model'); -const {getMysqlConnection} = require('../db'); +const {promisePool} = require('../db'); const sql = 'SELECT * from phone_numbers WHERE account_sid = ?'; +const sqlSP = `SELECT * +FROM phone_numbers +WHERE account_sid IN +( + SELECT account_sid + FROM accounts + WHERE service_provider_sid = ? +)`; class PhoneNumber extends Model { constructor() { super(); } - static retrieveAll(account_sid) { + static async retrieveAll(account_sid) { if (!account_sid) return super.retrieveAll(); - - return new Promise((resolve, reject) => { - getMysqlConnection((err, conn) => { - if (err) return reject(err); - conn.query(sql, account_sid, (err, results, fields) => { - conn.release(); - if (err) return reject(err); - resolve(results); - }); - }); - }); + const [rows] = await promisePool.query(sql, account_sid); + return rows; + } + static async retrieveAllForSP(service_provider_sid) { + const [rows] = await promisePool.query(sqlSP, service_provider_sid); + return rows; } /** - * retrieve an application + * retrieve a phone number */ - static retrieve(sid, account_sid) { + static async retrieve(sid, account_sid) { if (!account_sid) return super.retrieve(sid); - - return new Promise((resolve, reject) => { - getMysqlConnection((err, conn) => { - if (err) return reject(err); - conn.query(`${sql} AND phone_number_sid = ?`, [account_sid, sid], (err, results, fields) => { - conn.release(); - if (err) return reject(err); - resolve(results); - }); - }); - }); + const [rows] = await promisePool.query(`${sql} AND phone_number_sid = ?`, [account_sid, sid]); + return rows; } - } PhoneNumber.table = 'phone_numbers'; diff --git a/lib/routes/api/service-providers.js b/lib/routes/api/service-providers.js index 774f10e..f9c611d 100644 --- a/lib/routes/api/service-providers.js +++ b/lib/routes/api/service-providers.js @@ -4,6 +4,8 @@ const Webhook = require('../../models/webhook'); const ServiceProvider = require('../../models/service-provider'); const Account = require('../../models/account'); const VoipCarrier = require('../../models/voip-carrier'); +const Application = require('../../models/application'); +const PhoneNumber = require('../../models/phone-number'); const {hasServiceProviderPermissions, parseServiceProviderSid} = require('./utils'); const sysError = require('../error'); const decorate = require('./decorate'); @@ -31,6 +33,26 @@ router.get('/:sid/Accounts', async(req, res) => { sysError(logger, res, err); } }); +router.get('/:sid/Applications', async(req, res) => { + const logger = req.app.locals.logger; + try { + const service_provider_sid = parseServiceProviderSid(req); + const results = await Application.retrieveAll(service_provider_sid); + res.status(200).json(results); + } catch (err) { + sysError(logger, res, err); + } +}); +router.get('/:sid/PhoneNumbers', async(req, res) => { + const logger = req.app.locals.logger; + try { + const service_provider_sid = parseServiceProviderSid(req); + const results = await PhoneNumber.retrieveAllForSP(service_provider_sid); + res.status(200).json(results); + } catch (err) { + sysError(logger, res, err); + } +}); router.get('/:sid/VoipCarriers', async(req, res) => { const logger = req.app.locals.logger; try {