57 lines
2.2 KiB
Markdown
57 lines
2.2 KiB
Markdown
# 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.
|