From ee338238805953b505459eac09aa07610865ebf6 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Wed, 30 Apr 2025 00:20:23 +0800 Subject: HALF WORK!: 2025-4-30 3 --- services/docker/mail-server/aws-sendmail/db.ts | 19 +++--------------- services/docker/mail-server/aws-sendmail/main.ts | 6 ------ .../docker/mail-server/aws-sendmail/traffic.ts | 23 ++++++++++++++-------- 3 files changed, 18 insertions(+), 30 deletions(-) (limited to 'services/docker/mail-server/aws-sendmail') 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 { - 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): Promise { + 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)); } } -- cgit v1.2.3