Files
crowd-funder-from-jason/docs/migration-templates/COMPLETE_MIGRATION_CHECKLIST.md
Matthew Raymer e925b4c6a8 Complete ProjectsView.vue Triple Migration Pattern with literal extraction
Apply full database migration (databaseUtil → PlatformServiceMixin), replace
raw SQL with service methods, migrate 3 notifications to helper methods.
Preserve 1 complex modal for advanced routing features while extracting
all literal strings to NOTIFY_CAMERA_SHARE_METHOD constant.

Add computed properties (offerTabClasses, projectTabClasses) to streamline
template logic and comprehensive JSDoc documentation for all methods.
Update migration templates to mandate literal extraction from complex modals.

ProjectsView.vue now appropriately incomplete: helper methods for simple
notifications, raw $notify preserved only where advanced features required.
2025-07-07 08:00:25 +00:00

7.6 KiB

Complete Migration Checklist - MANDATORY STEPS

Overview

This checklist ensures NO migration steps are forgotten. Every component migration MUST complete ALL sections.

⚠️ CRITICAL: Triple Migration Pattern

🔑 The Complete Pattern (ALL 3 REQUIRED)

  1. Database Migration: Replace legacy databaseUtil calls with PlatformServiceMixin methods
  2. SQL Abstraction: Replace raw SQL queries with service methods
  3. Notification Migration: Replace $notify() calls with helper methods + constants

INCOMPLETE: Any migration missing one of these steps COMPLETE: All three patterns implemented

Pre-Migration Assessment

Date Time Context

  • Always use system date command to establish accurate time context
  • Use time log to track project progress
  • Use historical time durations to improve estimates

[ ] 1. Identify Legacy Patterns

  • Count databaseUtil imports and calls
  • Count raw SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • Count $notify() calls
  • Count logConsoleAndDb() calls
  • Document total issues found

[ ] 2. Verify PlatformServiceMixin Setup

  • Component already imports PlatformServiceMixin
  • Component already has mixins: [PlatformServiceMixin]
  • If missing, add mixin first

Phase 1: Database Migration

[ ] 3. Replace Database Utility Calls

  • Remove import * as databaseUtil from "../db/databaseUtil"
  • Replace databaseUtil.retrieveSettingsForActiveAccount()this.$accountSettings()
  • Replace databaseUtil.mapQueryResultToValues()this.$mapQueryResultToValues()
  • Replace other databaseUtil.* calls with mixin equivalents

[ ] 4. Replace Logging Calls

  • Remove import { logConsoleAndDb } from "../db/index"
  • Replace logConsoleAndDb()this.$logAndConsole()

Phase 2: SQL Abstraction Migration

[ ] 5. Replace Raw Contact Operations

  • SELECT * FROM contacts WHERE did = ?this.$getContact(did)
  • DELETE FROM contacts WHERE did = ?this.$deleteContact(did)
  • UPDATE contacts SET x = ? WHERE did = ?this.$updateContact(did, changes)
  • INSERT INTO contactsthis.$insertContact(contact)

[ ] 6. Replace Other Raw SQL

  • SELECT * FROM settingsthis.$accountSettings()
  • UPDATE settingsthis.$saveSettings(changes)
  • Generic queries → appropriate service methods
  • NO RAW SQL ALLOWED: All database operations through service layer

Phase 3: Notification Migration

[ ] 7. Add Notification Infrastructure

  • Add import: import { createNotifyHelpers, TIMEOUTS } from "@/utils/notify"
  • Add property: notify!: ReturnType<typeof createNotifyHelpers>;
  • Add initialization: created() { this.notify = createNotifyHelpers(this.$notify); }

[ ] 8. Add Notification Constants (if needed)

  • Review notification messages for reusable patterns
  • Add constants to src/constants/notifications.ts
  • Import constants: import { NOTIFY_X, NOTIFY_Y } from "@/constants/notifications"

