mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1import {Config} from './config.js'
2import Database from './db/index.js'
3
4export type AppContextOptions = {
5 cfg: Config
6 db: Database
7}
8
9export class AppContext {
10 cfg: Config
11 db: Database
12 abortController = new AbortController()
13
14 constructor(private opts: AppContextOptions) {
15 this.cfg = this.opts.cfg
16 this.db = this.opts.db
17 }
18
19 static async fromConfig(cfg: Config, overrides?: Partial<AppContextOptions>) {
20 const db = Database.postgres({
21 url: cfg.db.url,
22 schema: cfg.db.schema,
23 poolSize: cfg.db.pool.size,
24 poolMaxUses: cfg.db.pool.maxUses,
25 poolIdleTimeoutMs: cfg.db.pool.idleTimeoutMs,
26 })
27 return new AppContext({
28 cfg,
29 db,
30 ...overrides,
31 })
32 }
33}