// ============================================================================= // TOM Generator Evidence Store // Shared in-memory storage for evidence documents // ============================================================================= import { EvidenceDocument, DocumentType } from './types' interface StoredEvidence { tenantId: string documents: EvidenceDocument[] } class InMemoryEvidenceStore { private store: Map = new Map() async getAll(tenantId: string): Promise { const stored = this.store.get(tenantId) return stored?.documents || [] } async getById(tenantId: string, documentId: string): Promise { const stored = this.store.get(tenantId) return stored?.documents.find((d) => d.id === documentId) || null } async add(tenantId: string, document: EvidenceDocument): Promise { const stored = this.store.get(tenantId) || { tenantId, documents: [] } stored.documents.push(document) this.store.set(tenantId, stored) return document } async update(tenantId: string, documentId: string, updates: Partial): Promise { const stored = this.store.get(tenantId) if (!stored) return null const index = stored.documents.findIndex((d) => d.id === documentId) if (index === -1) return null stored.documents[index] = { ...stored.documents[index], ...updates } this.store.set(tenantId, stored) return stored.documents[index] } async delete(tenantId: string, documentId: string): Promise { const stored = this.store.get(tenantId) if (!stored) return false const initialLength = stored.documents.length stored.documents = stored.documents.filter((d) => d.id !== documentId) this.store.set(tenantId, stored) return stored.documents.length < initialLength } async getByType(tenantId: string, type: DocumentType): Promise { const stored = this.store.get(tenantId) return stored?.documents.filter((d) => d.documentType === type) || [] } async getByStatus(tenantId: string, status: string): Promise { const stored = this.store.get(tenantId) return stored?.documents.filter((d) => d.status === status) || [] } } // Singleton instance for the application export const evidenceStore = new InMemoryEvidenceStore()