Saltar al contenido principal

Planificación de una migración

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

[Repositorio de soporte]

Los cambios descritos en esta sección pueden consultarse en PR #6 del repositorio de soporte.

Planificación de una migración

En esta sección, veremos cómo planificar una nueva migración de esquema cuando realizamos cambios en el esquema Ent de nuestro proyecto. Supongamos que queremos añadir un nuevo campo a nuestra entidad User, agregando un campo opcional llamado title:

ent/schema/user.go
// Fields of the User.
func (User) Fields() []ent.Field {
return []ent.Field{
field.String("name"),
field.String("email"). // <-- Our new field
Unique(),
field.String("title").
Optional(),
}
}

Tras añadir el nuevo campo, debemos regenerar el código de nuestro proyecto:

go generate ./...

A continuación, necesitamos crear un nuevo archivo de migración para nuestro cambio usando la CLI de Atlas:

atlas migrate diff add_user_title \
--dir "file://ent/migrate/migrations" \
--to "ent://ent/schema" \
--dev-url "docker://mysql/8/ent"

Observa que se ha creado un nuevo archivo llamado 20221115101649_add_user_title.sql en el directorio ent/migrate/migrations/. Este archivo contiene las sentencias SQL para crear el nuevo campo title en la tabla users:

ent/migrate/migrations/20221115101649_add_user_title.sql
-- modify "users" table
ALTER TABLE `users` ADD COLUMN `title` varchar(255) NULL;

¡Perfecto! Hemos utilizado con éxito la CLI de Atlas para generar automáticamente un nuevo archivo de migración para nuestro cambio.

Para aplicar la migración, podemos ejecutar el siguiente comando:

atlas migrate apply --dir file://ent/migrate/migrations --url mysql://root:pass@localhost:3306/db

Atlas informa:

Migrating to version 20221115101649 from 20221114165732 (1 migrations in total):

-- migrating version 20221115101649
-> ALTER TABLE `users` ADD COLUMN `title` varchar(255) NULL;
-- ok (36.152277ms)

-------------------------
-- 44.1116ms
-- 1 migrations
-- 1 sql statements

En la siguiente sección, veremos cómo planificar migraciones de esquema personalizadas para nuestro proyecto.