Files
fn_registry/functions/infra/migration_create.md
T
egutierrez 9b0e1f836d feat: funciones impuras migration_create, migration_up, migration_down, migration_status
Fase 2 del issue 0015. MigrationCreate (crea archivo .sql template con version
auto-calculada), MigrationUp (aplica migraciones pendientes en transacciones
individuales), MigrationDown (revierte ultimas N via down_sql de _migrations),
MigrationGetStatus (cruza disco con BD, detecta orphaned). Tests de integracion:
ciclo completo create->up->status->down->status. 26 tests, todos pasan.

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

2.1 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_create function go infra 1.0.0 impure func MigrationCreate(dir string, name string) (string, error) Crea un archivo .sql de migracion con template -- +up / -- +down en el directorio indicado. Calcula automaticamente el siguiente numero de version escaneando archivos .sql existentes. Retorna el path absoluto del archivo creado.
migration
database
sql
schema
sqlite
create
file
false error_go_core
fmt
os
path/filepath
regexp
strconv
strings
name desc
dir directorio donde crear el archivo de migracion (se crea si no existe, ej: apps/my_app/migrations)
name desc
name nombre descriptivo de la migracion en snake_case (ej: create_users, add_email_column). Solo letras, numeros y underscore.
path absoluto del archivo .sql creado (ej: apps/my_app/migrations/001_create_users.sql) true
directorio vacio crea archivo con version 001
directorio con migraciones existentes calcula siguiente version
nombre invalido retorna error
directorio inexistente se crea automaticamente
functions/infra/migration_create_test.go functions/infra/migration_create.go

Ejemplo

// Primera migracion
path, err := MigrationCreate("apps/my_app/migrations", "create_users")
// path = "apps/my_app/migrations/001_create_users.sql"
// Contenido del archivo:
// -- 001_create_users.sql
//
// -- +up
//
//
// -- +down
//

// Segunda migracion (ya existe 001)
path2, err := MigrationCreate("apps/my_app/migrations", "add_email")
// path2 = "apps/my_app/migrations/002_add_email.sql"

Notas

Crea el directorio si no existe (os.MkdirAll). La version se calcula encontrando el maximo numero existente entre los archivos NNN_*.sql del directorio y sumando 1. El template generado tiene los marcadores vacios para que el desarrollador complete el SQL. Nombre valido: ^[a-zA-Z][a-zA-Z0-9_]*$ — no puede empezar con numero ni contener espacios o guiones.