UNPKG

prisma-zod-generator

Version:

Prisma 2+ generator to emit Zod schemas from your Prisma schema

122 lines (121 loc) 4 kB
/** * Transaction Safety & Data Integrity Utilities * * Comprehensive ACID transaction support, rollback mechanisms, * and data integrity validation for production financial systems */ import type { MutexLock } from './concurrency'; export interface TransactionContext { id: string; startTime: number; operations: TransactionOperation[]; rollbackHandlers: (() => Promise<void>)[]; status: 'pending' | 'committed' | 'rolled_back' | 'failed'; isolation_level: 'read_uncommitted' | 'read_committed' | 'repeatable_read' | 'serializable'; serializableLock?: MutexLock; } export interface TransactionOperation { id: string; type: 'create' | 'update' | 'delete' | 'external_api'; resource: string; data: any; timestamp: number; completed: boolean; rollback_data?: any; } export interface CompensationAction { operation: string; compensate: () => Promise<void>; description: string; } export declare class TransactionError extends Error { readonly transactionId: string; readonly operation?: string | undefined; readonly originalError?: Error | undefined; constructor(message: string, transactionId: string, operation?: string | undefined, originalError?: Error | undefined); } export declare class DataIntegrityError extends Error { readonly violationType: 'referential' | 'constraint' | 'consistency' | 'corruption'; readonly context?: Record<string, unknown> | undefined; constructor(message: string, violationType: 'referential' | 'constraint' | 'consistency' | 'corruption', context?: Record<string, unknown> | undefined); } /** * Transaction Manager for ACID compliance */ export declare class TransactionManager { private transactions; private globalMutex; private auditLog; /** * Start a new ACID transaction */ startTransaction(isolationLevel?: TransactionContext['isolation_level']): Promise<string>; /** * Execute operation within transaction context */ executeInTransaction<T>(transactionId: string, operation: () => Promise<T>, operationInfo: { type: TransactionOperation['type']; resource: string; description: string; rollback?: () => Promise<void>; }): Promise<T>; /** * Commit transaction with full ACID compliance */ commitTransaction(transactionId: string): Promise<void>; /** * Rollback transaction with compensation */ rollbackTransaction(transactionId: string): Promise<void>; /** * Validate data integrity across related entities */ validateDataIntegrity(data: { customers: Map<string, any>; subscriptions: Map<string, any>; licenses: Map<string, any>; }): Promise<{ valid: boolean; violations: Array<{ type: string; message: string; severity: 'error' | 'warning'; }>; }>; /** * Saga pattern for distributed transactions */ executeSaga(steps: Array<{ execute: () => Promise<any>; compensate: () => Promise<void>; description: string; }>): Promise<any[]>; /** * Get transaction audit log */ getAuditLog(filter?: { transactionId?: string; operation?: string; status?: string; startDate?: Date; endDate?: Date; }): Array<{ transactionId: string; operation: string; status: string; timestamp: Date; error?: string; }>; private executeWithIsolation; private validateTransactionConsistency; private generateTransactionId; private generateOperationId; } /** * Global transaction manager instance */ export declare const transactionManager: TransactionManager; /** * Decorator for transactional methods */ export declare function transactional(isolationLevel?: TransactionContext['isolation_level']): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;