# PowerShell script to add ConfigureAwait(false) to all await statements in Infrastructure and Application layers # This improves performance and avoids potential deadlocks $projectRoot = "c:\Users\yaoji\git\ColaCoder\product-master\colaflow-api" $paths = @( "$projectRoot\src\Modules\Identity\ColaFlow.Modules.Identity.Infrastructure", "$projectRoot\src\Modules\Identity\ColaFlow.Modules.Identity.Application" ) $filesUpdated = 0 $awaitStatementsUpdated = 0 foreach ($basePath in $paths) { Write-Host "Processing path: $basePath" -ForegroundColor Cyan $files = Get-ChildItem -Path $basePath -Recurse -Filter "*.cs" | Where-Object { $_.FullName -notmatch "\\bin\\" -and $_.FullName -notmatch "\\obj\\" -and $_.FullName -notmatch "Migrations" } foreach ($file in $files) { $content = Get-Content $file.FullName -Raw $originalContent = $content # Pattern 1: await ... ; (without ConfigureAwait) # Matches: await SomeMethodAsync(); but not: await SomeMethodAsync().ConfigureAwait(false); $pattern1 = '(\s+await\s+[^;\r\n]+?)(\s*;)' # Check if file has await statements that don't already have ConfigureAwait if ($content -match 'await\s+' -and $content -notmatch '\.ConfigureAwait\(') { # Replace await statements with ConfigureAwait(false) $newContent = $content -replace $pattern1, '$1.ConfigureAwait(false)$2' # Only write if content changed if ($newContent -ne $originalContent) { # Count how many await statements were updated $matches = ([regex]::Matches($originalContent, 'await\s+')).Count $awaitStatementsUpdated += $matches Set-Content -Path $file.FullName -Value $newContent -NoNewline $filesUpdated++ Write-Host " Updated: $($file.Name) ($matches await statements)" -ForegroundColor Green } } } } Write-Host "`nSummary:" -ForegroundColor Yellow Write-Host " Files updated: $filesUpdated" -ForegroundColor Green Write-Host " Await statements updated: ~$awaitStatementsUpdated" -ForegroundColor Green Write-Host "`nNote: Please review changes and rebuild to ensure correctness." -ForegroundColor Yellow