refactor(v4.0.0-alpha): beginning of a new era

This commit is contained in:
Amruth Pillai
2023-11-05 12:31:42 +01:00
parent 0ba6a444e2
commit 22933bd412
505 changed files with 81829 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
import { Logger, Module } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { MailerModule } from "@nestjs-modules/mailer";
import * as nodemailer from "nodemailer";
import { Config } from "@/server/config/schema";
import { MailService } from "./mail.service";
const emptyTransporter = nodemailer.createTransport({});
@Module({
imports: [
MailerModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService<Config>) => {
const smtpUrl = configService.get("SMTP_URL");
if (!smtpUrl) {
Logger.warn(
"Since `SMTP_URL` is not set, emails would be logged to the console instead. This is not recommended for production environments.",
"MailModule",
);
}
return {
transport: smtpUrl || emptyTransporter,
defaults: { from: "Reactive Resume <noreply@rxresu.me>" },
};
},
}),
],
providers: [MailService],
exports: [MailService],
})
export class MailModule {}

View File

@@ -0,0 +1,24 @@
import { Injectable, Logger } from "@nestjs/common";
import { ConfigService } from "@nestjs/config";
import { ISendMailOptions, MailerService } from "@nestjs-modules/mailer";
import { Config } from "@/server/config/schema";
@Injectable()
export class MailService {
constructor(
private readonly configService: ConfigService<Config>,
private readonly mailerService: MailerService,
) {}
async sendEmail(options: ISendMailOptions) {
const smtpUrl = this.configService.get("SMTP_URL");
// If `SMTP_URL` is not set, log the email to the console
if (!smtpUrl) {
return Logger.log(options, "MailService#sendEmail");
}
return this.mailerService.sendMail(options);
}
}