ec36278c7b
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>
2.2 KiB
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. |
|
|
|
false |
|
|
Migration con version, nombre, up_sql y down_sql extraidos del archivo | true |
|
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).