| # 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` | |
| ```python | |
| 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: | |
| ```python | |
| # 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. | |