Scratch space for learning atproto app development
1import { NodeOAuthClient } from '@atproto/oauth-client-node' 2import { Firehose } from '@atproto/sync' 3import { pino } from 'pino' 4 5import { createOAuthClient } from '#/auth/client' 6import { createDb, Database, migrateToLatest } from '#/db' 7import { createIngester } from '#/ingester' 8import { env } from '#/env' 9 10/** 11 * Application state passed to the router and elsewhere 12 */ 13export type AppContext = { 14 db: Database 15 ingester: Firehose 16 logger: pino.Logger 17 oauthClient: NodeOAuthClient 18 identityResolver: NodeOAuthClient['identityResolver'] 19} 20 21export async function createAppContext(): Promise<AppContext> { 22 const db = createDb(env.DB_PATH) 23 await migrateToLatest(db) 24 const oauthClient = await createOAuthClient(db) 25 const ingester = createIngester(db) 26 const logger = pino({ name: 'server', level: env.LOG_LEVEL }) 27 28 return { 29 db, 30 ingester, 31 logger, 32 oauthClient, 33 identityResolver: oauthClient.identityResolver, 34 } 35}