CLI referencia

add domain

A modul gyökércsomagjának domain-fájljai és a modul-szintű repository/ váz hozzáadása egy olyan modulhoz, amelyben még nincsenek meg.

Ezt egy olyan modulon futtasd, amelynek még nincs gyökér-domaincsomagja, például mert kézzel építetted, vagy egy csak surface-re lecsupaszított minimál modul.

go tool gpsystem add domain <modul> [--db <v>]

A modul-szintű közös vázakat rendereli egy meglévő modulba: a modul gyökércsomagjának domain-fájljait (a minden surface által megosztott entitások, szabályok és sentinel-hibák helye; a csomag neve maga a modul, a hívók news.Service-t és news.ErrNotFound-ot írnak) és a modul egyetlen repository/ perzisztencia-rétegének vázát. Új moduloknál erre nincs szükség: az add surface a modul első surface-e mellé automatikusan odabélyegzi mindkettőt (és kihagyja, ha a modul gyökerében már vannak .go fájlok). Az add domain a többi esetre való: egy generátor nélkül épített modulra, vagy egy olyanra, amelynek a domain-fájljait törölték.

Mit renderel

  • internal/modules/<modul>/<modul>.go: a csomagdokumentáció, benne az import irányát rögzítő szabály (http → service → <modul> (gyökércsomag) → repository; a gyökércsomag soha nem importál surface-csomagot, a handler soha nem importálja a repository-t)
  • internal/modules/<modul>/errors.go: egy ErrNotFound sentinel errs.Define-nal, mintaként arra, hogy a "nincs ilyen rekord" jellegű hibákat a gyökércsomag definiálja (vagy exportálja tovább a repositoryból), és a handlerek mindig a saját surface-ük service csomagján át ellenőrzik
  • internal/modules/<modul>/repository/doc.go: a modul közös perzisztencia-rétegének csomagváza (a sorokat leíró structok + interfész + implementáció ide kerül, modulonként egyszer)

A parancs tisztán additív: nem nyúl anchorhoz, nem módosít meglévő fájlt, csak új fájlokat hoz létre. Egy már meglévő domain-fájl normál ütközésként jelenik meg. Sikeres futáskor ezt írja ki: Domain skeleton added to module "<m>": internal/modules/<m>/{<m>.go,errors.go,repository}.

--db: nevesített kapcsolat

Alapesetben a repository-váz flat (repository/doc.go), a projekt default adatbázis-kapcsolatához kötve. A --db <név> egy korábban add db-vel hozzáadott nevesített kapcsolathoz köti, és a vázat kapcsolatnév szerinti almappaként rendereli:

go tool gpsystem add db news analytics --connector bun
go tool gpsystem add domain news --db analytics
# -> internal/modules/news/repository/analytics/doc.go

A <név>-nek már léteznie kell a modulon; ha nem, a parancs azonnal hibázik, és felsorolja a modul elérhető kapcsolatait.

Copyright © 2026