forked from trent_larson/crowd-funder-for-time-pwa
Finalize Dexie-to-SQLite migration prep: docs, circular dep removal, SQL helpers, tests
- Removed all vestigial Dexie/USE_DEXIE_DB references from code and docs - Centralized DB logic in PlatformServiceMixin; resolved logger/databaseUtil circular dependency - Modularized SQL helpers (`$generateInsertStatement`, `$generateUpdateStatement`) and added unit tests - Created/updated migration tracking docs and helper script for cross-machine progress - Confirmed all lint/type checks and tests pass; ready for systematic file migration
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
|
||||
The Database Migration feature allows you to compare and migrate data between Dexie (IndexedDB) and SQLite databases in the TimeSafari application. This is particularly useful during the transition from the old Dexie-based storage system to the new SQLite-based system.
|
||||
|
||||
**⚠️ UPDATE**: The migration is now controlled through the **PlatformServiceMixin** rather than a `USE_DEXIE_DB` constant. This provides a cleaner, more maintainable approach to database access control.
|
||||
|
||||
## Features
|
||||
|
||||
### 1. Database Comparison
|
||||
@@ -29,16 +31,11 @@ The Database Migration feature allows you to compare and migrate data between De
|
||||
|
||||
## Prerequisites
|
||||
|
||||
### Enable Dexie Database
|
||||
### Enable Dexie Database Access
|
||||
|
||||
Before using the migration features, you must enable the Dexie database by setting:
|
||||
Before using the migration features, you must ensure the Dexie database is accessible for migration purposes. The migration tools will automatically handle database access through the PlatformServiceMixin.
|
||||
|
||||
```typescript
|
||||
// In constants/app.ts
|
||||
export const USE_DEXIE_DB = true;
|
||||
```
|
||||
|
||||
**Note**: This should only be enabled temporarily during migration. Remember to set it back to `false` after migration is complete.
|
||||
**Note**: The migration tools are designed to work with both databases simultaneously during the migration process.
|
||||
|
||||
## Accessing the Migration Interface
|
||||
|
||||
@@ -140,11 +137,6 @@ The settings migration process:
|
||||
|
||||
### Common Issues
|
||||
|
||||
#### Dexie Database Not Enabled
|
||||
|
||||
**Error**: "Dexie database is not enabled"
|
||||
**Solution**: Set `USE_DEXIE_DB = true` in `constants/app.ts`
|
||||
|
||||
#### Database Connection Issues
|
||||
|
||||
**Error**: "Failed to retrieve Dexie contacts"
|
||||
@@ -188,7 +180,7 @@ The settings migration process:
|
||||
|
||||
1. **Verify** that data was migrated correctly
|
||||
2. **Test** the application functionality
|
||||
3. **Disable** Dexie database (`USE_DEXIE_DB = false`)
|
||||
3. **Use PlatformServiceMixin** for all new database operations
|
||||
4. **Clean up** any temporary files or exports
|
||||
|
||||
## Technical Details
|
||||
@@ -290,6 +282,23 @@ For issues with the Database Migration feature:
|
||||
- **Data Integrity**: Migration preserves data integrity and handles conflicts gracefully
|
||||
- **Audit Trail**: Export functionality provides an audit trail of migration operations
|
||||
|
||||
## PlatformServiceMixin Integration
|
||||
|
||||
After migration, all database operations should use the PlatformServiceMixin:
|
||||
|
||||
```typescript
|
||||
// Use mixin methods for database access
|
||||
const contacts = await this.$contacts();
|
||||
const settings = await this.$settings();
|
||||
const result = await this.$db("SELECT * FROM contacts WHERE did = ?", [accountDid]);
|
||||
```
|
||||
|
||||
This provides:
|
||||
- **Caching**: Automatic caching for performance
|
||||
- **Error Handling**: Consistent error handling
|
||||
- **Type Safety**: Enhanced TypeScript integration
|
||||
- **Code Reduction**: Up to 80% reduction in boilerplate
|
||||
|
||||
---
|
||||
|
||||
**Note**: This migration tool is designed for the transition period between database systems. Once migration is complete and verified, the Dexie database should be disabled to avoid confusion and potential data conflicts.
|
||||
**Note**: This migration tool is designed for the transition period between database systems. Once migration is complete and verified, the Dexie database should be disabled to avoid confusion and potential data conflicts. All new development should use the PlatformServiceMixin for database operations.
|
||||
|
||||
Reference in New Issue
Block a user