[ ] 9. Replace Notification Calls

  • Warning: this.$notify({type: "warning"})this.notify.warning(CONSTANT.message, TIMEOUTS.LONG)
  • Error: this.$notify({type: "danger"})this.notify.error(CONSTANT.message, TIMEOUTS.LONG)
  • Success: this.$notify({type: "success"})this.notify.success(CONSTANT.message, TIMEOUTS.STANDARD)
  • Toast: this.$notify({type: "toast"})this.notify.toast(title, message, TIMEOUTS.SHORT)
  • Confirm: this.$notify({type: "confirm"})this.notify.confirm(message, onYes)
  • Standard patterns: Use this.notify.confirmationSubmitted(), this.notify.sent(), etc.

[ ] 10. Constants vs Literal Strings

  • Use constants for static, reusable messages
  • Use literal strings for dynamic messages with variables
  • Extract literals from complex modals - Even raw $notify calls should use constants for text
  • Document decision for each notification call

[ ] 11. Template Logic Streamlining

  • Review template for repeated expressions or complex logic
  • Move repeated function calls to computed properties
  • Simplify complex conditional logic with computed properties
  • Extract configuration objects to computed properties
  • Document computed properties with JSDoc comments
  • Use descriptive names for computed properties

Validation Phase

[ ] 12. Run Validation Script

  • Execute: scripts/validate-migration.sh
  • MUST show: "Technically Compliant" (not "Mixed Pattern")
  • Zero legacy patterns detected

[ ] 13. Run Linting

  • Execute: npm run lint-fix
  • Zero errors introduced
  • TypeScript compiles without errors

[ ] 14. Manual Code Review

  • NO databaseUtil imports or calls
  • NO raw SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • NO $notify() calls with object syntax
  • NO logConsoleAndDb() calls
  • ALL database operations through service methods
  • ALL notifications through helper methods

Documentation Phase

[ ] 15. Update Migration Documentation

  • Create docs/migration-testing/[COMPONENT]_MIGRATION.md
  • Document all changes made
  • Include before/after examples
  • Note validation results
  • Provide a guide to finding the components in the user interface

[ ] 16. Update Testing Tracker

  • Update docs/migration-testing/HUMAN_TESTING_TRACKER.md
  • Mark component as "Ready for Testing"
  • Include notes about migration completed

Human Testing Phase

[ ] 17. Test All Functionality

  • Core functionality works correctly
  • Database operations function properly
  • Notifications display correctly with proper timing
  • Error scenarios handled gracefully
  • Cross-platform compatibility (web/mobile)

[ ] 18. Confirm Testing Complete

  • User confirms component works correctly
  • Update testing tracker with results
  • Mark as "Human Tested" in validation script

Final Validation

[ ] 19. Comprehensive Check

  • Component shows as "Technically Compliant" in validation
  • All manual testing passed
  • Zero legacy patterns remain
  • Documentation complete
  • Ready for production

Wait for human confirmationb before proceeding to next file unless directly overidden.

🚨 FAILURE CONDITIONS

INCOMPLETE MIGRATION if ANY of these remain:

  • databaseUtil imports or calls
  • Raw SQL queries (SELECT, INSERT, UPDATE, DELETE)
  • $notify() calls with object syntax
  • logConsoleAndDb() calls
  • Missing notification helpers setup
  • Validation script shows "Mixed Pattern"

🎯 SUCCESS CRITERIA

COMPLETE MIGRATION requires ALL:

  • Zero legacy patterns detected
  • All database operations through service layer
  • All notifications through helper methods
  • Validation script shows "Technically Compliant"
  • Manual testing passed
  • Documentation complete

Templates and References

  • Migration Template: docs/migration-templates/component-migration.md
  • Notification Constants: src/constants/notifications.ts
  • PlatformServiceMixin: src/utils/PlatformServiceMixin.ts
  • Notification Helpers: src/utils/notify.ts
  • Validation Script: scripts/validate-migration.sh

⚠️ WARNING: This checklist exists because steps were previously forgotten. DO NOT skip any items. The triple migration pattern (Database + SQL + Notifications) is MANDATORY for all component migrations.

Author: Matthew Raymer
Date: 2024-07-07 Purpose: Prevent migration oversight by cementing ALL requirements