Files
fn_registry/functions/infra/migration_parse.md
T
egutierrez ec36278c7b feat: tipos Migration/MigrationStatus y funciones puras migration_parse + migration_validate
Fase 1 del issue 0015. Tipos Go en functions/infra/migration.go con metadata en
types/infra/. Funciones puras: MigrationParse (parsea filename NNN_name.sql +
bloques -- +up/-- +down) y MigrationValidate (verifica secuencia, huecos,
duplicados, bloques vacios). 16 tests, todos pasan.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-13 02:01:34 +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).