mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at ruby-v 33 lines 730 B view raw
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}