#pragma once #include // job_cache_sha256 — addressable cache layout helper. // // Layout: // // // // El caller calcula el `key` (tipicamente SHA-256 hex de algun valor // canonico — URL, parametros, etc.). Esta funcion no hashea: solo // gestiona el path y la I/O. // // Suffix permite multiples blobs por la misma key (`.html`, `.md`, // `.json`). Pasa "" si solo hay un blob. namespace fn::cache_sha256 { // Pure. Devuelve "//". No toca disco. // Si key tiene menos de 2 caracteres, usa la key entera como subdir. std::string path_for(const std::string& root, const std::string& key, const std::string& suffix = ""); // Impure. Crea el directorio `//` si no existe. // Devuelve true en exito. No falla si ya existe. bool ensure_dir(const std::string& root, const std::string& key); // Impure. Lee el archivo en `path_for(root, key, suffix)` entero. // Devuelve true si existia y se leyo; false en caso contrario. bool read(const std::string& root, const std::string& key, const std::string& suffix, std::string* out); // Impure. Escribe `bytes` en `path_for(root, key, suffix)`. Crea el // directorio padre si no existe. Devuelve true en exito. bool write(const std::string& root, const std::string& key, const std::string& suffix, const std::string& bytes); // Impure. true si el archivo existe en `path_for(root, key, suffix)`. bool exists(const std::string& root, const std::string& key, const std::string& suffix); } // namespace fn::cache_sha256