/** * Backend Event Persistence Handler * * Scalable pattern for handling event-to-DB persistence. * Registers event handlers that persist data to the database when events fire. * * Features: * - Dynamic repository and mapper loading (avoids circular deps) * - Deduplication via unique constraints * - Bulk event support * - Configurable per-domain * * @example * ```typescript * // Register file upload persistence * BackendEventPersistenceHandler.register({ * domain: 'files', * events: { * 'files:upload:uploaded': { * extractPayload: (p) => p.result, * isBulk: false, * }, * 'files:upload:bulk:uploaded': { * extractPayload: (p) => p.result?.results ?? [], * isBulk: true, * }, * }, * loadDependencies: async () => ({ * repository: FilesRepository.create(), * mapper: FilesMapper, * }), * mapToDbRow: (mapper, item) => mapper.toDbRow(item), * }); * ``` */ import type { DomainPersistenceConfig } from '@plyaz/types/core'; /** * Backend Event Persistence Handler * * Manages event subscriptions for persisting data to the database. * Provides a scalable, reusable pattern for all domains. */ export declare class BackendEventPersistenceHandler { private static registeredDomains; private static cleanupFns; /** * Register event persistence for a domain */ static register(config: DomainPersistenceConfig): void; /** * Persist a single item to the database */ private static persistSingle; /** * Persist multiple items to the database */ private static persistBulk; /** * Check if error is a duplicate key/unique constraint error */ private static isDuplicateError; /** * Unregister all event persistence handlers */ static unregisterAll(): void; /** * Check if a domain is registered */ static isRegistered(domain: string): boolean; /** * Get list of registered domains */ static getRegisteredDomains(): string[]; } //# sourceMappingURL=BackendEventPersistenceHandler.d.ts.map