import { SendEmailCommand, SESv2Client } from '@aws-sdk/client-sesv2'
import { MailerModule } from '@nestjs-modules/mailer'
import { Module } from '@nestjs/common'
import { join } from 'node:path'
import { EMAIL_OPTIONS, SESConfig } from '../../config'
import { MjmlAdapter } from './adapters'
import { EmailService } from './email.service'

const sesClient = new SESv2Client(SESConfig)

@Module({
	imports: [
		MailerModule.forRoot({
			transport: {
				SES: { sesClient, SendEmailCommand },
			},
			defaults: {
				from: EMAIL_OPTIONS.FROM_EMAIL,
			},
			template: {
				dir: join(__dirname, './assets/templates/mjml'),
				adapter: new MjmlAdapter(),
				options: {
					strict: true,
				},
			},
		}),
	],
	providers: [EmailService],
	exports: [EmailService],
})
export class EmailModule {}
