Skip to content

Latest commit

 

History

History
144 lines (119 loc) · 4.95 KB

File metadata and controls

144 lines (119 loc) · 4.95 KB

TablesDB Migration Summary

Overview

Successfully migrated WhisperRNote's Appwrite database layer from the legacy Databases API to the new TablesDB API terminology while maintaining full backward compatibility.

Changes Made

1. Core Client Updates (src/lib/appwrite/core/client.ts)

  • Added TablesDB import from appwrite SDK
  • Instantiated tablesDB service instance alongside existing services
  • Exported tablesDB for use across the application

2. Database Operation Migrations

API Method Replacements

Old (Databases) New (TablesDB)
databases.createDocument() tablesDB.createRow()
databases.getDocument() tablesDB.getRow()
databases.updateDocument() tablesDB.updateRow()
databases.deleteDocument() tablesDB.deleteRow()
databases.listDocuments() tablesDB.listRows()

Parameter Structure Changes

// Old: databases.createDocument
databases.createDocument(
  databaseId,
  collectionId,
  documentId,
  data,
  permissions
)

// New: tablesDB.createRow
tablesDB.createRow({
  databaseId,
  tableId: collectionId,
  rowId: documentId,
  data,
  permissions
})

Response Structure Changes

// Old: response.documents
const result = await databases.listDocuments(...)
result.documents  // Array of documents

// New: response.rows
const result = await tablesDB.listRows(...)
result.rows  // Array of rows

3. Migrated Modules

Core Data Modules

  • Notes (src/lib/appwrite/notes/index.ts)

    • All CRUD operations migrated
    • Tag pivot table operations updated
    • Revision logging updated
  • Tags (src/lib/appwrite/tags/index.ts)

    • Tag CRUD operations migrated
    • Usage count adjustments updated
  • API Keys (src/lib/appwrite/apikeys/index.ts)

    • API key management migrated
  • Collaborators (src/lib/appwrite/collaborators/index.ts)

    • Note sharing operations migrated
    • Permission management updated

Support Modules

  • User Profile (src/lib/appwrite/user-profile.ts)

    • User CRUD operations migrated
    • User search functionality updated
  • Usage Metrics (src/lib/appwrite/usage/metrics.ts)

    • Count operations migrated for notes, API keys, collaborators
  • Permissions

    • src/lib/appwrite/permissions/notes.ts - Note permission handling
    • src/lib/appwrite/permissions/extensions.ts - Extension permission handling

4. Legacy Compatibility Layer (src/lib/appwrite.ts)

  • Added TablesDB import and instantiation
  • Exported tablesDB in named exports
  • Added tablesDB to default export object
  • Maintained all existing function signatures for backward compatibility

Database Configuration

The database configuration is stored in appwrite.config.json:

  • Database ID: 67ff05a9000296822396 (whisperrnote)
  • Tables include: users, notes, tags, apikeys, collaborators, etc.
  • All tables have rowSecurity: true enabled
  • Permissions managed through Role-based access control

Testing

✅ Build successful (npm run build) ✅ No breaking changes to component interfaces ✅ All modular layers migrated consistently ✅ Response structure compatibility maintained through adapter patterns

Benefits

  1. Future-proof: Uses Appwrite's new TablesDB terminology
  2. Non-breaking: Maintains existing API surface
  3. Consistent: Unified approach across all data modules
  4. Maintainable: Clear separation between legacy and new code

Next Steps

  • Push changes to repository when authentication is configured
  • Monitor production deployment for any edge cases
  • Consider deprecating legacy src/lib/notes.ts and similar files in favor of modular src/lib/appwrite/* structure
  • Update any server-side API routes that may still use old Databases terminology

Files Changed (21 files)

  1. src/lib/appwrite/core/client.ts - Added TablesDB
  2. src/lib/appwrite/notes/index.ts - Migrated all note operations
  3. src/lib/appwrite/tags/index.ts - Migrated tag operations
  4. src/lib/appwrite/apikeys/index.ts - Migrated API key operations
  5. src/lib/appwrite/collaborators/index.ts - Migrated collaboration
  6. src/lib/appwrite/user-profile.ts - Migrated user operations
  7. src/lib/appwrite/usage/metrics.ts - Migrated counting operations
  8. src/lib/appwrite/permissions/notes.ts - Updated note permissions
  9. src/lib/appwrite/permissions/extensions.ts - Updated extension permissions
  10. src/lib/appwrite.ts - Added TablesDB exports
  11. appwrite.config.json - Database configuration (new file)

Commit Details

Commit: 4daa09f
Message: Migrate Appwrite database layer to TablesDB API
Files Changed: 21
Insertions: +7757
Deletions: -606

Important Notes

  • The databases service instance is still available for any legacy code
  • Both databases and tablesDB can coexist during transition period
  • All new code should use tablesDB for consistency with Appwrite's direction
  • The migration maintains data structure compatibility - no database schema changes required