Files
fn_registry/functions/infra/config_merge.md
T
egutierrez 3d515aa441 feat(infra): tipos ConfigError y ConfigValidation + funciones puras Go (validate, merge, dump)
- ConfigError y ConfigValidation como tipos producto con sus .md en types/infra/
- config_validate: validacion con tags required/format/min/max/oneof via reflection
- config_merge: merge no-mutante de map[string]string con precedencia de override
- config_dump: serializacion de structs a map con mascara *** para campos secret
- 17 tests unitarios, todos PASS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 02:01:43 +02:00

46 lines
1.5 KiB
Markdown

---
name: config_merge
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: pure
signature: "func ConfigMerge(base, override map[string]string) map[string]string"
description: "Merge de dos map[string]string. El map override tiene precedencia sobre base en claves comunes. Ninguno de los inputs es mutado — retorna un mapa nuevo."
tags: [config, merge, map, infra]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: []
params:
- name: base
desc: "mapa de configuracion base, valores por defecto o de menor prioridad"
- name: override
desc: "mapa de configuracion con mayor prioridad, sobreescribe claves de base"
output: "nuevo mapa con todas las claves de base y override, donde override gana en conflictos"
tested: true
tests:
- "override gana sobre base en claves comunes"
- "claves solo en base se mantienen"
- "claves solo en override se agregan"
- "no muta el map base"
- "merge con maps vacios retorna mapa vacio"
test_file_path: "functions/infra/config_merge_test.go"
file_path: "functions/infra/config_merge.go"
---
## Ejemplo
```go
defaults := map[string]string{"host": "localhost", "port": "5432", "debug": "false"}
env := map[string]string{"port": "9999", "debug": "true"}
merged := ConfigMerge(defaults, env)
// merged = {"host": "localhost", "port": "9999", "debug": "true"}
```
## Notas
Funcion pura. Util para combinar defaults hardcodeados con valores del archivo .env o de variables de entorno. Patron tipico: ConfigMerge(hardcoded_defaults, dotenv_values).