diff options
Diffstat (limited to 'services/docker/mail-server/aws-sendmail/app.ts')
-rw-r--r-- | services/docker/mail-server/aws-sendmail/app.ts | 32 |
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); + } +} |