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 dettl
rend la donnée permanente. - GET
/retrieve/:key
: retourne{ key, value }
oùvalue
est encodée en hex.
Architecture
- Service
StorageService
(voirsrc/lib.rs
) encapsule la logique de stockage, récupération et nettoyage TTL. src/main.rs
démarre Tide avec étatStorageService
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
- Build local:
-
Refactor initial de la logique depuis
main.rs
verslib.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.