From 6fdb093595bd7f08511a743e277f812a4e2e8c90 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Sun, 21 Jan 2018 20:28:08 -0800 Subject: [PATCH] add and remove maildb entries when domain is created and removed --- src/domaindb.js | 16 ++++++++++++---- src/test/database-test.js | 7 ++----- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/domaindb.js b/src/domaindb.js index d7809fe61..62bb4a21a 100644 --- a/src/domaindb.js +++ b/src/domaindb.js @@ -60,9 +60,13 @@ function add(name, domain, callback) { assert.strictEqual(typeof domain.config, 'object'); assert.strictEqual(typeof callback, 'function'); - database.query('INSERT INTO domains (domain, zoneName, provider, configJson) VALUES (?, ?, ?, ?)', [ name, domain.zoneName, domain.provider, JSON.stringify(domain.config) ], function (error) { + var queries = []; + queries.push({ query: 'INSERT INTO domains (domain, zoneName, provider, configJson) VALUES (?, ?, ?, ?)', args: [ name, domain.zoneName, domain.provider, JSON.stringify(domain.config) ] }); + queries.push({ query: 'INSERT INTO maildb (domain) VALUES (?)', args: [ name ] }); + + database.transaction(queries, function (error, result) { if (error && error.code === 'ER_DUP_ENTRY') return callback(new DatabaseError(DatabaseError.ALREADY_EXISTS, error)); - if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); + if (error || result[1].affectedRows !== 1) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); callback(null); }); @@ -97,10 +101,14 @@ function del(domain, callback) { assert.strictEqual(typeof domain, 'string'); assert.strictEqual(typeof callback, 'function'); - database.query('DELETE FROM domains WHERE domain=?', [ domain ], function (error, result) { + var queries = []; + queries.push({ query: 'DELETE FROM maildb WHERE domain=?', args: [ domain ] }); + queries.push({ query: 'DELETE FROM domains WHERE domain=?', args: [ domain ] }); + + database.transaction(queries, function (error, result) { if (error && error.code === 'ER_ROW_IS_REFERENCED_2') return callback(new DatabaseError(DatabaseError.IN_USE)); if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); - if (result.affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); + if (result[1].affectedRows !== 1) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); callback(null); }); diff --git a/src/test/database-test.js b/src/test/database-test.js index fec63665e..0d009f5b3 100644 --- a/src/test/database-test.js +++ b/src/test/database-test.js @@ -1755,12 +1755,9 @@ describe('database', function () { mailFromValidation: true }; - before(function (done) { - domaindb.add(DOMAIN_0.domain, { zoneName: DOMAIN_0.zoneName, provider: DOMAIN_0.provider, config: DOMAIN_0.config }, done); - }); - it('can add mail domain', function (done) { - maildb.add(MAIL_DOMAIN_0.domain, done); + // this also adds the mail domain + domaindb.add(DOMAIN_0.domain, { zoneName: DOMAIN_0.zoneName, provider: DOMAIN_0.provider, config: DOMAIN_0.config }, done); }); it('cannot add same domain twice', function (done) {