Skip to content

Commit 645e024

Browse files
authored
Update existing trigger feeds on create instead of failing (#360)
* Update existing triggers on create instead of failing * Refactoring * Catch errors... * Pass correct argument to disable * Properly update trigger * Formatting * Return promise properly * Valid updated parameters first
1 parent b6e1d0d commit 645e024

File tree

3 files changed

+44
-25
lines changed

3 files changed

+44
-25
lines changed

action/kafkaFeedWeb.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,10 +119,15 @@ function main(params) {
119119
})
120120
.then(triggerDoc => {
121121
if (!triggerDoc.status.active) {
122-
resolve(common.webResponse(400, `${params.triggerName} cannot be updated because it is disabled`));
122+
return resolve(common.webResponse(400, `${params.triggerName} cannot be updated because it is disabled`));
123123
}
124+
124125
return common.performUpdateParameterValidation(params, triggerDoc)
125-
.then(updatedParams => db.updateTrigger(triggerDoc, updatedParams))
126+
.then(updatedParams => {
127+
return db.disableTrigger(triggerDoc)
128+
.then(() => db.getTrigger(params.triggerName))
129+
.then(doc => db.updateTrigger(doc, updatedParams));
130+
});
126131
})
127132
.then(() => {
128133
console.log('successfully updated the trigger');

action/lib/Database.js

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,16 @@ module.exports = function(dbURL, dbName) {
5858
return new Promise((resolve, reject) => {
5959
this.db.insert(params, (err, result) => {
6060
if(err) {
61-
reject(err);
61+
if(err.statusCode && err.statusCode === 409) {
62+
this.getTrigger(params.triggerName)
63+
.then(doc => this.disableTrigger(doc))
64+
.then(() => this.getTrigger(params.triggerName))
65+
.then(doc => this.updateTrigger(params, {_rev: doc._rev}))
66+
.then(result => resolve(result))
67+
.catch(err => reject(err));
68+
} else {
69+
reject(err);
70+
}
6271
} else {
6372
resolve(result);
6473
}
@@ -122,7 +131,7 @@ module.exports = function(dbURL, dbName) {
122131
});
123132
};
124133

125-
this.updateTrigger = function(existing, params) {
134+
this.disableTrigger = function(existing) {
126135
return new Promise((resolve, reject) => {
127136
var message = 'Automatically disabled trigger while updating';
128137
var status = {
@@ -139,27 +148,27 @@ module.exports = function(dbURL, dbName) {
139148
}
140149
});
141150
})
142-
.then(() => this.getTrigger(existing.triggerName))
143-
.then(doc => {
144-
for (var key in params) {
145-
if (params[key] !== undefined) {
146-
doc[key] = params[key];
147-
}
151+
};
152+
153+
this.updateTrigger = function(existing, params) {
154+
for (var key in params) {
155+
if (params[key] !== undefined) {
156+
existing[key] = params[key];
148157
}
149-
var status = {
150-
'active': true,
151-
'dateChanged': Date.now()
152-
};
153-
doc.status = status;
158+
}
159+
var status = {
160+
'active': true,
161+
'dateChanged': Date.now()
162+
};
163+
existing.status = status;
154164

155-
return new Promise((resolve, reject) => {
156-
this.db.insert(doc, (err, result) => {
157-
if(err) {
158-
reject(err);
159-
} else {
160-
resolve(result);
161-
}
162-
});
165+
return new Promise((resolve, reject) => {
166+
this.db.insert(existing, (err, result) => {
167+
if(err) {
168+
reject(err);
169+
} else {
170+
resolve(result);
171+
}
163172
});
164173
});
165174
};

action/messageHubFeedWeb.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,15 @@ function main(params) {
126126
})
127127
.then(triggerDoc => {
128128
if (!triggerDoc.status.active) {
129-
resolve(common.webResponse(400, `${params.triggerName} cannot be updated because it is disabled`));
129+
return resolve(common.webResponse(400, `${params.triggerName} cannot be updated because it is disabled`));
130130
}
131+
131132
return common.performUpdateParameterValidation(params, triggerDoc)
132-
.then(updatedParams => db.updateTrigger(triggerDoc, updatedParams))
133+
.then(updatedParams => {
134+
return db.disableTrigger(triggerDoc)
135+
.then(() => db.getTrigger(params.triggerName))
136+
.then(doc => db.updateTrigger(doc, updatedParams));
137+
});
133138
})
134139
.then(() => {
135140
console.log('successfully updated the trigger');

0 commit comments

Comments
 (0)