diff options
Diffstat (limited to 'services/docker/mail-server')
| -rw-r--r-- | services/docker/mail-server/aws-sendmail/db.ts | 19 | ||||
| -rw-r--r-- | services/docker/mail-server/aws-sendmail/main.ts | 6 | ||||
| -rw-r--r-- | services/docker/mail-server/aws-sendmail/traffic.ts | 23 | 
3 files changed, 18 insertions, 30 deletions
| diff --git a/services/docker/mail-server/aws-sendmail/db.ts b/services/docker/mail-server/aws-sendmail/db.ts index ced5c19..6a7b100 100644 --- a/services/docker/mail-server/aws-sendmail/db.ts +++ b/services/docker/mail-server/aws-sendmail/db.ts @@ -1,9 +1,7 @@  // spellchecker: words sqlocal kysely insertable updateable  import { SQLocalKysely } from "sqlocal/kysely"; -import { Generated, Kysely, Migration, Migrator } from "kysely"; - -import { Mail } from "./mail.ts"; +import { Generated, Insertable, Kysely, Migration, Migrator } from "kysely";  const tableNames = {    mail: { @@ -91,19 +89,8 @@ export class DbService {      await this._migrator.migrateToLatest();    } -  async addMail(mail: Mail): Promise<void> { -    const { raw, messageId, awsMessageId } = mail; -    if (messageId == null) { -      // TODO: Better error. -      throw new Error( -        "Failed to add mail to database. Mail has no message id.", -      ); -    } -    await this._db.insertInto(tableNames.mail.table).values({ -      raw, -      message_id: messageId, -      aws_message_id: awsMessageId, -    }) +  async addMail(mail: Insertable<MailTable>): Promise<void> { +    await this._db.insertInto(tableNames.mail.table).values(mail)        .executeTakeFirstOrThrow();    } diff --git a/services/docker/mail-server/aws-sendmail/main.ts b/services/docker/mail-server/aws-sendmail/main.ts index bb933b1..7702c75 100644 --- a/services/docker/mail-server/aws-sendmail/main.ts +++ b/services/docker/mail-server/aws-sendmail/main.ts @@ -2,12 +2,6 @@ import { AwsContext } from "./aws.ts";  import { MailTrafficHandler } from "./traffic.ts";  import { Logger, setLogger } from "./logger.ts"; -class BugError extends Error { -} - -function warn(message: string) { -} -  class App {    readonly aws = new AwsContext();    readonly mailTrafficDeliverer = new MailTrafficHandler(this.aws); diff --git a/services/docker/mail-server/aws-sendmail/traffic.ts b/services/docker/mail-server/aws-sendmail/traffic.ts index 87e6dee..f31e9ae 100644 --- a/services/docker/mail-server/aws-sendmail/traffic.ts +++ b/services/docker/mail-server/aws-sendmail/traffic.ts @@ -1,14 +1,21 @@ -import { MailDeliverer } from "./deliver.ts"; -import { DovecotMailDeliverer } from "./delivers/dovecot.ts"; +import { MailDeliverer } from "./mail.ts";  import { AwsContext } from "./aws.ts"; +import { DbService } from "./db.ts"; +import { DovecotMailDeliverer } from "./delivers/dovecot.ts";  import { AwsMailDeliverer } from "./delivers/aws.ts"; -export class MailTrafficHandler { -  receiver: MailDeliverer; -  sender: MailDeliverer; +export abstract class MailTrafficHandler { +  constructor( +    public readonly receiver: MailDeliverer, +    public readonly sender: MailDeliverer, +  ) {} +} -  constructor(aws: AwsContext) { -    this.receiver = new DovecotMailDeliverer(); -    this.sender = new AwsMailDeliverer(aws); +export class AwsRelayTrafficHandler extends MailTrafficHandler { +  constructor( +    private readonly db: DbService, +    private readonly aws: AwsContext, +  ) { +    super(new DovecotMailDeliverer(), new AwsMailDeliverer(aws));    }  } | 
