47fac22230
- .claude/CLAUDE.md - .claude/commands/subagentes.md - .claude/rules/INDEX.md - .mcp.json - bash/functions/cybersecurity/analyze_dns.md - bash/functions/cybersecurity/audit_http_headers.md - bash/functions/cybersecurity/audit_ssh_config.md - bash/functions/cybersecurity/check_firewall.md - bash/functions/cybersecurity/detect_suspicious_users.md - bash/functions/cybersecurity/encrypt_file.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| cache_to_sqlite | function | go | infra | 1.0.0 | impure | func CacheToSQLite(dbPath, namespace string) (*SQLiteCache, error) | Cache key-value persistido en SQLite con TTL y lazy eviction. Valores almacenados como JSON bytes; el caller serializa y deserializa. Thread-safe con sync.Mutex. Soporta Get, Set, Delete, Clear y GetOrSet. |
|
false | error_go_core |
|
|
instancia thread-safe de SQLiteCache con metodos Get, Set, Delete, Clear, GetOrSet | true |
|
functions/infra/cache_to_sqlite_test.go | functions/infra/cache_to_sqlite.go |
Ejemplo
cache, err := infra.CacheToSQLite("my_cache.db", "default")
if err != nil {
log.Fatal(err)
}
defer cache.Close()
// Almacenar JSON bytes con TTL de 1 hora
payload, _ := json.Marshal(map[string]string{"result": "ok"})
cache.Set("key1", payload, time.Hour)
// Recuperar
if v, ok := cache.Get("key1"); ok {
var result map[string]string
json.Unmarshal(v, &result)
fmt.Println(result["result"]) // ok
}
// Factory pattern
val, err := cache.GetOrSet("expensive_key", func() ([]byte, error) {
return json.Marshal(computeExpensiveThing())
}, time.Hour)
// Helper para serializar directamente
cache.SetJSON("user:42", userStruct, 30*time.Minute)
Notas
Usa WAL mode para mejor concurrencia de lecturas. La eviction lazy elimina expirados en cada Get. El schema comparte la tabla cache con cache_to_sqlite_py_infra — ambas implementaciones son interoperables sobre el mismo archivo SQLite si usan namespaces distintos. Requiere github.com/mattn/go-sqlite3 (ya presente en el registry).