forked from jsnbuchanan/crowd-funder-for-time-pwa
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.
188 lines
7.6 KiB
Markdown
188 lines
7.6 KiB
Markdown
# 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 contacts` → `this.$insertContact(contact)`
|
|
|
|
### [ ] 6. Replace Other Raw SQL
|
|
- [ ] `SELECT * FROM settings` → `this.$accountSettings()`
|
|
- [ ] `UPDATE settings` → `this.$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 |