add and remove maildb entries when domain is created and removed

This commit is contained in:
Girish Ramakrishnan
2018-01-21 20:28:08 -08:00
parent 93d5ce63ae
commit 6fdb093595
2 changed files with 14 additions and 9 deletions

View File

@@ -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);
});

View File

@@ -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) {