ENISE / APPWRITE_MIGRATION_PLAN.md
tiffank1802
docs: Add Appwrite migration plan for future Tables API transition
4e6f7f4

Plan de Migration Appwrite: Databases → Tables API

État Actuel

Version SDK: appwrite>=1.0 API Utilisée: Databases (Service classique) Statut: ✅ Fonctionnel, mais deprecated

Warnings Observés

Appwrite 1.5+ introduit des avertissements pour les anciennes méthodes:

DeprecationWarning: ...

Les méthodes utilisées actuellement:

  • databases.get()
  • databases.create_collection()
  • databases.list_documents()
  • databases.create_document()
  • databases.update_document()
  • databases.delete_document()

Nouvelles API (Tables)

Appwrite transition vers:

  • databases.create_table() à la place de create_collection()
  • databases.create_row() à la place de create_document()
  • databases.list_rows() à la place de list_documents()
  • databases.get_row() à la place de get_document()
  • databases.update_row() à la place de update_document()
  • databases.delete_row() à la place de delete_document()

Timeline

  • Aujourd'hui: Code Appwrite actuel fonctionne parfaitement
  • Quelques mois: Les warnings vont augmenter
  • Futur: Les anciennes API seront supprimées (pas de date fixée)

Recommandations

Court terme (immédiat)

✅ Le code fonctionne - pas d'action requise ✅ Les données Appwrite persistent correctement ✅ Les vues Django affichent les données sans problème

Moyen terme (1-2 mois)

  • Mettre à jour requirements.txt avec une version Appwrite spécifique (ex: appwrite==1.8.0)
  • Commencer à planifier la migration vers Tables API

Long terme (futur)

  • Créer une branche feature/appwrite-tables-migration
  • Mettre à jour enise_site/appwrite_db.py pour utiliser Databases + Tables
  • Tester complètement avant de merger

Structure actuelle de appwrite_db.py

from appwrite.services.databases import Databases

class AppwriteDB:
    def __init__(self):
        self.databases = Databases(self.client)  # Service classique
        
    def list_documents(self, collection_id, queries=None):
        # Utilise l'API Databases classique
        return self.databases.list_documents(
            database_id=self.database_id,
            collection_id=collection_id,
            queries=queries
        )

Migration possible (exemple de refactoring)

Lors de la migration, on pourrait:

# Avant
doc = self.databases.create_document(collection_id, data)

# Après (possible)
row = self.databases.create_row(table_id, data)

Mais cela nécessite:

  1. Vérifier si les collections existantes sont automatiquement converties en tables
  2. Tester les queries (Query API reste-elle compatible?)
  3. Vérifier les permissions
  4. Potentiellement refactoriser les services

Conclusion

Pas d'action urgente.
L'app fonctionne parfaitement.
On peut mettre à jour quand Appwrite retire complètement les anciennes API.