# Documentation du projet sdk_storage Ce dossier documente l'API HTTP, l'architecture et les décisions techniques. ## API - POST `/store` : stocke une valeur hex pour une clé hex 64 chars, `ttl` optionnel (secondes). Quand `--permanent` est passé au binaire, l'absence de `ttl` rend la donnée permanente. - GET `/retrieve/:key` : retourne `{ key, value }` où `value` est encodée en hex. ## Architecture - Service `StorageService` (voir `src/lib.rs`) encapsule la logique de stockage, récupération et nettoyage TTL. - `src/main.rs` démarre Tide avec état `StorageService` et une boucle de nettoyage périodique (60s). ## Concepts de Base - **Clés** : Format hexadécimal 64 caractères (32 octets) - **Valeurs** : Format hexadécimal - **TTL** : Durée de vie en secondes, sérialisé dans `*.meta` (UNIX timestamp secondes) - **Persistance** : Système de fichiers, sous-dossiers par préfixe de clé ## Fonctionnalités Techniques - **StorageService** : Abstraction des opérations de stockage - **TTL** : Sérialisé dans `*.meta` (UNIX timestamp secondes) - **Nettoyage** : Parcours des dossiers, suppression données expirées - **Journalisation** : Sorties standard, intégration possible avec superviseur ## Tests - **Tests unitaires** : Recommandés sur `StorageService` via répertoires temporaires - **Tests d'intégration** : HTTP optionnels via client HTTP - **Stratégies** : Cas TTL min/max, clés invalides, conflits de clé Voir aussi: - `architecture.md` - `configuration.md` - `tests_monitoring.md` - `reseau_de_relais.md` - `developpement.md` - `depannage.md` - `performance.md` - `api_json_spec.md` - `api_contrats.md` - `release_guide.md` - `ci_docker_registry.md` ## REX technique - Docker - Build local: `docker build -t sdk_storage:local .` - Run: `docker run --rm -p 8081:8081 -v $PWD/storage:/app/storage sdk_storage:local` - Par défaut `--permanent` est activé via CMD, override possible: `docker run ... sdk_storage -- --permanent` - Refactor initial de la logique depuis `main.rs` vers `lib.rs` pour testabilité et séparation des responsabilités. - Durées TTL maintenant validées dans le handler, calcul d'expiration converti en `SystemTime` avant l'appel service.