mirror of
https://github.com/kennethnym/aris.git
synced 2026-03-21 09:31:18 +00:00
refactor: consolidate backend services
Replace per-source services (LocationService, WeatherService, TflService, FeedEngineService) with a single UserSessionManager that owns all per-user state. Source creation is delegated to thin FeedSourceProvider implementations per source type. Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
24
apps/aris-backend/src/session/user-session.ts
Normal file
24
apps/aris-backend/src/session/user-session.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { FeedEngine, type FeedSource } from "@aris/core"
|
||||
|
||||
export class UserSession {
|
||||
readonly engine: FeedEngine
|
||||
private sources = new Map<string, FeedSource>()
|
||||
|
||||
constructor(sources: FeedSource[]) {
|
||||
this.engine = new FeedEngine()
|
||||
for (const source of sources) {
|
||||
this.sources.set(source.id, source)
|
||||
this.engine.register(source)
|
||||
}
|
||||
this.engine.start()
|
||||
}
|
||||
|
||||
getSource<T extends FeedSource>(sourceId: string): T | undefined {
|
||||
return this.sources.get(sourceId) as T | undefined
|
||||
}
|
||||
|
||||
destroy(): void {
|
||||
this.engine.stop()
|
||||
this.sources.clear()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user