docs: params/output semántico en 506 funciones para composabilidad
Añade campos params y output al frontmatter YAML de las 506 funciones del registry. Cada parámetro tiene descripción semántica (qué representa, unidades, rango típico) y cada función describe qué produce su output. Permite a agentes razonar sobre cadenas de composición (ej: prices → log_return → sharpe_ratio) sin leer código.
This commit is contained in:
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "encoding/json", "sync", "time", "fmt"]
|
||||
params:
|
||||
- name: dbPath
|
||||
desc: "ruta del archivo SQLite donde persiste el cache"
|
||||
- name: namespace
|
||||
desc: "prefijo de tabla para aislar caches en el mismo archivo"
|
||||
output: "instancia thread-safe de SQLiteCache con metodos Get, Set, Delete, Clear, GetOrSet"
|
||||
tested: true
|
||||
tests:
|
||||
- "Set/Get basico"
|
||||
|
||||
@@ -14,6 +14,18 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "github.com/ClickHouse/clickhouse-go/v2"]
|
||||
params:
|
||||
- name: host
|
||||
desc: "hostname del servidor ClickHouse"
|
||||
- name: port
|
||||
desc: "puerto de ClickHouse (9000 para protocolo nativo, 8123 para HTTP)"
|
||||
- name: user
|
||||
desc: "nombre de usuario para autenticacion"
|
||||
- name: password
|
||||
desc: "contraseña para autenticacion"
|
||||
- name: database
|
||||
desc: "nombre de la base de datos a conectar"
|
||||
output: "conexion sql.DB abierta a ClickHouse con ping verificado"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [context, time]
|
||||
params:
|
||||
- name: schedule
|
||||
desc: "estructura CronTickerSchedule con campos Minute, Hour, DayOfMonth, Month, DayOfWeek"
|
||||
- name: ctx
|
||||
desc: "context que al cancelarse cierra el channel de ticks"
|
||||
output: "channel que emite time.Time en cada tick del schedule cron"
|
||||
tested: true
|
||||
tests:
|
||||
- "context cancel cierra el channel"
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB a cerrar"
|
||||
output: "nil si el cierre fue exitoso, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "regexp", "strings"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB abierta"
|
||||
- name: table
|
||||
desc: "nombre de la tabla a crear"
|
||||
- name: columns
|
||||
desc: "slice de definiciones SQL completas de columnas (incluyen nombre, tipo, constraints)"
|
||||
output: "nil si la tabla se creo exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB abierta"
|
||||
- name: query
|
||||
desc: "statement SQL no-SELECT (INSERT, UPDATE, DELETE, DDL) con placeholders ?"
|
||||
- name: args
|
||||
desc: "argumentos para los placeholders en la query"
|
||||
output: "numero de filas afectadas por la ejecucion"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "strings"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB abierta"
|
||||
- name: table
|
||||
desc: "nombre de la tabla donde insertar"
|
||||
- name: columns
|
||||
desc: "slice de nombres de columnas en el orden de las rows"
|
||||
- name: rows
|
||||
desc: "slice de rows, donde cada row es []any con valores en orden de columns"
|
||||
output: "numero total de filas insertadas exitosamente"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "sort", "strings"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB abierta"
|
||||
- name: table
|
||||
desc: "nombre de la tabla donde insertar"
|
||||
- name: row
|
||||
desc: "mapa de columna → valor con los datos a insertar"
|
||||
output: "ID autoincrementado de la fila insertada"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql"]
|
||||
params:
|
||||
- name: db
|
||||
desc: "conexion sql.DB abierta"
|
||||
- name: query
|
||||
desc: "statement SELECT con placeholders ?"
|
||||
- name: args
|
||||
desc: "argumentos para los placeholders en la query"
|
||||
output: "slice de maps donde cada map es una fila con columna → valor"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: appDir
|
||||
desc: "ruta del directorio de la app Go (contiene main.go)"
|
||||
- name: imageName
|
||||
desc: "nombre de la imagen Docker a construir y contenedor a lanzar"
|
||||
- name: port
|
||||
desc: "puerto a mapear (hostPort == containerPort)"
|
||||
- name: envVars
|
||||
desc: "mapa de variables de entorno a pasar al contenedor"
|
||||
output: "ID del contenedor Docker lanzado exitosamente"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: contextDir
|
||||
desc: "ruta del directorio que contiene el Dockerfile"
|
||||
- name: tag
|
||||
desc: "nombre y tag de la imagen a construir (ej: myapp:latest)"
|
||||
- name: buildArgs
|
||||
desc: "mapa de argumentos de construccion (--build-arg key=val)"
|
||||
output: "ID de la imagen Docker construida"
|
||||
tested: true
|
||||
tests: ["build sin build args retorna image ID", "build con build args incluye --build-arg", "error si contextDir no existe"]
|
||||
test_file_path: "functions/infra/docker_build_image_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: composeFile
|
||||
desc: "ruta del archivo docker-compose.yml"
|
||||
- name: removeVolumes
|
||||
desc: "si true elimina tambien los volumes declarados"
|
||||
output: "stdout combinado con stderr de la ejecucion de docker compose down"
|
||||
tested: true
|
||||
tests: ["removeVolumes true agrega flag -v al comando", "error si composeFile no existe"]
|
||||
test_file_path: "functions/infra/docker_compose_down_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: composeFile
|
||||
desc: "ruta del archivo docker-compose.yml"
|
||||
- name: detach
|
||||
desc: "si true ejecuta en background sin bloquear"
|
||||
output: "stdout combinado con stderr de la ejecucion de docker compose up"
|
||||
tested: true
|
||||
tests: ["detach true agrega flag -d al comando", "error si composeFile no existe"]
|
||||
test_file_path: "functions/infra/docker_compose_up_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strconv]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID del contenedor Docker"
|
||||
- name: tail
|
||||
desc: "numero de ultimas lineas a devolver (0 devuelve todos los logs)"
|
||||
output: "logs del contenedor como string"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: name
|
||||
desc: "nombre de la red Docker a crear"
|
||||
- name: driver
|
||||
desc: "driver de la red (bridge, host, overlay, etc. o vacio para bridge por defecto)"
|
||||
output: "ID de la red Docker creada"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [encoding/json, fmt, os/exec]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID del contenedor Docker a inspeccionar"
|
||||
output: "mapa generico con detalles completos del contenedor (estado, red, volumes, etc.)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: [container_info_go_infra]
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [encoding/json, fmt, os/exec]
|
||||
params:
|
||||
- name: all
|
||||
desc: "si true incluye contenedores detenidos, si false solo los que estan corriendo"
|
||||
output: "slice de ContainerInfo con ID, nombre, estado de cada contenedor"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,8 @@ returns: [image_info_go_infra]
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [encoding/json, fmt, os/exec]
|
||||
params: []
|
||||
output: "slice de ImageInfo con repositorio, tag, size de cada imagen"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: image
|
||||
desc: "referencia de imagen Docker en formato image:tag (ej: nginx:latest)"
|
||||
output: "nil si la descarga fue exitosa, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID del contenedor Docker a eliminar"
|
||||
- name: force
|
||||
desc: "si true fuerza la eliminacion incluso si esta en ejecucion"
|
||||
output: "nil si se elimino exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: image
|
||||
desc: "referencia de imagen Docker (nombre:tag o ID)"
|
||||
- name: force
|
||||
desc: "si true fuerza eliminacion incluso si hay contenedores usando la imagen"
|
||||
output: "nil si se elimino exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID de la red Docker a eliminar"
|
||||
output: "nil si se elimino exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: image
|
||||
desc: "referencia de imagen Docker (nombre:tag)"
|
||||
- name: opts
|
||||
desc: "estructura DockerRunOpts con Name, Ports, Env, Volumes, Network, Detach, AutoRemove"
|
||||
output: "ID del contenedor Docker creado y ejecutado"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID del contenedor Docker a iniciar"
|
||||
output: "nil si se inicio exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strconv, strings]
|
||||
params:
|
||||
- name: nameOrID
|
||||
desc: "nombre o ID del contenedor Docker a detener"
|
||||
- name: timeoutSecs
|
||||
desc: "segundos de gracia antes de SIGKILL (0 usa el default de Docker)"
|
||||
output: "nil si se detuvo exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: name
|
||||
desc: "nombre del volume Docker a crear"
|
||||
output: "nombre del volume creado confirmado por Docker"
|
||||
tested: true
|
||||
tests: ["crea volume y retorna nombre", "idempotente si el volume ya existe"]
|
||||
test_file_path: "functions/infra/docker_volume_create_test.go"
|
||||
|
||||
@@ -14,6 +14,8 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [encoding/json, fmt, os/exec, strings]
|
||||
params: []
|
||||
output: "slice de maps con campos Driver, Name, Scope, Labels, Mountpoint de cada volume"
|
||||
tested: true
|
||||
tests: ["lista vacia retorna nil sin error", "parsea campos Driver y Name correctamente"]
|
||||
test_file_path: "functions/infra/docker_volume_list_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: name
|
||||
desc: "nombre del volume Docker a eliminar"
|
||||
- name: force
|
||||
desc: "si true fuerza la eliminacion incluso si esta siendo usado"
|
||||
output: "nil si se elimino exitosamente, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["error si volume no existe", "force flag incluye -f en el comando"]
|
||||
test_file_path: "functions/infra/docker_volume_remove_test.go"
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "github.com/marcboeker/go-duckdb"]
|
||||
params:
|
||||
- name: path
|
||||
desc: "ruta del archivo DuckDB o vacio/:memory: para base en memoria"
|
||||
output: "conexion sql.DB abierta a DuckDB"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: [fmt, sort, strings]
|
||||
params:
|
||||
- name: binaryName
|
||||
desc: "nombre del binario Go a ejecutar en el contenedor"
|
||||
- name: port
|
||||
desc: "puerto a exponer en el Dockerfile (0 omite la instruccion EXPOSE)"
|
||||
- name: envVars
|
||||
desc: "mapa de variables de entorno a incluir en el Dockerfile"
|
||||
output: "string con el contenido del Dockerfile multi-stage"
|
||||
tested: true
|
||||
tests: ["contiene stage builder con golang:1.23-alpine", "contiene stage final con alpine:latest", "incluye EXPOSE cuando port mayor a cero", "no incluye EXPOSE cuando port es cero", "env vars aparecen ordenadas alfabeticamente", "binaryName aparece en ENTRYPOINT", "env vars vacias no generan instrucciones ENV"]
|
||||
test_file_path: "functions/infra/generate_dockerfile_test.go"
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os, os/exec, path/filepath, strings]
|
||||
params:
|
||||
- name: projectDir
|
||||
desc: "ruta del directorio Go (con main.go o go.mod)"
|
||||
- name: outputPath
|
||||
desc: "ruta donde guardar el binario o vacio para usar build/{dirname}"
|
||||
- name: ldflags
|
||||
desc: "flags de vinculacion Go o vacio para usar -s -w (strip)"
|
||||
- name: tags
|
||||
desc: "build tags Go (ej: fts5,cgo)"
|
||||
output: "nil si la compilacion fue exitosa, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["compila proyecto valido sin error", "outputPath vacio usa build/dirname por defecto", "ldflags vacio usa -s -w por defecto", "error si projectDir no existe"]
|
||||
test_file_path: "functions/infra/go_build_binary_test.go"
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, net/http, time]
|
||||
params:
|
||||
- name: url
|
||||
desc: "URL del endpoint HTTP a verificar (GET)"
|
||||
- name: timeoutSecs
|
||||
desc: "tiempo maximo en segundos antes de agotar los intentos"
|
||||
- name: intervalMs
|
||||
desc: "intervalo en milisegundos entre intentos de verificacion"
|
||||
output: "nil si el endpoint responde 200, error si se agota el timeout"
|
||||
tested: true
|
||||
tests: ["retorna nil cuando el servidor responde 200", "retorna error si el timeout se agota", "respeta el intervalo entre intentos"]
|
||||
test_file_path: "functions/infra/health_check_http_test.go"
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["fmt", "io", "net/http", "os", "path/filepath", "time"]
|
||||
params:
|
||||
- name: url
|
||||
desc: "URL del archivo a descargar"
|
||||
- name: destPath
|
||||
desc: "ruta de destino del archivo descargado"
|
||||
- name: headers
|
||||
desc: "mapa de headers custom a incluir en la solicitud"
|
||||
- name: timeout
|
||||
desc: "duracion maxima para completar la descarga"
|
||||
output: "numero de bytes descargados exitosamente"
|
||||
tested: true
|
||||
tests:
|
||||
- "httptest.Server sirve archivo binario"
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["encoding/json", "fmt", "io", "net/http", "time"]
|
||||
params:
|
||||
- name: url
|
||||
desc: "URL del endpoint HTTP a consultar"
|
||||
- name: headers
|
||||
desc: "mapa de headers custom a incluir en la solicitud"
|
||||
- name: timeout
|
||||
desc: "duracion maxima para completar la solicitud"
|
||||
output: "mapa con la estructura JSON decodificada del response"
|
||||
tested: true
|
||||
tests:
|
||||
- "httptest.Server con respuesta JSON"
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["bytes", "encoding/json", "fmt", "io", "net/http", "time"]
|
||||
params:
|
||||
- name: url
|
||||
desc: "URL del endpoint HTTP"
|
||||
- name: body
|
||||
desc: "datos a serializar como JSON en el cuerpo de la solicitud"
|
||||
- name: headers
|
||||
desc: "mapa de headers custom a fusionar con los headers por defecto"
|
||||
- name: timeout
|
||||
desc: "duracion maxima para completar la solicitud"
|
||||
output: "mapa con la estructura JSON decodificada del response"
|
||||
tested: true
|
||||
tests:
|
||||
- "httptest.Server recibe body correcto"
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: [MetabaseClient_go_infra]
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [bytes, encoding/json, fmt, io, net/http]
|
||||
params:
|
||||
- name: baseURL
|
||||
desc: "URL base de Metabase (ej: http://localhost:3000)"
|
||||
- name: email
|
||||
desc: "email de la cuenta para autenticarse"
|
||||
- name: password
|
||||
desc: "contraseña de la cuenta"
|
||||
output: "cliente MetabaseClient con session token valido por 14 dias"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,20 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: name
|
||||
desc: "nombre de la pregunta/card"
|
||||
- name: datasetQuery
|
||||
desc: "estructura de query SQL nativa o MBQL (structured query)"
|
||||
- name: display
|
||||
desc: "tipo de visualizacion (table, bar, line, pie, scalar, etc.)"
|
||||
- name: collectionID
|
||||
desc: "ID de la coleccion destino (0 = root collection)"
|
||||
- name: description
|
||||
desc: "descripcion de la pregunta o vacio"
|
||||
output: "mapa con los detalles de la card creada incluyendo su ID"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: name
|
||||
desc: "nombre del dashboard"
|
||||
- name: description
|
||||
desc: "descripcion del dashboard o vacio"
|
||||
- name: collectionID
|
||||
desc: "ID de la coleccion destino (0 = root collection)"
|
||||
output: "mapa con los detalles del dashboard creado incluyendo su ID"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,20 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado con permisos admin"
|
||||
- name: firstName
|
||||
desc: "nombre del usuario"
|
||||
- name: lastName
|
||||
desc: "apellido del usuario"
|
||||
- name: email
|
||||
desc: "email unico del usuario"
|
||||
- name: password
|
||||
desc: "contraseña o vacio para enviar invitacion por email"
|
||||
- name: groupIDs
|
||||
desc: "slice de IDs de grupos a los que agregar el usuario (nil = grupo default)"
|
||||
output: "mapa con los detalles del usuario creado incluyendo su ID"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado con permisos admin"
|
||||
- name: userID
|
||||
desc: "ID del usuario a desactivar"
|
||||
output: "nil si la desactivacion fue exitosa, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: cardID
|
||||
desc: "ID de la card/pregunta a eliminar"
|
||||
output: "nil si la eliminacion fue exitosa, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: dashboardID
|
||||
desc: "ID del dashboard a eliminar"
|
||||
output: "nil si la eliminacion fue exitosa, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: cardID
|
||||
desc: "ID de la card/pregunta guardada a ejecutar"
|
||||
- name: parameters
|
||||
desc: "slice de maps con parametros para queries parametrizadas (nil si no hay parametros)"
|
||||
output: "mapa con status, row_count, running_time, data.columns, data.rows, data.native_form.query"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: databaseID
|
||||
desc: "ID de la database en Metabase"
|
||||
- name: sql
|
||||
desc: "query SQL a ejecutar"
|
||||
- name: maxResults
|
||||
desc: "limite de filas (0 = default 2000)"
|
||||
output: "mapa con status, row_count, running_time, data.columns, data.rows"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: cardID
|
||||
desc: "ID de la card/pregunta"
|
||||
output: "mapa con detalles completos de la card (nombre, query, visualizacion, etc.)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: dashboardID
|
||||
desc: "ID del dashboard"
|
||||
output: "mapa con dashboard completo incluyendo dashcards, tabs, parametros"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: userID
|
||||
desc: "ID del usuario"
|
||||
output: "mapa con detalles del usuario (email, nombre, grupo, permisos, etc.)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: filter
|
||||
desc: "filtro opcional (all, mine, fav, archived, recent, popular, database, table)"
|
||||
- name: modelID
|
||||
desc: "ID de database/tabla para filtros database/table (0 = ignorar)"
|
||||
output: "slice de maps con detalles de cada card (ID, nombre, query, visualizacion)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: filter
|
||||
desc: "filtro opcional (all, mine, archived o vacio para todas)"
|
||||
output: "slice de maps con resumen de cada dashboard (sin dashcards completas)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,18 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado con permisos admin"
|
||||
- name: status
|
||||
desc: "filtro por estado (active, deactivated, all o vacio)"
|
||||
- name: query
|
||||
desc: "filtro por nombre o email (vacio para sin filtro)"
|
||||
- name: limit
|
||||
desc: "tamanio de pagina (0 = default de Metabase)"
|
||||
- name: offset
|
||||
desc: "offset para paginacion (0 = inicio)"
|
||||
output: "mapa con data (slice de usuarios), total, limit, offset"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: cardID
|
||||
desc: "ID de la card/pregunta a actualizar"
|
||||
- name: fields
|
||||
desc: "mapa con los campos a modificar (name, description, display, dataset_query, archived, etc.)"
|
||||
output: "mapa con los detalles de la card actualizada"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado"
|
||||
- name: dashboardID
|
||||
desc: "ID del dashboard a actualizar"
|
||||
- name: fields
|
||||
desc: "mapa con campos a modificar (name, description, dashcards, tabs, archived, etc.)"
|
||||
output: "mapa con los detalles del dashboard actualizado"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: client
|
||||
desc: "cliente MetabaseClient autenticado con permisos admin"
|
||||
- name: userID
|
||||
desc: "ID del usuario a actualizar"
|
||||
- name: fields
|
||||
desc: "mapa con campos a modificar (first_name, last_name, email, is_superuser, group_ids, locale)"
|
||||
output: "mapa con los detalles del usuario actualizado"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: opts
|
||||
desc: "estructura NordVPNContainerRunOpts con Image, Cmd, Env, Volumes, Detach, Name, Gateway"
|
||||
output: "ID del contenedor ejecutado bajo VPN"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, strings, time]
|
||||
params:
|
||||
- name: opts
|
||||
desc: "estructura NordVPNContainerOpts con Token, Country, City, Protocol"
|
||||
output: "ID del contenedor gateway NordVPN"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: gateway
|
||||
desc: "nombre del contenedor gateway NordVPN a detener"
|
||||
- name: clientNames
|
||||
desc: "nombres opcionales de containers cliente que usan la VPN (se detienen primero)"
|
||||
output: "nil si se detuvieron exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: ["regexp", "strings"]
|
||||
params:
|
||||
- name: output
|
||||
desc: "salida de texto de nordvpn status"
|
||||
output: "struct NordVPNStatus con campos Connected, Hostname, IP, Country, City, Technology"
|
||||
tested: true
|
||||
tests: ["TestParseNordVPNStatus_Connected", "TestParseNordVPNStatus_Disconnected", "TestParseNordVPNStatus_WithANSI"]
|
||||
test_file_path: "functions/infra/parse_nordvpn_status_test.go"
|
||||
|
||||
@@ -14,6 +14,20 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "github.com/jackc/pgx/v5/stdlib"]
|
||||
params:
|
||||
- name: host
|
||||
desc: "hostname del servidor PostgreSQL"
|
||||
- name: port
|
||||
desc: "puerto del servidor (5432 por defecto)"
|
||||
- name: user
|
||||
desc: "nombre de usuario para autenticacion"
|
||||
- name: password
|
||||
desc: "contraseña para autenticacion"
|
||||
- name: dbname
|
||||
desc: "nombre de la base de datos"
|
||||
- name: sslmode
|
||||
desc: "modo SSL (disable, require, verify-full o vacio para disable)"
|
||||
output: "conexion sql.DB abierta a PostgreSQL"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [os, os/exec, path/filepath, text/template, fmt, strings, context]
|
||||
params:
|
||||
- name: ctx
|
||||
desc: "context para cancelacion"
|
||||
- name: cfg
|
||||
desc: "estructura ScaffoldWailsAppConfig con Name, Dir, Title, Width, Height, Author"
|
||||
output: "nil si el scaffold fue exitoso, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: ["database/sql", "path/filepath", "github.com/mattn/go-sqlite3"]
|
||||
params:
|
||||
- name: path
|
||||
desc: "ruta del archivo SQLite (:memory: para base en memoria)"
|
||||
- name: basePath
|
||||
desc: "ruta base para resolver paths relativos (vacio = relativo al cwd)"
|
||||
output: "conexion sql.DB abierta a SQLite con WAL mode y foreign keys"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: conn
|
||||
desc: "estructura SSHConn con Host, User, Port, IdentityFile"
|
||||
output: "nil si la conectividad SSH es exitosa, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["conecta a organic-machine", "falla con host inexistente"]
|
||||
test_file_path: "functions/infra/ssh_check_test.go"
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: conn
|
||||
desc: "estructura SSHConn con Host, User, Port, IdentityFile"
|
||||
- name: remotePath
|
||||
desc: "ruta del archivo en el host remoto"
|
||||
- name: localPath
|
||||
desc: "ruta de destino en el filesystem local"
|
||||
output: "nil si la descarga fue exitosa, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["upload y download roundtrip"]
|
||||
test_file_path: "functions/infra/ssh_transfer_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [os/exec]
|
||||
params:
|
||||
- name: conn
|
||||
desc: "estructura SSHConn con Host, User, Port, IdentityFile"
|
||||
- name: command
|
||||
desc: "comando a ejecutar en el host remoto"
|
||||
output: "tupla (stdout, stderr, exit_code, error) del comando ejecutado"
|
||||
tested: true
|
||||
tests: ["echo simple", "captura stderr", "exit code no cero", "comando multilinea"]
|
||||
test_file_path: "functions/infra/ssh_exec_test.go"
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os, syscall]
|
||||
params:
|
||||
- name: pid
|
||||
desc: "ID del proceso ssh del tunel abierto (obtenido de ssh_tunnel_open)"
|
||||
output: "nil si el tunel se cerro exitosamente, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["abre tunel y lo cierra"]
|
||||
test_file_path: "functions/infra/ssh_tunnel_test.go"
|
||||
|
||||
@@ -14,6 +14,16 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings, time]
|
||||
params:
|
||||
- name: conn
|
||||
desc: "estructura SSHConn con Host, User, Port, IdentityFile"
|
||||
- name: localPort
|
||||
desc: "puerto local donde escuchar conexiones"
|
||||
- name: remoteHost
|
||||
desc: "host remoto accesible desde el servidor SSH"
|
||||
- name: remotePort
|
||||
desc: "puerto en el host remoto"
|
||||
output: "PID del proceso ssh del tunel para cerrarlo despues"
|
||||
tested: true
|
||||
tests: ["abre tunel y lo cierra"]
|
||||
test_file_path: "functions/infra/ssh_tunnel_test.go"
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os/exec, strings]
|
||||
params:
|
||||
- name: conn
|
||||
desc: "estructura SSHConn con Host, User, Port, IdentityFile"
|
||||
- name: localPath
|
||||
desc: "ruta del archivo local a subir"
|
||||
- name: remotePath
|
||||
desc: "ruta de destino en el host remoto"
|
||||
output: "nil si la subida fue exitosa, error en caso contrario"
|
||||
tested: true
|
||||
tests: ["upload y download roundtrip"]
|
||||
test_file_path: "functions/infra/ssh_transfer_test.go"
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt]
|
||||
params:
|
||||
- name: containerName
|
||||
desc: "nombre del contenedor Docker a detener (coincide con imageName de deploy_app)"
|
||||
- name: removeImage
|
||||
desc: "si true elimina tambien la imagen Docker"
|
||||
output: "nil si la app se detuvo exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,10 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: ""
|
||||
imports: [fmt, strings]
|
||||
params:
|
||||
- name: spec
|
||||
desc: "estructura WailsCRUDSpec con EntityName, Fields, WithList/Get/Create/Update/Delete flags"
|
||||
output: "string con codigo Go generado (struct + metodos CRUD stubs)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [os/exec, fmt, strings, context]
|
||||
params:
|
||||
- name: ctx
|
||||
desc: "context para cancelacion"
|
||||
- name: cfg
|
||||
desc: "estructura WailsBuildConfig con Dir, Platform (linux/windows/darwin)"
|
||||
output: "nil si la compilacion fue exitosa, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [context, encoding/json, fmt, time, github.com/wailsapp/wails/v2/pkg/runtime]
|
||||
params:
|
||||
- name: ctx
|
||||
desc: "context de Wails"
|
||||
- name: eventName
|
||||
desc: "nombre del evento a emitir (ej: price:update)"
|
||||
- name: data
|
||||
desc: "datos a serializar y enviar al frontend"
|
||||
output: "void (sin valor de retorno, efecto es emitir el evento)"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,14 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [context, fmt, time, github.com/wailsapp/wails/v2/pkg/runtime]
|
||||
params:
|
||||
- name: ctx
|
||||
desc: "context de Wails"
|
||||
- name: cfg
|
||||
desc: "estructura WailsStreamConfig con StreamName y ChunkDelay"
|
||||
- name: data
|
||||
desc: "slice de datos genericos a enviar en chunks"
|
||||
output: "nil si el stream se completo exitosamente, error en caso contrario"
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
|
||||
@@ -14,6 +14,12 @@ returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: [fmt, os, path/filepath]
|
||||
params:
|
||||
- name: dir
|
||||
desc: "directorio donde crear el archivo Dockerfile (se crea si no existe)"
|
||||
- name: content
|
||||
desc: "contenido del Dockerfile como string"
|
||||
output: "ruta absoluta del archivo Dockerfile escrito"
|
||||
tested: true
|
||||
tests: ["escribe Dockerfile en directorio existente", "crea directorio si no existe", "retorna path absoluto correcto", "error si dir es path invalido"]
|
||||
test_file_path: "functions/infra/write_dockerfile_test.go"
|
||||
|
||||
Reference in New Issue
Block a user