CLI referencia

new migration

Új, időbélyeg-prefixes SQL-migráció létrehozása a projekt migrations/ mappájában.

A new migration egyetlen, üres SQL-migrációs fájlt scaffoldol, ütközésmentes időbélyeg-prefixszel. Ezt használd, amikor a sémán végzett változtatáshoz saját migráció kell.

go tool gpsystem new migration <v>

Projekten belül futtasd (a CLI felfelé sétálva megtalálja a gpsystem.yaml-t). Létrehozza az aktuális időbélyeggel jelölt migrációs fájlt a migrations/ alatt, üres goose-vázzal: a SQL-t te írod bele, a futtatásról a projekt cmd/migrate binárisa gondoskodik.

Névképzés

A nevet a CLI snake_case-re normalizálja: kisbetűsít, a kötőjelet, aláhúzást és szóközt aláhúzásra egységesíti. A normalizált névnek kisbetű/számjegy szavakból kell állnia (útvonal-szeparátor, pont és vezető számjegy nélkül); ami nem felel meg, azt a parancs hibával elutasítja.

go tool gpsystem new migration create_products_and_orders
go tool gpsystem new migration "add index to orders"   # -> add_index_to_orders

Időbélyeg

A parancs a létrehozás pillanatának UTC idejéből képez egy 14 jegyű YYYYMMDDHHMMSS prefixet (goose időbélyeg-séma), és ezt írja a fájlnév elé. Mivel az időbélyeg a generáláskori pillanatot rögzíti, garantáltan a migrations/ mappában meglévő fájlok után rendez, branch-ek között sem ütközik. Ha a mappában már szerepel ugyanaz a másodperc (két migráció ugyanabban a másodpercben), a parancs egy másodperccel előrébb lép, amíg szabad prefixet nem talál. A generált projektek 20200101000000_init.sql-lel és 20200101000100_outbox.sql-lel érkeznek (fix, korai időbélyeg), így az első saját migrációd mindig ezek után, a tényleges létrehozás időpontjával rendeződik:

go tool gpsystem new migration create_products_and_orders
# Migration created: migrations/20260720143012_create_products_and_orders.sql

Régebbi, még sorszámozott sémájú projektben (00001_init.sql, 00002_outbox.sql) is hibátlanul működik: a parancs csak a 14 jegyű időbélyeg-prefixeket veszi figyelembe ütközésvizsgálatnál, a régi sorszámozott fájlokat érintetlenül hagyja, és goose mindkettőt szám szerint, helyesen sorba rendezi.

Mit generál

Egyetlen fájlt: migrations/<időbélyeg>_<név>.sql, üres fel/le vázzal:

-- +goose Up
-- +goose StatementBegin

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin

-- +goose StatementEnd

A globális --dry-run (tervet nyomtat, nem ír semmit) és --force (meglévő fájl felülírása) flagek itt is működnek, mint minden alparancson.

Generálás után

Írd meg a SQL-t a markerek közé (a Up szakaszba a változást, a Down-ba a visszagörgetését), majd alkalmazd:

go run ./cmd/migrate up

A fájlformátumról, a cmd/migrate parancsairól és a deployment-mintákról a Migrációk oldal szól.

Copyright © 2026