Bluesky app fork with some witchin' additions 馃挮
at main 937 B view raw
1import {SafelinkClient} from './cache/safelinkClient.js' 2import {type Config} from './config.js' 3import Database from './db/index.js' 4 5export type AppContextOptions = { 6 cfg: Config 7 db: Database 8} 9 10export class AppContext { 11 cfg: Config 12 db: Database 13 safelinkClient: SafelinkClient 14 abortController = new AbortController() 15 16 constructor(private opts: AppContextOptions) { 17 this.cfg = this.opts.cfg 18 this.db = this.opts.db 19 this.safelinkClient = new SafelinkClient({ 20 cfg: this.opts.cfg.service, 21 db: this.opts.db, 22 }) 23 } 24 25 static async fromConfig(cfg: Config, overrides?: Partial<AppContextOptions>) { 26 const db = Database.postgres({ 27 url: cfg.db.url, 28 schema: cfg.db.schema, 29 poolSize: cfg.db.pool.size, 30 poolMaxUses: cfg.db.pool.maxUses, 31 poolIdleTimeoutMs: cfg.db.pool.idleTimeoutMs, 32 }) 33 return new AppContext({ 34 cfg, 35 db, 36 ...overrides, 37 }) 38 } 39}