forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
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}