feat: add v5.8.0 features - transactions, pagination, and comprehensive docs
**Transaction System (TIER 1.2)** - Atomic operations with automatic rollback - 36 unit tests + 35 integration tests passing - Full documentation in docs/transactions.md **Duplicate Check Optimization (TIER 1.4)** - Optimized from O(n) to O(log n) using GraphAdjacencyIndex - Uses LSM-tree for efficient lookups - Tests verify performance improvements **GraphIndex Pagination (TIER 1.5)** - Production-scale pagination for high-degree nodes - Backward compatible API - 18 pagination tests passing **Comprehensive Filter Documentation (TIER 1.6)** - Complete operator reference (15 operators) - Compound filters (anyOf, allOf, nested logic) - Common query patterns and troubleshooting guide - 642 lines of new documentation **README Updates** - Added Filter & Query Syntax Guide to Essential Reading - Added Transactions to Core Concepts section All changes tested and production-ready for v5.8.0 release. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
52e961760d
commit
e40fee39d8
21 changed files with 5657 additions and 182 deletions
103
src/transaction/types.ts
Normal file
103
src/transaction/types.ts
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
/**
|
||||
* Transaction System Types
|
||||
*
|
||||
* Provides atomicity for Brainy operations - all succeed or all rollback.
|
||||
* Prevents partial failures that leave system in inconsistent state.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Transaction state
|
||||
*/
|
||||
export type TransactionState =
|
||||
| 'pending' // Created but not executed
|
||||
| 'executing' // Currently executing operations
|
||||
| 'committed' // Successfully committed
|
||||
| 'rolling_back' // Rolling back due to failure
|
||||
| 'rolled_back' // Successfully rolled back
|
||||
|
||||
/**
|
||||
* Rollback action - undoes an operation
|
||||
* Must be idempotent (safe to call multiple times)
|
||||
*/
|
||||
export type RollbackAction = () => Promise<void>
|
||||
|
||||
/**
|
||||
* Operation that can be executed and rolled back
|
||||
*/
|
||||
export interface Operation {
|
||||
/**
|
||||
* Execute the operation
|
||||
* @returns Rollback action to undo this operation (or undefined if no rollback needed)
|
||||
*/
|
||||
execute(): Promise<RollbackAction | undefined>
|
||||
|
||||
/**
|
||||
* Optional: Name of operation for debugging
|
||||
*/
|
||||
readonly name?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* Transaction context passed to user functions
|
||||
*/
|
||||
export interface TransactionContext {
|
||||
/**
|
||||
* Add an operation to the transaction
|
||||
*/
|
||||
addOperation(operation: Operation): void
|
||||
|
||||
/**
|
||||
* Get current transaction state
|
||||
*/
|
||||
getState(): TransactionState
|
||||
|
||||
/**
|
||||
* Get number of operations in transaction
|
||||
*/
|
||||
getOperationCount(): number
|
||||
}
|
||||
|
||||
/**
|
||||
* Function that builds a transaction
|
||||
*/
|
||||
export type TransactionFunction<T> = (ctx: TransactionContext) => Promise<T>
|
||||
|
||||
/**
|
||||
* Transaction execution result
|
||||
*/
|
||||
export interface TransactionResult<T> {
|
||||
/**
|
||||
* Result value from user function
|
||||
*/
|
||||
value: T
|
||||
|
||||
/**
|
||||
* Number of operations executed
|
||||
*/
|
||||
operationCount: number
|
||||
|
||||
/**
|
||||
* Execution time in milliseconds
|
||||
*/
|
||||
executionTimeMs: number
|
||||
}
|
||||
|
||||
/**
|
||||
* Transaction execution options
|
||||
*/
|
||||
export interface TransactionOptions {
|
||||
/**
|
||||
* Timeout in milliseconds (default: 30000 = 30 seconds)
|
||||
*/
|
||||
timeout?: number
|
||||
|
||||
/**
|
||||
* Whether to log transaction execution (default: false)
|
||||
*/
|
||||
logging?: boolean
|
||||
|
||||
/**
|
||||
* Maximum number of rollback retry attempts (default: 3)
|
||||
*/
|
||||
maxRollbackRetries?: number
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue