aboutsummaryrefslogtreecommitdiff
path: root/services/docker/mail-server/aws-sendmail/app.ts
diff options
context:
space:
mode:
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/app.ts')
-rw-r--r--services/docker/mail-server/aws-sendmail/app.ts32
1 files changed, 32 insertions, 0 deletions
diff --git a/services/docker/mail-server/aws-sendmail/app.ts b/services/docker/mail-server/aws-sendmail/app.ts
new file mode 100644
index 0000000..e3554d7
--- /dev/null
+++ b/services/docker/mail-server/aws-sendmail/app.ts
@@ -0,0 +1,32 @@
+import { Hono } from "@hono/hono";
+
+import { Logger, setLogger } from "./logger.ts";
+import { Config, setConfig } from "./config.ts";
+import { DbService } from "./db.ts";
+import { MailDeliverer } from "./mail.ts";
+import { DovecotMailDeliverer } from "./dovecot.ts";
+
+export abstract class AppBase {
+ protected readonly db: DbService;
+ protected readonly localDeliverer: MailDeliverer;
+
+ constructor() {
+ setLogger(new Logger("log"));
+ setConfig(new Config());
+
+ this.db = new DbService();
+ this.localDeliverer = new DovecotMailDeliverer();
+ }
+
+ protected abstract get outboundMailDeliverer(): MailDeliverer;
+ protected setupHono(_hono: Hono): Promise<void> {
+ return Promise.resolve();
+ }
+
+ async run(): Promise<void> {
+ const hono = new Hono();
+ await this.setupHono(hono);
+
+ Deno.serve(hono.fetch);
+ }
+}