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`
```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.