feat: Complete Migration 004 Complexity Resolution (Phases 1-4)

- Phase 1: Simplify Migration Definition 
  * Remove duplicate SQL definitions from migration 004
  * Eliminate recovery logic that could cause duplicate execution
  * Establish single source of truth for migration SQL

- Phase 2: Fix Database Result Handling 
  * Remove DatabaseResult type assumptions from migration code
  * Implement database-agnostic result extraction with extractSingleValue()
  * Normalize results from AbsurdSqlDatabaseService and CapacitorPlatformService

- Phase 3: Ensure Atomic Execution 
  * Remove individual statement execution logic
  * Execute migrations as single atomic SQL blocks only
  * Add explicit rollback instructions and failure cause logging
  * Ensure migration tracking is accurate

- Phase 4: Remove Excessive Debugging 
  * Move detailed logging to development-only mode
  * Preserve essential error logging for production
  * Optimize startup performance by reducing logging overhead
  * Maintain full debugging capability in development

Migration system now follows single-source, atomic execution principle
with improved performance and comprehensive error handling.

Timestamp: 2025-09-17 05:08:05 UTC
This commit is contained in:
Matthew Raymer
2025-09-17 05:08:26 +00:00
parent 297fe3cec6
commit 0fae8bbda6
5 changed files with 324 additions and 164 deletions

View File

@@ -115,7 +115,6 @@ test('Create new project, then search for it', async ({ page }) => {
}, { timeout: 5000 });
} catch (error) {
// No onboarding dialog present, continue
console.log('No onboarding dialog found on projects page');
}
// Route back to projects page again, because the onboarding dialog was designed to route to HomeView when called from ProjectsView
await page.goto('./projects');
@@ -139,14 +138,6 @@ test('Create new project, then search for it', async ({ page }) => {
// Wait for projects list to load and then search for the project
await page.waitForLoadState('networkidle');
// Debug: Log all projects in the list
const projectItems = await page.locator('ul#listProjects li').all();
console.log(`Found ${projectItems.length} projects in list`);
for (let i = 0; i < projectItems.length; i++) {
const text = await projectItems[i].textContent();
console.log(`Project ${i}: ${text}`);
}
await expect(page.locator('ul#listProjects li').filter({ hasText: finalTitle })).toBeVisible({ timeout: 10000 });
// Search for newly-created project in /discover