fterh/heimdall

View on GitHub
lib/commands/list.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import { ParsedMail } from "mailparser";
import { email, operationalDomain } from "../env";
import { Commands } from "../commandSet";
import Alias from "../models/Alias";
import generateReplyEmail from "../generateReplyEmail";
import sendEmail from "../sendEmail";

export default async (parsedMail: ParsedMail): Promise<void> => {
  const getAliasesResults = await Alias.getAllAliases();

  if (getAliasesResults.aliases.length === 0) {
    await sendEmail({
      from: `${Commands.List}@${operationalDomain}`,
      to: [email],
      subject: `Alias list (generated on: ${new Date()})`,
      text: "No aliases found."
    });
    return;
  }

  let output = "Alias : Description\n";
  getAliasesResults.aliases.forEach(alias => {
    output += `${alias.value} : ${alias.description}\n`;
  });

  if (getAliasesResults.lastEvaluatedKey !== undefined) {
    output +=
      "There might be more records in the results set. Check the logs and database for more information.";
  }

  await sendEmail(
    generateReplyEmail(
      {
        from: {
          name: "List",
          address: `${Commands.List}@${operationalDomain}`
        },
        to: [email],
        subject: parsedMail.subject,
        text: output
      },
      parsedMail
    )
  );
};