Skip to content

Commit

Permalink
feat: added worker to mail queue provider
Browse files Browse the repository at this point in the history
  • Loading branch information
demmorou committed Sep 29, 2021
1 parent 8217ce7 commit c05e240
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 26 deletions.
5 changes: 0 additions & 5 deletions src/infra/providers/QueueProvider/models/IQueueProvider.ts

This file was deleted.

41 changes: 41 additions & 0 deletions src/infra/queue/worker.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import 'dotenv/config';
import { AwilixContainer } from 'awilix';

import { setupContainer } from '~infra/bootstrap/container';
import { config } from '~infra/config';
import IMailProvider from '~infra/providers/MailProvider/models/IMailProvider';
import IMailQueueProvider from '~infra/providers/QueueProvider/models/IMailQueueProvider';
import { Logger } from '~infra/tools/log/types';

const worker = async (container: AwilixContainer): Promise<void> => {
const mailQueueProvider =
container.resolve<IMailQueueProvider>('mailQueueProvider');
const mailProvider = container.resolve<IMailProvider>('mailProvider');
const logger = container.resolve<Logger>('logger');

return mailQueueProvider.process(async ({ data }) => {
logger.info(data);

await mailProvider.sendMail({
from: {
email: '[email protected]',
name: 'deusimar',
},
html: '<div><p>Olá {{name}}</p></div>',
subject: 'Ola test',
to: {
email: '[email protected]',
name: 'deusimar',
},
variables: {
name: 'Deusimar',
},
});
});
};

(async () => {
const container = await setupContainer(config);

await worker(container);
})();
40 changes: 19 additions & 21 deletions src/useCases/SendMail/SendMail.ts
Original file line number Diff line number Diff line change
@@ -1,37 +1,35 @@
import { AppContainer } from '~infra/bootstrap/container';
import IMailProvider from '~infra/providers/MailProvider/models/IMailProvider';
import IQueueProvider from '~infra/providers/QueueProvider/models/IQueueProvider';
import IMailQueueProvider from '~infra/providers/QueueProvider/models/IMailQueueProvider';
import { Logger } from '~infra/tools/log/types';

class SendMail {
private logger: Logger;
private mailProvider: IMailProvider;
private queueProvider: IQueueProvider;
private mailQueueProvider: IMailQueueProvider;

constructor(params: AppContainer) {
this.logger = params.logger;
this.mailProvider = params.mailProvider;
this.queueProvider = params.queueProvider;
this.mailQueueProvider = params.mailQueueProvider;
}

public async execute(input: string): Promise<void> {
await this.mailProvider.sendMail({
from: {
email: '[email protected]',
name: 'deusimar',
},
html: '<div><p>Olá {{name}}</p></div>',
subject: 'Ola test',
to: {
email: '[email protected]',
name: 'deusimar',
},
variables: {
name: input,
},
});
// await this.mailProvider.sendMail({
// from: {
// email: '[email protected]',
// name: 'deusimar',
// },
// html: '<div><p>Olá {{name}}</p></div>',
// subject: 'Ola test',
// to: {
// email: '[email protected]',
// name: 'deusimar',
// },
// variables: {
// name: input,
// },
// });

await this.queueProvider.add('Oi', input);
await this.mailQueueProvider.addJob('Oi');
}
}

Expand Down

0 comments on commit c05e240

Please sign in to comment.