chore: Refactor worker, emails and data cleanup to task system (#3337)
* Refactor worker, all emails on task system * fix * lint * fix: Remove a bunch of expect-error comments in related tests * refactor: Move work from utils.gc into tasks * test * Add tracing to tasks and processors fix: DebounceProcessor triggering on all events Event.add -> Event.schedule
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import mailer from "@server/mailer";
|
||||
import Collection from "@server/models/Collection";
|
||||
import UserAuthentication from "@server/models/UserAuthentication";
|
||||
import EmailTask from "@server/queues/tasks/EmailTask";
|
||||
import { buildUser, buildTeam } from "@server/test/factories";
|
||||
import { flushdb } from "@server/test/support";
|
||||
import accountProvisioner from "./accountProvisioner";
|
||||
@@ -13,7 +13,7 @@ describe("accountProvisioner", () => {
|
||||
const ip = "127.0.0.1";
|
||||
|
||||
it("should create a new user and team", async () => {
|
||||
const spy = jest.spyOn(mailer, "sendTemplate");
|
||||
const spy = jest.spyOn(EmailTask, "schedule");
|
||||
const { user, team, isNewTeam, isNewUser } = await accountProvisioner({
|
||||
ip,
|
||||
user: {
|
||||
@@ -55,7 +55,7 @@ describe("accountProvisioner", () => {
|
||||
});
|
||||
|
||||
it("should update exising user and authentication", async () => {
|
||||
const spy = jest.spyOn(mailer, "sendTemplate");
|
||||
const spy = jest.spyOn(EmailTask, "schedule");
|
||||
const existingTeam = await buildTeam();
|
||||
const providers = await existingTeam.$get("authenticationProviders");
|
||||
const authenticationProvider = providers[0];
|
||||
@@ -149,7 +149,7 @@ describe("accountProvisioner", () => {
|
||||
});
|
||||
|
||||
it("should create a new user in an existing team", async () => {
|
||||
const spy = jest.spyOn(mailer, "sendTemplate");
|
||||
const spy = jest.spyOn(EmailTask, "schedule");
|
||||
const team = await buildTeam();
|
||||
const authenticationProviders = await team.$get("authenticationProviders");
|
||||
const authenticationProvider = authenticationProviders[0];
|
||||
|
||||
@@ -6,8 +6,8 @@ import {
|
||||
AuthenticationProviderDisabledError,
|
||||
} from "@server/errors";
|
||||
import { APM } from "@server/logging/tracing";
|
||||
import mailer from "@server/mailer";
|
||||
import { Collection, Team, User } from "@server/models";
|
||||
import EmailTask from "@server/queues/tasks/EmailTask";
|
||||
import teamCreator from "./teamCreator";
|
||||
import userCreator from "./userCreator";
|
||||
|
||||
@@ -89,9 +89,12 @@ async function accountProvisioner({
|
||||
const { isNewUser, user } = result;
|
||||
|
||||
if (isNewUser) {
|
||||
await mailer.sendTemplate("welcome", {
|
||||
to: user.email,
|
||||
teamUrl: team.url,
|
||||
await EmailTask.schedule({
|
||||
type: "welcome",
|
||||
options: {
|
||||
to: user.email,
|
||||
teamUrl: team.url,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ export default async function documentUpdater({
|
||||
return;
|
||||
}
|
||||
|
||||
await Event.add({
|
||||
await Event.schedule({
|
||||
name: "documents.update",
|
||||
documentId: document.id,
|
||||
collectionId: document.collectionId,
|
||||
|
||||
@@ -2,8 +2,8 @@ import invariant from "invariant";
|
||||
import { uniqBy } from "lodash";
|
||||
import { Role } from "@shared/types";
|
||||
import Logger from "@server/logging/logger";
|
||||
import mailer from "@server/mailer";
|
||||
import { User, Event, Team } from "@server/models";
|
||||
import EmailTask from "@server/queues/tasks/EmailTask";
|
||||
|
||||
type Invite = {
|
||||
name: string;
|
||||
@@ -74,13 +74,17 @@ export default async function userInviter({
|
||||
},
|
||||
ip,
|
||||
});
|
||||
await mailer.sendTemplate("invite", {
|
||||
to: invite.email,
|
||||
name: invite.name,
|
||||
actorName: user.name,
|
||||
actorEmail: user.email,
|
||||
teamName: team.name,
|
||||
teamUrl: team.url,
|
||||
|
||||
await EmailTask.schedule({
|
||||
type: "invite",
|
||||
options: {
|
||||
to: invite.email,
|
||||
name: invite.name,
|
||||
actorName: user.name,
|
||||
actorEmail: user.email,
|
||||
teamName: team.name,
|
||||
teamUrl: team.url,
|
||||
},
|
||||
});
|
||||
|
||||
if (process.env.NODE_ENV === "development") {
|
||||
|
||||
Reference in New Issue
Block a user