Files
fn_registry/functions/infra/migration_up.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_up function go infra 1.0.0 impure func MigrationUp(db *sql.DB, dir string) ([]Migration, error) Lee los archivos .sql del directorio, crea la tabla _migrations si no existe, y ejecuta las migraciones pendientes en orden de version. Cada migracion corre en su propia transaccion. Retorna la lista de migraciones aplicadas en esta llamada.
migration
database
sql
schema
sqlite
apply
up
migration_parse_go_infra
Migration_go_infra
Migration_go_infra
false error_go_core
database/sql
fmt
os
path/filepath
sort
strings
name desc
db conexion *sql.DB abierta a la base de datos SQLite donde aplicar las migraciones
name desc
dir path al directorio que contiene los archivos .sql de migracion (ej: apps/my_app/migrations)
slice de Migration con las migraciones que fueron aplicadas en esta llamada (puede estar vacio si todo ya estaba aplicado) true
base de datos vacia aplica todas las migraciones
migraciones ya aplicadas se omiten
migracion con SQL invalido retorna error y deja las anteriores aplicadas
directorio sin archivos sql no aplica nada
functions/infra/migration_up_test.go functions/infra/migration_up.go

Ejemplo

db, _ := SQLiteOpen("", "apps/my_app/operations.db")
defer db.Close()

applied, err := MigrationUp(db, "apps/my_app/migrations")
if err != nil {
    log.Fatalf("migration failed: %v", err)
}
for _, m := range applied {
    fmt.Printf("Applied: %03d_%s\n", m.Version, m.Name)
}
// Applied: 001_create_users
// Applied: 002_add_roles

Notas

Crea _migrations con CREATE TABLE IF NOT EXISTS — es idempotente. Cada migracion se ejecuta en una transaccion independiente: si falla la migracion 3, las 1 y 2 ya aplicadas permanecen. El up_sql y down_sql se guardan en _migrations para que el rollback funcione aunque el archivo sea modificado o eliminado posteriormente. SQLite con el driver mattn/go-sqlite3 soporta multiples sentencias en un solo Exec.