Files
fn_registry/functions/infra/migration_parse.md
T
egutierrez 4e3c9b5593 fix: corregir IDs de tipos en uses_types/returns a formato PascalCase
Los IDs de tipos Go usan PascalCase: Migration_go_infra, MigrationStatus_go_infra.
Actualizar los .md de todas las funciones migration para referenciar los IDs correctos.
Re-indexar: 681 funciones, 109 tipos, 0 errores de validacion.

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

2.2 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
migration_parse function go infra 1.0.0 pure func MigrationParse(filename string, content string) (Migration, error) Parsea el nombre de archivo y el contenido SQL de una migracion. Extrae version y nombre del filename (patron NNN_nombre.sql) y separa bloques up/down por marcadores -- +up / -- +down. Error si el formato es invalido o falta el bloque up.
migration
database
sql
schema
sqlite
parse
Migration_go_infra
Migration_go_infra
false
fmt
strconv
strings
name desc
filename nombre del archivo de migracion (ej: 001_create_users.sql). Puede incluir path completo.
name desc
content contenido completo del archivo .sql con marcadores -- +up y -- +down
Migration con version, nombre, up_sql y down_sql extraidos del archivo true
archivo valido con up y down retorna Migration correcta
archivo sin bloque down retorna DownSQL vacio sin error
filename sin separador underscore retorna error
version no numerica retorna error
bloque up vacio retorna error
version cero retorna error
nombre descriptivo vacio retorna error
filename con path completo extrae nombre base
functions/infra/migration_parse_test.go functions/infra/migration_parse.go

Ejemplo

content := `
-- +up
CREATE TABLE users (
    id TEXT PRIMARY KEY,
    name TEXT NOT NULL
);

-- +down
DROP TABLE IF EXISTS users;
`
m, err := MigrationParse("001_create_users.sql", content)
// m.Version  = 1
// m.Name     = "create_users"
// m.UpSQL    = "CREATE TABLE users (\n    id TEXT PRIMARY KEY,\n    name TEXT NOT NULL\n);"
// m.DownSQL  = "DROP TABLE IF EXISTS users;"

Notas

Funcion pura — no hace I/O. El marcador -- +up es obligatorio; -- +down es opcional (retorna DownSQL vacio). Si el archivo tiene down antes que up, se parsea igualmente. Los bloques se recortan con strings.TrimSpace. El formato de version es un entero positivo con cualquier numero de digitos (001, 01, 1 son equivalentes).