Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 44 lines 1.1 kB view raw
1import {SafelinkClient} from './cache/safelinkClient.js' 2import {type Config} from './config.js' 3import Database from './db/index.js' 4import {MetricsClient} from './metrics.js' 5 6export type AppContextOptions = { 7 cfg: Config 8 db: Database 9} 10 11export class AppContext { 12 cfg: Config 13 db: Database 14 safelinkClient: SafelinkClient 15 abortController = new AbortController() 16 metrics: MetricsClient 17 18 constructor(private opts: AppContextOptions) { 19 this.cfg = this.opts.cfg 20 this.db = this.opts.db 21 this.safelinkClient = new SafelinkClient({ 22 cfg: this.opts.cfg.service, 23 db: this.opts.db, 24 }) 25 this.metrics = new MetricsClient({ 26 trackingEndpoint: this.opts.cfg.service.metricsApiHost, 27 }) 28 } 29 30 static async fromConfig(cfg: Config, overrides?: Partial<AppContextOptions>) { 31 const db = Database.postgres({ 32 url: cfg.db.url, 33 schema: cfg.db.schema, 34 poolSize: cfg.db.pool.size, 35 poolMaxUses: cfg.db.pool.maxUses, 36 poolIdleTimeoutMs: cfg.db.pool.idleTimeoutMs, 37 }) 38 return new AppContext({ 39 cfg, 40 db, 41 ...overrides, 42 }) 43 } 44}