CLI referencia

add db

Nevesített adatbázis-kapcsolat hozzáadása egy modulhoz, saját poollal és connectorral.

Az add db egy második, önálló adatbázis-kapcsolatot ad egy modulhoz, a default mellé. Akkor nyúlj hozzá, ha egy modulnak saját poolra van szüksége: külön analytics adatbázisra, egy reporting replikára, vagy bármilyen kapcsolatra, ami nem osztozhat tranzakción a modul default kapcsolatával.

go tool gpsystem add db <modul> <v> [--connector pgx|bun]

Minden modulnak van már egy default kapcsolata (cfg.DB / pool), amit az egész projektre a new project --db választ ki. Az add db egy modulhoz ad hozzá egy másik, önálló kapcsolatot: saját DB_<NÉV>_* configot, saját pgx poolt (opcionálisan dbx/bunx-nal becsomagolva), saját closert, és <Név>DB / <Név>Transactor mezőket a modul Dependencies-én.

go tool gpsystem add db news analytics --connector bun
FlagJelentés
--connectorpgx vagy bun ehhez a kapcsolathoz (alapértelmezés: a projekt saját --db választása)

A connector a kapcsolat tulajdonsága, nem a projekté: egy modulnak lehet pgx-natív default kapcsolata és emellett bun-alapú analytics kapcsolata, vagy fordítva. Ez nem stílus kérdés, hanem kemény határ; lásd a Tranzakciók oldalt: egy pgx-natív dbx/pg executor és egy dbx/bunx nem oszthat meg egy tranzakciót, így egy kapcsolat connectora hívásonként nem változhat.

Mit generál

internal/platform/config/config.go
DBAnalytics dbx.Config `envPrefix:"DB_ANALYTICS_"`
cmd/news/main.go
analyticsPool := pg.MustNewPool(ctx, cfg.DBAnalytics)
analyticsBun := bunx.Open(analyticsPool)   // csak --connector bun esetén
internal/modules/news/register.go
type Dependencies struct {
    DB                  *pg.DB
    Transactor          dbx.Transactor
    AnalyticsDB         *bun.DB
    AnalyticsTransactor dbx.Transactor
    // gpsystem:dependencies
}

A pool closere mellé egy másik is regisztrálódik (analytics-pgxpool, és bun connector esetén analytics-bun, mivel a bun closer a pool utánra kerül, így a graceful shutdown LIFO sorrendje a bun handle-t zárja a pool előtt). Ha a cmd/worker/main.go már létezik, ugyanez a pool/deps/closer bekötés odakerül, így a listenerek és jobok is látják a kapcsolatot ugyanazon a Dependencies structon.

A .env.example kap egy DB_ANALYTICS_* blokkot, amely a default kapcsolattal azonos lokális Postgresre mutat. Helyi fejlesztéshez irányítsd át egy másik instance-ra. A DB_ANALYTICS_USER, DB_ANALYTICS_PASSWORD és DB_ANALYTICS_NAME kötelező: hiányuk esetén a process már indulásnál elhal, nem az első lekérdezésnél; lásd a konfigurációs referenciát.

A cmd/migrate mindig csak a projekt default kapcsolatát célozza. Egy nevesített kapcsolat sémáját a generált migrációs runner nem kezeli.

A modul-repository bekötése

Az add db önmagában csak elérhetővé teszi a kapcsolatot a Dependencies-en; a modul repository-jához nem nyúl. A modul közös repository/-vázát az add surface --db (vagy az add core --db, ugyanígy egy meglévő modul repository-jához) köti hozzá:

go tool gpsystem add surface news reports --db analytics
# -> internal/modules/news/repository/analytics/doc.go

A --db nélkül a modul megtartja a flat repository/ mappát, a default kapcsolathoz kötve; semmi nem változik azokban a projektekben, amelyek sosem hívják az add db-t.

Hibaelhárítás: hiányzó anchorok

Az add db írás előtt ellenőrzi, hogy a cmd/<modul>/main.go-ban megvan-e a gpsystem:pools és a gpsystem:closers anchor. Ha valamelyik anchor-komment hiányzik, a parancs megáll, és kiírja a pontos két kommentsort, amit kézzel be kell szúrni (a helyükért lásd egy frissen generált projektet); a beszúrás után futtasd újra.

Copyright © 2026