a802f59f55
- cmd/fn/doctor.go - cmd/fn/main.go - cpp/apps/primitives_gallery/playground/tables/CMakeLists.txt - cpp/apps/primitives_gallery/playground/tables/data_table.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.cpp - cpp/apps/primitives_gallery/playground/tables/data_table_logic.h - cpp/apps/primitives_gallery/playground/tables/self_test.cpp - cpp/apps/primitives_gallery/playground/tables/tql.cpp - cpp/apps/primitives_gallery/playground/tables/viz.cpp - cpp/apps/primitives_gallery/playground/tables/viz.h - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3.0 KiB
3.0 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 | ||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| vault_inventory_scan | function | go | infra | 1.0.0 | impure | func VaultInventoryScan(vaultPath, vaultID, vaultName string) ([]VaultFile, error) | Recorre vaultPath con filepath.WalkDir y retorna un slice de VaultFile ordenado por RelPath para cada archivo regular, computando sha256 por streaming, MIME por extension/magic y bucket/sub-bucket por posicion en el arbol. |
|
|
false | error_go_core |
|
|
slice de VaultFile ordenado lexicograficamente por RelPath; slice vacio (no nil) si el vault esta vacio | true |
|
functions/infra/vault_inventory_scan_test.go | functions/infra/vault_inventory_scan.go |
Ejemplo
files, err := VaultInventoryScan("/data/vaults/turismo_spain", "turismo_spain_v1", "turismo_spain")
if err != nil {
log.Fatal(err)
}
for _, f := range files {
fmt.Printf("%s %s %s/%s\n", f.RelPath, f.Mime, f.Bucket, f.SubBucket)
}
Notas
Archivos omitidos
vault_index.db,vault_index.db-shm,vault_index.db-wal(siempre).git/en cualquier profundidad (SkipDir)- Entradas cuyo nombre empieza por
.solo en la raiz del vault (nivel 0)
Deteccion de MIME
file_validate_type_go_infra (FileValidateType) no se usa porque su firma
requiere una lista blanca de tipos permitidos y retorna (mime, bool) — esta
disenada para validacion de uploads, no para escaneo inventarial donde
cualquier MIME es valido. Se usan en su lugar:
- Override por extension (prioridad alta):
.csv→text/csv,.md→text/markdown,.parquet→application/parquet. Necesario porquehttp.DetectContentTypeclasifica CSV comotext/plainy no conoce Parquet. http.DetectContentTypesobre primeros 512 bytes (magic bytes, stdlib) para el resto.
SHA-256
Calculado por streaming con io.Copy a sha256.New() — no carga el archivo completo
a memoria. Valido para archivos de cualquier tamano.
Bucket / SubBucket
Derivados de la posicion en el arbol:
bucket= primer segmento del RelPath (tipicamente "data" o "knowledge")subBucket= segundo segmento si existe; vacio si el archivo esta en la raiz del bucket