[{"data":1,"prerenderedAt":1440},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-dbx-overview":442,"-hu-dbx-overview-surround":1435},[4,45,60,81,112,129,146,173,197,213,242,280,357,373,385,404,430],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":44},"Kezdő lépések","i-lucide-rocket","\u002Fhu\u002Fgetting-started","hu\u002F1.getting-started",[10,15,20,24,29,34,39],{"title":11,"path":12,"stem":13,"icon":14},"Bevezetés","\u002Fhu\u002Fgetting-started\u002Fintroduction","hu\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Laravelből érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-laravel","hu\u002F1.getting-started\u002F2.coming-from-laravel","i-lucide-arrow-right-left",{"title":21,"path":22,"stem":23,"icon":19},"Symfonyból érkezőknek","\u002Fhu\u002Fgetting-started\u002Fcoming-from-symfony","hu\u002F1.getting-started\u002F3.coming-from-symfony",{"title":25,"path":26,"stem":27,"icon":28},"Telepítés","\u002Fhu\u002Fgetting-started\u002Finstallation","hu\u002F1.getting-started\u002F4.installation","i-lucide-download",{"title":30,"path":31,"stem":32,"icon":33},"Az első modulod","\u002Fhu\u002Fgetting-started\u002Ffirst-module","hu\u002F1.getting-started\u002F5.first-module","i-lucide-package-plus",{"title":35,"path":36,"stem":37,"icon":38},"Projektstruktúra","\u002Fhu\u002Fgetting-started\u002Fproject-structure","hu\u002F1.getting-started\u002F6.project-structure","i-lucide-folder-tree",{"title":40,"path":41,"stem":42,"icon":43},"A shop mintaalkalmazás","\u002Fhu\u002Fgetting-started\u002Fsample-app","hu\u002F1.getting-started\u002F7.sample-app","i-lucide-shopping-cart",false,{"title":46,"icon":47,"path":48,"stem":49,"children":50,"page":44},"queue","i-lucide-layers","\u002Fhu\u002Fqueue","hu\u002F10.queue",[51,56],{"title":52,"path":53,"stem":54,"icon":55},"Áttekintés","\u002Fhu\u002Fqueue\u002Foverview","hu\u002F10.queue\u002F1.overview","i-lucide-list-ordered",{"title":57,"path":58,"stem":59,"icon":47},"Taskok","\u002Fhu\u002Fqueue\u002Ftasks","hu\u002F10.queue\u002F2.tasks",{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":44},"events","i-lucide-workflow","\u002Fhu\u002Fevents","hu\u002F11.events",[66,71,76],{"title":67,"path":68,"stem":69,"icon":70},"Események","\u002Fhu\u002Fevents\u002Foverview","hu\u002F11.events\u002F1.overview","i-lucide-radio",{"title":72,"path":73,"stem":74,"icon":75},"Outbox","\u002Fhu\u002Fevents\u002Foutbox","hu\u002F11.events\u002F2.outbox","i-lucide-inbox",{"title":77,"path":78,"stem":79,"icon":80},"Ütemezés","\u002Fhu\u002Fevents\u002Fscheduler","hu\u002F11.events\u002F3.scheduler","i-lucide-calendar-clock",{"title":82,"icon":83,"path":84,"stem":85,"children":86,"page":44},"auth","i-lucide-shield-check","\u002Fhu\u002Fauth","hu\u002F12.auth",[87,92,97,102,107],{"title":88,"path":89,"stem":90,"icon":91},"Autentikáció","\u002Fhu\u002Fauth\u002Foverview","hu\u002F12.auth\u002F1.overview","i-lucide-key-round",{"title":93,"path":94,"stem":95,"icon":96},"RBAC","\u002Fhu\u002Fauth\u002Frbac","hu\u002F12.auth\u002F2.rbac","i-lucide-users",{"title":98,"path":99,"stem":100,"icon":101},"Policy-k","\u002Fhu\u002Fauth\u002Fpolicy","hu\u002F12.auth\u002F3.policy","i-lucide-gavel",{"title":103,"path":104,"stem":105,"icon":106},"Az auth önálló használata","\u002Fhu\u002Fauth\u002Fstandalone","hu\u002F12.auth\u002F4.standalone","i-lucide-plug",{"title":108,"path":109,"stem":110,"icon":111},"Social login goth-tal, önállóan","\u002Fhu\u002Fauth\u002Fsocial-standalone","hu\u002F12.auth\u002F5.social-standalone","i-lucide-log-in",{"title":113,"icon":114,"path":115,"stem":116,"children":117,"page":44},"mail","i-lucide-mail","\u002Fhu\u002Fmail","hu\u002F13.mail",[118,121,125],{"title":52,"path":119,"stem":120,"icon":114},"\u002Fhu\u002Fmail\u002Foverview","hu\u002F13.mail\u002F1.overview",{"title":122,"path":123,"stem":124,"icon":114},"SMTP","\u002Fhu\u002Fmail\u002Fsmtp","hu\u002F13.mail\u002F2.smtp",{"title":126,"path":127,"stem":128,"icon":114},"MJML","\u002Fhu\u002Fmail\u002Fmjml","hu\u002F13.mail\u002F3.mjml",{"title":130,"icon":131,"path":132,"stem":133,"children":134,"page":44},"notify","i-lucide-bell","\u002Fhu\u002Fnotify","hu\u002F14.notify",[135,138,142],{"title":52,"path":136,"stem":137,"icon":131},"\u002Fhu\u002Fnotify\u002Foverview","hu\u002F14.notify\u002F1.overview",{"title":139,"path":140,"stem":141,"icon":131},"Database csatorna","\u002Fhu\u002Fnotify\u002Fdatabase","hu\u002F14.notify\u002F2.database",{"title":143,"path":144,"stem":145,"icon":131},"Broadcast csatorna","\u002Fhu\u002Fnotify\u002Fbroadcast","hu\u002F14.notify\u002F3.broadcast",{"title":147,"icon":148,"path":149,"stem":150,"children":151,"page":44},"storage","i-lucide-hard-drive","\u002Fhu\u002Fstorage","hu\u002F15.storage",[152,155,159,163,168],{"title":52,"path":153,"stem":154,"icon":148},"\u002Fhu\u002Fstorage\u002Foverview","hu\u002F15.storage\u002F1.overview",{"title":156,"path":157,"stem":158},"Disk API","\u002Fhu\u002Fstorage\u002Fdisk-api","hu\u002F15.storage\u002F2.disk-api",{"title":160,"path":161,"stem":162,"icon":148},"Memória és helyi lemez","\u002Fhu\u002Fstorage\u002Flocal","hu\u002F15.storage\u002F3.local",{"title":164,"path":165,"stem":166,"icon":167},"S3","\u002Fhu\u002Fstorage\u002Fs3","hu\u002F15.storage\u002F4.s3","i-lucide-cloud",{"title":169,"path":170,"stem":171,"icon":172},"Tesztelés","\u002Fhu\u002Fstorage\u002Ftesting","hu\u002F15.storage\u002F5.testing","i-lucide-flask-conical",{"title":174,"icon":175,"path":176,"stem":177,"children":178,"page":44},"telemetry","i-lucide-activity","\u002Fhu\u002Ftelemetry","hu\u002F16.telemetry",[179,182,187,192],{"title":52,"path":180,"stem":181,"icon":175},"\u002Fhu\u002Ftelemetry\u002Foverview","hu\u002F16.telemetry\u002F1.overview",{"title":183,"path":184,"stem":185,"icon":186},"Logolás","\u002Fhu\u002Ftelemetry\u002Flogging","hu\u002F16.telemetry\u002F2.logging","i-lucide-scroll-text",{"title":188,"path":189,"stem":190,"icon":191},"OpenTelemetry","\u002Fhu\u002Ftelemetry\u002Fopentelemetry","hu\u002F16.telemetry\u002F3.opentelemetry","i-lucide-radar",{"title":193,"path":194,"stem":195,"icon":196},"Sentry","\u002Fhu\u002Ftelemetry\u002Fsentry","hu\u002F16.telemetry\u002F4.sentry","i-lucide-bug",{"title":198,"icon":199,"path":200,"stem":201,"children":202,"page":44},"Referencia","i-lucide-book-open","\u002Fhu\u002Freference","hu\u002F17.reference",[203,208],{"title":204,"path":205,"stem":206,"icon":207},"Konfiguráció","\u002Fhu\u002Freference\u002Fconfiguration","hu\u002F17.reference\u002F1.configuration","i-lucide-settings",{"title":209,"path":210,"stem":211,"icon":212},"Külső függőségek","\u002Fhu\u002Freference\u002Fdependencies","hu\u002F17.reference\u002F2.dependencies","i-lucide-package",{"title":214,"icon":215,"path":216,"stem":217,"children":218,"page":44},"Koncepciók","i-lucide-lightbulb","\u002Fhu\u002Fconcepts","hu\u002F2.concepts",[219,223,228,232,237],{"title":220,"path":221,"stem":222,"icon":47},"Architektúra","\u002Fhu\u002Fconcepts\u002Farchitecture","hu\u002F2.concepts\u002F1.architecture",{"title":224,"path":225,"stem":226,"icon":227},"Hibamodell","\u002Fhu\u002Fconcepts\u002Ferror-model","hu\u002F2.concepts\u002F2.error-model","i-lucide-shield-alert",{"title":204,"path":229,"stem":230,"icon":231},"\u002Fhu\u002Fconcepts\u002Fconfiguration","hu\u002F2.concepts\u002F3.configuration","i-lucide-settings-2",{"title":233,"path":234,"stem":235,"icon":236},"Codegen pipeline","\u002Fhu\u002Fconcepts\u002Fcodegen-pipeline","hu\u002F2.concepts\u002F4.codegen-pipeline","i-lucide-file-json",{"title":238,"path":239,"stem":240,"icon":241},"Design patternek","\u002Fhu\u002Fconcepts\u002Fdesign-patterns","hu\u002F2.concepts\u002F5.design-patterns","i-lucide-puzzle",{"title":243,"icon":244,"path":245,"stem":246,"children":247,"page":44},"A kit","i-lucide-box","\u002Fhu\u002Fkit","hu\u002F3.kit",[248,252,257,262,267,271,276],{"title":249,"path":250,"stem":251,"icon":244},"A kit áttekintése","\u002Fhu\u002Fkit\u002Foverview","hu\u002F3.kit\u002F1.overview",{"title":253,"path":254,"stem":255,"icon":256},"Alkalmazás-életciklus","\u002Fhu\u002Fkit\u002Fapp","hu\u002F3.kit\u002F2.app","i-lucide-power",{"title":258,"path":259,"stem":260,"icon":261},"Szerver","\u002Fhu\u002Fkit\u002Fserver","hu\u002F3.kit\u002F3.server","i-lucide-server",{"title":263,"path":264,"stem":265,"icon":266},"Worker","\u002Fhu\u002Fkit\u002Fworker","hu\u002F3.kit\u002F4.worker","i-lucide-cog",{"title":268,"path":269,"stem":270,"icon":70},"Realtime","\u002Fhu\u002Fkit\u002Frealtime","hu\u002F3.kit\u002F5.realtime",{"title":272,"path":273,"stem":274,"icon":275},"Migrációk","\u002Fhu\u002Fkit\u002Fmigrations","hu\u002F3.kit\u002F6.migrations","i-lucide-file-stack",{"title":277,"path":278,"stem":279,"icon":111},"Social login","\u002Fhu\u002Fkit\u002Fsocial-login","hu\u002F3.kit\u002F7.social-login",{"title":281,"icon":282,"path":283,"stem":284,"children":285,"page":44},"CLI referencia","i-lucide-terminal","\u002Fhu\u002Fcli","hu\u002F4.cli",[286,289,294,299,304,309,314,319,324,329,334,338,343,348,352],{"title":52,"path":287,"stem":288,"icon":282},"\u002Fhu\u002Fcli\u002Foverview","hu\u002F4.cli\u002F1.overview",{"title":290,"path":291,"stem":292,"icon":293},"add db","\u002Fhu\u002Fcli\u002Fadd-db","hu\u002F4.cli\u002F10.add-db","i-lucide-database-zap",{"title":295,"path":296,"stem":297,"icon":298},"add compose \u002F add docker","\u002Fhu\u002Fcli\u002Fadd-compose","hu\u002F4.cli\u002F11.add-compose","i-lucide-container",{"title":300,"path":301,"stem":302,"icon":303},"add mail","\u002Fhu\u002Fcli\u002Fadd-mail","hu\u002F4.cli\u002F12.add-mail","i-lucide-mail-plus",{"title":305,"path":306,"stem":307,"icon":308},"add notification","\u002Fhu\u002Fcli\u002Fadd-notification","hu\u002F4.cli\u002F13.add-notification","i-lucide-bell-plus",{"title":310,"path":311,"stem":312,"icon":313},"add realtime","\u002Fhu\u002Fcli\u002Fadd-realtime","hu\u002F4.cli\u002F14.add-realtime","i-lucide-radio-tower",{"title":315,"path":316,"stem":317,"icon":318},"add seeder","\u002Fhu\u002Fcli\u002Fadd-seeder","hu\u002F4.cli\u002F15.add-seeder","i-lucide-sprout",{"title":320,"path":321,"stem":322,"icon":323},"new project","\u002Fhu\u002Fcli\u002Fnew-project","hu\u002F4.cli\u002F2.new-project","i-lucide-folder-plus",{"title":325,"path":326,"stem":327,"icon":328},"new module","\u002Fhu\u002Fcli\u002Fnew-module","hu\u002F4.cli\u002F3.new-module","i-lucide-blocks",{"title":330,"path":331,"stem":332,"icon":333},"add surface","\u002Fhu\u002Fcli\u002Fadd-surface","hu\u002F4.cli\u002F4.add-surface","i-lucide-layers-2",{"title":335,"path":336,"stem":337,"icon":244},"add core","\u002Fhu\u002Fcli\u002Fadd-core","hu\u002F4.cli\u002F5.add-core",{"title":339,"path":340,"stem":341,"icon":342},"add handler","\u002Fhu\u002Fcli\u002Fadd-handler","hu\u002F4.cli\u002F6.add-handler","i-lucide-webhook",{"title":344,"path":345,"stem":346,"icon":347},"new migration","\u002Fhu\u002Fcli\u002Fnew-migration","hu\u002F4.cli\u002F7.new-migration","i-lucide-file-plus",{"title":349,"path":350,"stem":351,"icon":266},"worker generátorok","\u002Fhu\u002Fcli\u002Fworker-generators","hu\u002F4.cli\u002F8.worker-generators",{"title":353,"path":354,"stem":355,"icon":356},"upgrade templates","\u002Fhu\u002Fcli\u002Fupgrade-templates","hu\u002F4.cli\u002F9.upgrade-templates","i-lucide-refresh-cw",{"title":358,"icon":227,"path":359,"stem":360,"children":361,"page":44},"errs","\u002Fhu\u002Ferrs","hu\u002F5.errs",[362,365,369],{"title":52,"path":363,"stem":364,"icon":227},"\u002Fhu\u002Ferrs\u002Foverview","hu\u002F5.errs\u002F1.overview",{"title":366,"path":367,"stem":368},"API","\u002Fhu\u002Ferrs\u002Fapi","hu\u002F5.errs\u002F2.api",{"title":370,"path":371,"stem":372,"icon":227},"Integráció","\u002Fhu\u002Ferrs\u002Fintegration","hu\u002F5.errs\u002F3.integration",{"title":374,"icon":231,"path":375,"stem":376,"children":377,"page":44},"envconf","\u002Fhu\u002Fenvconf","hu\u002F6.envconf",[378,381],{"title":52,"path":379,"stem":380,"icon":231},"\u002Fhu\u002Fenvconf\u002Foverview","hu\u002F6.envconf\u002F1.overview",{"title":382,"path":383,"stem":384},"Receptek","\u002Fhu\u002Fenvconf\u002Frecipes","hu\u002F6.envconf\u002F2.recipes",{"title":386,"icon":387,"path":388,"stem":389,"children":390,"page":44},"httperr","i-lucide-globe","\u002Fhu\u002Fhttperr","hu\u002F7.httperr",[391,394,399],{"title":52,"path":392,"stem":393,"icon":387},"\u002Fhu\u002Fhttperr\u002Foverview","hu\u002F7.httperr\u002F1.overview",{"title":395,"path":396,"stem":397,"icon":398},"Hibaválaszok","\u002Fhu\u002Fhttperr\u002Ferror-responses","hu\u002F7.httperr\u002F2.error-responses","i-lucide-octagon-alert",{"title":400,"path":401,"stem":402,"icon":403},"Validáció","\u002Fhu\u002Fhttperr\u002Fvalidation","hu\u002F7.httperr\u002F3.validation","i-lucide-badge-check",{"title":405,"icon":406,"path":407,"stem":408,"children":409,"page":44},"dbx","i-lucide-database","\u002Fhu\u002Fdbx","hu\u002F8.dbx",[410,413,417,421,426],{"title":52,"path":411,"stem":412,"icon":406},"\u002Fhu\u002Fdbx\u002Foverview","hu\u002F8.dbx\u002F1.overview",{"title":414,"path":415,"stem":416,"icon":106},"pgx","\u002Fhu\u002Fdbx\u002Fpg","hu\u002F8.dbx\u002F2.pg",{"title":418,"path":419,"stem":420,"icon":47},"bun","\u002Fhu\u002Fdbx\u002Fbunx","hu\u002F8.dbx\u002F3.bunx",{"title":422,"path":423,"stem":424,"icon":425},"Tranzakciók","\u002Fhu\u002Fdbx\u002Ftransactions","hu\u002F8.dbx\u002F4.transactions","i-lucide-git-merge",{"title":427,"path":428,"stem":429,"icon":318},"Seederek","\u002Fhu\u002Fdbx\u002Fseed","hu\u002F8.dbx\u002F5.seed",{"title":431,"icon":55,"path":432,"stem":433,"children":434,"page":44},"paginate","\u002Fhu\u002Fpaginate","hu\u002F9.paginate",[435,438],{"title":52,"path":436,"stem":437,"icon":55},"\u002Fhu\u002Fpaginate\u002Foverview","hu\u002F9.paginate\u002F1.overview",{"title":439,"path":440,"stem":441,"icon":19},"Cursor-lapozás","\u002Fhu\u002Fpaginate\u002Fcursor","hu\u002F9.paginate\u002F2.cursor",{"id":443,"title":52,"body":444,"description":1428,"extension":1429,"links":1430,"meta":1431,"navigation":1432,"path":411,"seo":1433,"stem":412,"__hash__":1434},"docs_hu\u002Fhu\u002F8.dbx\u002F1.overview.md",{"type":445,"value":446,"toc":1419},"minimark",[447,472,518,542,546,585,596,697,703,706,711,759,766,894,924,928,932,949,1004,1038,1070,1073,1144,1168,1171,1175,1192,1310,1317,1321,1355,1362,1366,1415],[448,449,450,451,454,455,458,459,462,463,466,467,471],"p",{},"A ",[452,453,405],"code",{}," egy önálló Go modul (",[452,456,457],{},"github.com\u002Fgp-system\u002Fdbx","): adatbázis-agnosztikus kontrakt, nem driver. Mindössze két dolgot definiál: a ",[452,460,461],{},"Config","-ot, ami egy PostgreSQL-kapcsolatot ír le, és a ",[452,464,465],{},"Transactor"," interfészt, amitől a service-ek függenek, hogy egy tranzakcióban több repositoryt fogjanak össze. ",[468,469,470],"strong",{},"A gyökér package-nek saját adatbázis-driver függősége nincs",": a tényleges implementáció egy alcsomagban él, és azzal választod ki, hogy melyiket importálod:",[473,474,475,498],"ul",{},[476,477,478,486,487,490,491,494,495,497],"li",{},[479,480,481],"a",{"href":415},[468,482,483],{},[452,484,485],{},"dbx\u002Fpg",": a pgx-natív stack (az alapértelmezés): pool-építés, a ",[452,488,489],{},"DBTX"," query executor és egy ",[452,492,493],{},"pgx.Tx","-re épülő ",[452,496,465],{},".",[476,499,500,507,508,513,514,517],{},[479,501,502],{"href":419},[468,503,504],{},[452,505,506],{},"dbx\u002Fbunx",": opcionális adapter azoknak a projekteknek, amik a ",[479,509,418],{"href":510,"rel":511},"https:\u002F\u002Fbun.uptrace.dev",[512],"nofollow"," query buildert preferálják, ",[452,515,516],{},"bun.Tx","-re épülve.",[448,519,520,521,524,525,528,529,531,532,534,535,537,538,541],{},"Egy binárisba mindig csak az egyik linkelődik be. A service- és repository-réteged a ",[452,522,523],{},"dbx.Transactor","-tól és a ",[452,526,527],{},"dbx.Config","-tól függ, sosem a konkrét implementációtól. Ezért egy service kódja betűre azonos, akár pgx, akár bun fut alatta. A ",[452,530,405],{}," a kittel és anélkül is ugyanúgy működik; a gpsystem kit ",[452,533,320],{},"\u002F",[452,536,325],{}," generátorai csupán kiválasztják neked az egyik alcsomagot, és bekötik a generált ",[452,539,540],{},"main.go","-ba.",[543,544,25],"h2",{"id":545},"telepítés",[547,548,553],"pre",{"className":549,"code":550,"language":551,"meta":552,"style":552},"language-sh shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","go get github.com\u002Fgp-system\u002Fdbx@v0.1.0 # a kit is ezt a taget használja\ngo get github.com\u002Fgp-system\u002Fdbx@latest\n","sh","",[452,554,555,575],{"__ignoreMap":552},[556,557,560,564,568,571],"span",{"class":558,"line":559},"line",1,[556,561,563],{"class":562},"sBMFI","go",[556,565,567],{"class":566},"sfazB"," get",[556,569,570],{"class":566}," github.com\u002Fgp-system\u002Fdbx@v0.1.0",[556,572,574],{"class":573},"sHwdD"," # a kit is ezt a taget használja\n",[556,576,578,580,582],{"class":558,"line":577},2,[556,579,563],{"class":562},[556,581,567],{"class":566},[556,583,584],{"class":566}," github.com\u002Fgp-system\u002Fdbx@latest\n",[448,586,587,588,590,591,595],{},"Go 1.25+. A gyökér ",[452,589,405],{}," package csak az ",[479,592,593],{"href":363},[452,594,358],{},"-től függ; ami driver-specifikus, az a saját importja mögött él, tehát hogy mit húzol be ténylegesen, az alcsomagtól függ:",[597,598,599,612],"table",{},[600,601,602],"thead",{},[603,604,605,609],"tr",{},[606,607,608],"th",{},"Import-út",[606,610,611],{},"Mit ad hozzá",[613,614,615,634,654,672,684],"tbody",{},[603,616,617,622],{},[618,619,620],"td",{},[452,621,457],{},[618,623,624,625,627,628,630,631,633],{},"csak ",[452,626,358],{},": ",[452,629,461],{},", ",[452,632,465],{},", driver nélkül",[603,635,636,641],{},[618,637,638],{},[452,639,640],{},"github.com\u002Fgp-system\u002Fdbx\u002Fpg",[618,642,643,644,630,649],{},"+ ",[479,645,648],{"href":646,"rel":647},"https:\u002F\u002Fgithub.com\u002Fjackc\u002Fpgx",[512],"pgx v5",[479,650,653],{"href":651,"rel":652},"https:\u002F\u002Fgithub.com\u002Fexaring\u002Fotelpgx",[512],"otelpgx",[603,655,656,661],{},[618,657,658],{},[452,659,660],{},"github.com\u002Fgp-system\u002Fdbx\u002Fbunx",[618,662,643,663,630,666,630,669],{},[479,664,418],{"href":510,"rel":665},[512],[452,667,668],{},"bun\u002Fdialect\u002Fpgdialect",[452,670,671],{},"bunotel",[603,673,674,679],{},[618,675,676],{},[452,677,678],{},"github.com\u002Fgp-system\u002Fdbx\u002Fseed",[618,680,624,681,683],{},[452,682,358],{},", ugyanúgy mint a gyökér package",[603,685,686,691],{},[618,687,688],{},[452,689,690],{},"github.com\u002Fgp-system\u002Fdbx\u002Fseed\u002Fbunx",[618,692,693,694,696],{},"+ bun (a ",[452,695,506],{},"-en át)",[448,698,699,700,702],{},"Egy projekt, ami csak a ",[452,701,485],{},"-t importálja, sosem linkeli be a bunt a binárisába, és fordítva.",[543,704,461],{"id":705},"config",[448,707,450,708,710],{},[452,709,527],{}," egyetlen PostgreSQL-kapcsolat leírása. Az alkalmazás konfig-structjába prefixszel komponálod be:",[547,712,715],{"className":713,"code":714,"language":563,"meta":552,"style":552},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","type Config struct {\n    DB dbx.Config `envPrefix:\"DB_\"`\n}\n",[452,716,717,732,753],{"__ignoreMap":552},[556,718,719,723,726,729],{"class":558,"line":559},[556,720,722],{"class":721},"sMK4o","type",[556,724,725],{"class":562}," Config",[556,727,728],{"class":721}," struct",[556,730,731],{"class":721}," {\n",[556,733,734,738,740,742,744,747,750],{"class":558,"line":577},[556,735,737],{"class":736},"sTEyZ","    DB ",[556,739,405],{"class":562},[556,741,497],{"class":721},[556,743,461],{"class":562},[556,745,746],{"class":721}," `",[556,748,749],{"class":566},"envPrefix:\"DB_\"",[556,751,752],{"class":721},"`\n",[556,754,756],{"class":558,"line":755},3,[556,757,758],{"class":721},"}\n",[448,760,761,762,765],{},"Ezzel a következő env-változókra képződik le (a generált projektek ",[452,763,764],{},".env.example","-je pontosan ezeket sorolja fel):",[597,767,768,781],{},[600,769,770],{},[603,771,772,775,778],{},[606,773,774],{},"Env-változó",[606,776,777],{},"Mező",[606,779,780],{},"Default",[613,782,783,800,817,832,846,860,877],{},[603,784,785,790,795],{},[618,786,787],{},[452,788,789],{},"DB_HOST",[618,791,792],{},[452,793,794],{},"Host",[618,796,797],{},[452,798,799],{},"localhost",[603,801,802,807,812],{},[618,803,804],{},[452,805,806],{},"DB_PORT",[618,808,809],{},[452,810,811],{},"Port",[618,813,814],{},[452,815,816],{},"5432",[603,818,819,824,829],{},[618,820,821],{},[452,822,823],{},"DB_USER",[618,825,826],{},[452,827,828],{},"User",[618,830,831],{},"kötelező",[603,833,834,839,844],{},[618,835,836],{},[452,837,838],{},"DB_PASSWORD",[618,840,841],{},[452,842,843],{},"Password",[618,845,831],{},[603,847,848,853,858],{},[618,849,850],{},[452,851,852],{},"DB_NAME",[618,854,855],{},[452,856,857],{},"Database",[618,859,831],{},[603,861,862,867,872],{},[618,863,864],{},[452,865,866],{},"DB_SSLMODE",[618,868,869],{},[452,870,871],{},"SSLMode",[618,873,874],{},[452,875,876],{},"disable",[603,878,879,884,889],{},[618,880,881],{},[452,882,883],{},"DB_MAX_CONNS",[618,885,886],{},[452,887,888],{},"MaxConns",[618,890,891],{},[452,892,893],{},"10",[448,895,450,896,899,900,903,904,910,911,916,917,919,920,923],{},[452,897,898],{},"DSN()"," metódus ",[452,901,902],{},"postgres:\u002F\u002F"," kapcsolati URL-lé rendereli a konfigot. Ezt fogyasztja a ",[479,905,907],{"href":906},"\u002Fhu\u002Fdbx\u002Fpg#pool",[452,908,909],{},"pg.NewPool"," és a generált ",[479,912,913],{"href":273},[452,914,915],{},"cmd\u002Fmigrate"," bináris is. A betöltést az ",[479,918,374],{"href":379}," végzi, ",[452,921,922],{},".env","-támogatással.",[925,926,927],"note",{},"Nincs köztes konfig-fájl: az env-változók közvetlenül egy típusos structba töltődnek, és a hiányzó kötelező érték már startupkor hibát dob, nem az első query-nél.",[543,929,931],{"id":930},"nevesített-kapcsolatok","Nevesített kapcsolatok",[448,933,934,935,938,939,942,943,948],{},"Egy modul default kapcsolata, a ",[452,936,937],{},"DB_*"," alatt komponált ",[452,940,941],{},"cfg.DB",", fedi a gyakori esetet: egy projekt, egy adatbázis, egy connector. Egy második, független kapcsolat ugyanígy komponálódik, saját prefix alatt, ",[479,944,945],{"href":383},[452,946,947],{},"envconf.LoadPrefixed","-szel betöltve:",[547,950,952],{"className":713,"code":951,"language":563,"meta":552,"style":552},"type Config struct {\n    DB          dbx.Config `envPrefix:\"DB_\"`\n    DBAnalytics dbx.Config `envPrefix:\"DB_ANALYTICS_\"`\n}\n",[452,953,954,964,981,999],{"__ignoreMap":552},[556,955,956,958,960,962],{"class":558,"line":559},[556,957,722],{"class":721},[556,959,725],{"class":562},[556,961,728],{"class":721},[556,963,731],{"class":721},[556,965,966,969,971,973,975,977,979],{"class":558,"line":577},[556,967,968],{"class":736},"    DB          ",[556,970,405],{"class":562},[556,972,497],{"class":721},[556,974,461],{"class":562},[556,976,746],{"class":721},[556,978,749],{"class":566},[556,980,752],{"class":721},[556,982,983,986,988,990,992,994,997],{"class":558,"line":755},[556,984,985],{"class":736},"    DBAnalytics ",[556,987,405],{"class":562},[556,989,497],{"class":721},[556,991,461],{"class":562},[556,993,746],{"class":721},[556,995,996],{"class":566},"envPrefix:\"DB_ANALYTICS_\"",[556,998,752],{"class":721},[556,1000,1002],{"class":558,"line":1001},4,[556,1003,758],{"class":721},[448,1005,1006,1007,630,1010,1013,1014,1018,1019,1021,1022,1025,1026,1029,1030,1033,1034,1037],{},"ami a ",[452,1008,1009],{},"DB_ANALYTICS_HOST",[452,1011,1012],{},"DB_ANALYTICS_USER"," és így tovább változókat olvassa, teljesen függetlenül az első kapcsolat pooljától, tranzakciójától és hibakezelésétől. Generált projektben ezt a mintát az ",[479,1015,1016],{"href":291},[452,1017,290],{}," generátor drótozza be helyetted: saját ",[452,1020,527],{},"-ot ",[452,1023,1024],{},"DB_\u003CNÉV>_*"," alatt, saját pgx poolt, és ",[452,1027,1028],{},"\u003CNév>DB"," \u002F ",[452,1031,1032],{},"\u003CNév>Transactor"," mezőket a modul ",[452,1035,1036],{},"Dependencies","-én.",[448,1039,1040,1041,1043,1044,1046,1047,1050,1051,1053,1054,1057,1058,1064,1065,1069],{},"A connector (",[452,1042,414],{}," vagy ",[452,1045,418],{},") ",[468,1048,1049],{},"kapcsolatonként"," dől el, nem projektenként: egy modul kombinálhat pgx-natív defaultot bun-alapú nevesített kapcsolattal, vagy fordítva. Ez egyenesen a lenti ",[452,1052,465],{},"-határból következik: a ",[452,1055,1056],{},"WithinTransaction"," egyik kapcsolaton sem terjed át a másikra, így nincs kapcsolatok közötti tranzakció, amit konzisztensen kellene tartani, és nincs ok minden kapcsolatot ugyanarra a stackre kényszeríteni. Az ",[479,1059,1061],{"href":1060},"\u002Fhu\u002Fcli\u002Fadd-surface#repository-bek%C3%B6t%C3%A9se-neves%C3%ADtett-kapcsolathoz",[452,1062,1063],{},"add surface --db"," egy modul közös repository-vázát köti egy nevesített kapcsolathoz; a ",[479,1066,1067],{"href":273},[452,1068,915],{}," mindig csak a default kapcsolatot célozza.",[543,1071,465],{"id":1072},"transactor",[547,1074,1076],{"className":713,"code":1075,"language":563,"meta":552,"style":552},"type Transactor interface {\n    WithinTransaction(ctx context.Context, fn func(ctx context.Context) error) error\n}\n",[452,1077,1078,1090,1140],{"__ignoreMap":552},[556,1079,1080,1082,1085,1088],{"class":558,"line":559},[556,1081,722],{"class":721},[556,1083,1084],{"class":562}," Transactor",[556,1086,1087],{"class":721}," interface",[556,1089,731],{"class":721},[556,1091,1092,1096,1099,1103,1106,1108,1111,1114,1117,1120,1122,1124,1126,1128,1131,1135,1137],{"class":558,"line":577},[556,1093,1095],{"class":1094},"s2Zo4","    WithinTransaction",[556,1097,1098],{"class":721},"(",[556,1100,1102],{"class":1101},"sHdIc","ctx",[556,1104,1105],{"class":562}," context",[556,1107,497],{"class":721},[556,1109,1110],{"class":562},"Context",[556,1112,1113],{"class":721},",",[556,1115,1116],{"class":1101}," fn",[556,1118,1119],{"class":721}," func(",[556,1121,1102],{"class":1101},[556,1123,1105],{"class":562},[556,1125,497],{"class":721},[556,1127,1110],{"class":562},[556,1129,1130],{"class":721},")",[556,1132,1134],{"class":1133},"spNyl"," error",[556,1136,1130],{"class":721},[556,1138,1139],{"class":1133}," error\n",[556,1141,1142],{"class":558,"line":755},[556,1143,758],{"class":721},[448,1145,1146,1147,1150,1151,1153,1154,1157,1158,1160,1161,1164,1165,1167],{},"Ez az egyetlen interfész, amin keresztül az alkalmazáskód tranzakciót kezel. A tranzakciót a context hordozza, így az ",[452,1148,1149],{},"fn","-en belül minden adatbázis-hívás, a ",[452,1152,485],{}," ",[452,1155,1156],{},"DB","-jén vagy a ",[452,1159,506],{}," resolverein keresztül, automatikusan csatlakozik hozzá, anélkül hogy a repositoryk tudnának róla. ",[452,1162,1163],{},"nil","-re commit, hibára vagy panicre rollback; beágyazott hívás a külső tranzakcióhoz csatlakozik. A teljes szemantikát és a mintát a ",[479,1166,422],{"href":423}," oldal tárgyalja.",[448,1169,1170],{},"A tranzakció a contextben utazik, nem egy globális connection-menedzserben.",[543,1172,1174],{"id":1173},"melyiket-válaszd-pgx-vagy-bun","Melyiket válaszd: pgx vagy bun?",[448,1176,1177,1178,1181,1182,1185,1186,1188,1189,1191],{},"A választás ",[468,1179,1180],{},"projektenkénti és a generáláskor dől el"," (",[452,1183,1184],{},"--db pgx|bun",", default ",[452,1187,414],{},"), ha a kit generátorait használod; a manifest rögzíti, és minden későbbi generátor ehhez igazodik: lásd ",[479,1190,320],{"href":321},". Önállóan, kit nélkül a választás egyszerűen az, melyik alcsomagot importálod.",[597,1193,1194,1210],{},[600,1195,1196],{},[603,1197,1198,1200,1205],{},[606,1199],{},[606,1201,1202,1204],{},[452,1203,485],{}," (pgx)",[606,1206,1207,1209],{},[452,1208,506],{}," (bun)",[613,1211,1212,1239,1264,1285,1299],{},[603,1213,1214,1217,1229],{},[618,1215,1216],{},"Query-írás",[618,1218,1219,1220,534,1223,534,1226,1130],{},"kézzel írt SQL (",[452,1221,1222],{},"Exec",[452,1224,1225],{},"Query",[452,1227,1228],{},"QueryRow",[618,1230,1231,1232,630,1235,1238],{},"bun query builder (",[452,1233,1234],{},"NewSelect",[452,1236,1237],{},"NewInsert",", …) + raw SQL escape hatch",[603,1240,1241,1244,1255],{},[618,1242,1243],{},"Visszaadott típusok",[618,1245,1246,630,1249,630,1252],{},[452,1247,1248],{},"pgconn.CommandTag",[452,1250,1251],{},"pgx.Rows",[452,1253,1254],{},"pgx.Row",[618,1256,1257,1260,1261],{},[452,1258,1259],{},"bun.IDB",", bun modellek, ",[452,1262,1263],{},"sql.Result",[603,1265,1266,1269,1275],{},[618,1267,1268],{},"sqlc",[618,1270,1271,1272,1274],{},"közvetlenül kompatibilis (",[452,1273,489],{}," azonos)",[618,1276,1277,1280,1281,1284],{},[452,1278,1279],{},"database\u002Fsql"," módban, a ",[452,1282,1283],{},"Conn"," resolveren át",[603,1286,1287,1290,1295],{},[618,1288,1289],{},"Tranzakció-hordozó",[618,1291,1292,1294],{},[452,1293,493],{}," a contextben",[618,1296,1297,1294],{},[452,1298,516],{},[603,1300,1301,1304,1307],{},[618,1302,1303],{},"Mikor jó",[618,1305,1306],{},"teljes kontroll az SQL felett, minimális réteg",[618,1308,1309],{},"struct-alapú modellek, builder-kényelem",[448,1311,1312,1313,1316],{},"Ökölszabály: ha szeretsz SQL-t írni, maradj a pgx-nél: kevesebb réteg, kevesebb meglepetés. Ha egy query buildert szeretnél struct-alapú modellekkel, a bun ismerős lesz, de ",[479,1314,1315],{"href":419},"nem egy ActiveRecord\u002FEloquent-stílusú ORM",", és ezt érdemes előre tudni.",[543,1318,1320],{"id":1319},"szándékosan-nincs-orm-absztrakció","Szándékosan nincs ORM-absztrakció",[448,1322,1323,1324,1328,1329,1153,1331,1334,1335,1153,1337,1339,1340,1153,1342,1344,1345,1347,1348,1350,1351,1354],{},"A kit elve itt is a ",[479,1325,1327],{"href":1326},"\u002Fhu\u002Fgetting-started\u002Fintroduction#nem-rejti-el-a-f%C3%BCgg%C5%91s%C3%A9geket","centralizál, nem absztrahál",": a ",[452,1330,405],{},[468,1332,1333],{},"nem"," definiál közös query-interfészt a két stack fölé. A ",[452,1336,485],{},[452,1338,1251],{},"-t ad vissza, a ",[452,1341,506],{},[452,1343,1259],{},"-t. A pgx és a bun upstream dokumentációja, példái és Stack Overflow-válaszai változtatás nélkül érvényesek a projektedre. A közös nevező tudatosan minimális: a kapcsolat leírása (",[452,1346,461],{},") és a tranzakció-határ (",[452,1349,465],{},"), mert ez a kettő az, amitől a ",[468,1352,1353],{},"service-rétegnek"," függenie kell.",[448,1356,1357,1358,1361],{},"Ebből következik a séma-kezelés is: nincs schema builder, a ",[479,1359,1360],{"href":273},"migrációk"," sima, beágyazott SQL-fájlok.",[543,1363,1365],{"id":1364},"a-szekció-oldalai","A szekció oldalai",[473,1367,1368,1378,1383,1394,1407],{},[476,1369,1370,1372,1373,630,1375,1377],{},[479,1371,414],{"href":415},": a default stack: pool, ",[452,1374,489],{},[452,1376,1156],{},", repositoryk",[476,1379,1380,1382],{},[479,1381,418],{"href":419},": az opcionális query builder adapter",[476,1384,1385,1328,1387,1389,1390,1393],{},[479,1386,422],{"href":423},[452,1388,465],{}," minta mélységében, a ",[452,1391,1392],{},"PlaceOrder"," példával",[476,1395,1396,1398,1399,1402,1403,1406],{},[479,1397,427],{"href":428},": idempotens alapadat a ",[452,1400,1401],{},"dbx\u002Fseed","-del és a ",[452,1404,1405],{},"dbx\u002Fseed\u002Fbunx","-szal",[476,1408,1409,1411,1412,1414],{},[479,1410,272],{"href":273},": számozott SQL-fájlok, beágyazva, saját ",[452,1413,915],{}," binárissal",[1416,1417,1418],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":552,"searchDepth":577,"depth":577,"links":1420},[1421,1422,1423,1424,1425,1426,1427],{"id":545,"depth":577,"text":25},{"id":705,"depth":577,"text":461},{"id":930,"depth":577,"text":931},{"id":1072,"depth":577,"text":465},{"id":1173,"depth":577,"text":1174},{"id":1319,"depth":577,"text":1320},{"id":1364,"depth":577,"text":1365},"A dbx modul, az adatbázis-agnosztikus kontrakt, amitől a kódod függ, és a két implementáció, amit importtal választasz.","md",null,{},{"icon":406},{"title":52,"description":1428},"wrwqjkyAfGFmIJwR1DjEyA0gLzgaAYKzNTRY6UgCuss",[1436,1438],{"title":400,"path":401,"stem":402,"description":1437,"icon":403,"children":-1},"Struct-tag-alapú kérés-validáció go-playground\u002Fvalidatorral, strict middleware-ként futtatva, 422 problem-válaszokkal.",{"title":414,"path":415,"stem":416,"description":1439,"icon":106,"children":-1},"A pgx-natív adatbázis-stack: pool, a DBTX query executor és a contextet figyelő DB.",1785445882973]