Skip to content

Commit 7e7e1ee

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.
1 parent 24244bb commit 7e7e1ee

1 file changed

Lines changed: 26 additions & 10 deletions

File tree

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

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,33 @@ 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+
try {
201+
await bookshelfOptions.transacting.executionPromise;
202+
await trigger();
203+
} catch (err) {
204+
logging.error({
205+
err,
206+
message: `Error triggering automation for member ${memberId}`
207+
});
208+
}
209+
} else {
210+
await trigger();
211+
}
196212
}
197213

198214
/**
@@ -253,7 +269,7 @@ module.exports = class MemberRepository {
253269
*/
254270
async triggerMemberSignupAutomation(memberId, memberEmail, memberStatus, bookshelfOptions) {
255271
await Promise.all([
256-
this.#triggerMemberSignupAutomation(memberId, memberEmail, memberStatus),
272+
this.#triggerMemberSignupAutomation(memberId, memberEmail, memberStatus, bookshelfOptions),
257273
this.#triggerMemberSignupLegacyAutomation(memberId, memberStatus, bookshelfOptions)
258274
]);
259275
}

0 commit comments

Comments
 (0)