Skip to content

Commit 8537f9e

Browse files
committed
Started waiting for member insertion before triggering automation
towards https://linear.app/ghost/issue/NY-1286 ref #28120 *I recommend reviewing this with whitespace changes disabled.* **What:** We want to trigger automations after members are inserted. **Why:** If we don't do this, automations could run before the member exists in the database. (cherry picked from commit e04da95)
1 parent ebc1304 commit 8537f9e

1 file changed

Lines changed: 23 additions & 10 deletions

File tree

ghost/core/core/server/services/members/members-api/repositories/member-repository.js

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,30 @@ module.exports = class MemberRepository {
182182
* @param {string} memberId
183183
* @param {string} memberEmail
184184
* @param {'free' | 'paid'} memberStatus
185+
* @param {object} bookshelfOptions
186+
* @param {Knex.Transaction} [bookshelfOptions.transacting]
185187
* @returns {Promise<void>}
186188
*/
187-
async #triggerMemberSignupAutomation(memberId, memberEmail, memberStatus) {
188-
// TODO(NY-1311) When moving to real tables, we should insert the new
189-
// rows in a new transaction.
190-
await this._automationsApi.trigger({
191-
event: 'member_sign_up',
192-
memberId,
193-
memberEmail,
194-
memberStatus
195-
});
189+
async #triggerMemberSignupAutomation(memberId, memberEmail, memberStatus, bookshelfOptions) {
190+
const trigger = async () => {
191+
await this._automationsApi.trigger({
192+
event: 'member_sign_up',
193+
memberId,
194+
memberEmail,
195+
memberStatus
196+
});
197+
};
198+
199+
if (bookshelfOptions?.transacting) {
200+
bookshelfOptions.transacting.executionPromise.then(trigger).catch((err) => {
201+
logging.error({
202+
err,
203+
message: `Error triggering automation for member ${memberId}`
204+
});
205+
});
206+
} else {
207+
await trigger();
208+
}
196209
}
197210

198211
/**
@@ -253,7 +266,7 @@ module.exports = class MemberRepository {
253266
*/
254267
async triggerMemberSignupAutomation(memberId, memberEmail, memberStatus, bookshelfOptions) {
255268
await Promise.all([
256-
this.#triggerMemberSignupAutomation(memberId, memberEmail, memberStatus),
269+
this.#triggerMemberSignupAutomation(memberId, memberEmail, memberStatus, bookshelfOptions),
257270
this.#triggerMemberSignupLegacyAutomation(memberId, memberStatus, bookshelfOptions)
258271
]);
259272
}

0 commit comments

Comments
 (0)