[{"data":1,"prerenderedAt":1811},["ShallowReactive",2],{"navigation_docs_hu":3,"-hu-storage-testing":442,"-hu-storage-testing-surround":1806},[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":169,"body":444,"description":1799,"extension":1800,"links":1801,"meta":1802,"navigation":1803,"path":170,"seo":1804,"stem":171,"__hash__":1805},"docs_hu\u002Fhu\u002F15.storage\u002F5.testing.md",{"type":445,"value":446,"toc":1792},"minimark",[447,460,465,760,785,790,828,857,861,871,1693,1696,1756,1760,1788],[448,449,450,451,455,456,459],"p",{},"A ",[452,453,454],"code",{},"storage\u002Fstoragetest"," egy közös konformancia-teszt-suite: ugyanaz a viselkedési tesztkészlet fut le minden ",[452,457,458],{},"Driver","-implementáción, beépítettn vagy sajáton egyaránt, így az, hogy \"tényleg úgy viselkedik-e ez a driver, mint a többi\", egyetlen függvény futtatásával eldönthető kérdés, nem driverenként külön, kézzel megírt tesztfájlé.",[461,462,464],"h2",{"id":463},"futtatás-egy-driver-ellen","Futtatás egy Driver ellen",[466,467,472],"pre",{"className":468,"code":469,"language":470,"meta":471,"style":471},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import (\n    \"testing\"\n\n    \"github.com\u002Fgp-system\u002Fstorage\u002Fstoragetest\"\n)\n\nfunc TestMyDriver(t *testing.T) {\n    storagetest.Run(t, func(t *testing.T) storage.Driver {\n        dir := t.TempDir()\n        driver, err := local.New(local.Config{Root: dir, Secret: \"test-secret\"})\n        if err != nil {\n            t.Fatal(err)\n        }\n        return driver\n    }, storagetest.Options{})\n}\n","go","",[452,473,474,487,500,507,517,523,528,562,605,625,688,704,722,728,737,754],{"__ignoreMap":471},[475,476,479,483],"span",{"class":477,"line":478},"line",1,[475,480,482],{"class":481},"s7zQu","import",[475,484,486],{"class":485},"sMK4o"," (\n",[475,488,490,493,497],{"class":477,"line":489},2,[475,491,492],{"class":485},"    \"",[475,494,496],{"class":495},"sBMFI","testing",[475,498,499],{"class":485},"\"\n",[475,501,503],{"class":477,"line":502},3,[475,504,506],{"emptyLinePlaceholder":505},true,"\n",[475,508,510,512,515],{"class":477,"line":509},4,[475,511,492],{"class":485},[475,513,514],{"class":495},"github.com\u002Fgp-system\u002Fstorage\u002Fstoragetest",[475,516,499],{"class":485},[475,518,520],{"class":477,"line":519},5,[475,521,522],{"class":485},")\n",[475,524,526],{"class":477,"line":525},6,[475,527,506],{"emptyLinePlaceholder":505},[475,529,531,534,538,541,545,548,550,553,556,559],{"class":477,"line":530},7,[475,532,533],{"class":485},"func",[475,535,537],{"class":536},"s2Zo4"," TestMyDriver",[475,539,540],{"class":485},"(",[475,542,544],{"class":543},"sHdIc","t",[475,546,547],{"class":485}," *",[475,549,496],{"class":495},[475,551,552],{"class":485},".",[475,554,555],{"class":495},"T",[475,557,558],{"class":485},")",[475,560,561],{"class":485}," {\n",[475,563,565,569,571,574,576,578,581,584,586,588,590,592,594,596,599,601,603],{"class":477,"line":564},8,[475,566,568],{"class":567},"sTEyZ","    storagetest",[475,570,552],{"class":485},[475,572,573],{"class":536},"Run",[475,575,540],{"class":485},[475,577,544],{"class":567},[475,579,580],{"class":485},",",[475,582,583],{"class":485}," func(",[475,585,544],{"class":543},[475,587,547],{"class":485},[475,589,496],{"class":495},[475,591,552],{"class":485},[475,593,555],{"class":495},[475,595,558],{"class":485},[475,597,598],{"class":495}," storage",[475,600,552],{"class":485},[475,602,458],{"class":495},[475,604,561],{"class":485},[475,606,608,611,614,617,619,622],{"class":477,"line":607},9,[475,609,610],{"class":567},"        dir ",[475,612,613],{"class":485},":=",[475,615,616],{"class":567}," t",[475,618,552],{"class":485},[475,620,621],{"class":536},"TempDir",[475,623,624],{"class":485},"()\n",[475,626,628,631,633,636,638,641,643,646,648,651,653,656,659,662,665,668,670,673,675,678,682,685],{"class":477,"line":627},10,[475,629,630],{"class":567},"        driver",[475,632,580],{"class":485},[475,634,635],{"class":567}," err ",[475,637,613],{"class":485},[475,639,640],{"class":567}," local",[475,642,552],{"class":485},[475,644,645],{"class":536},"New",[475,647,540],{"class":485},[475,649,650],{"class":495},"local",[475,652,552],{"class":485},[475,654,655],{"class":495},"Config",[475,657,658],{"class":485},"{",[475,660,661],{"class":567},"Root",[475,663,664],{"class":485},":",[475,666,667],{"class":567}," dir",[475,669,580],{"class":485},[475,671,672],{"class":567}," Secret",[475,674,664],{"class":485},[475,676,677],{"class":485}," \"",[475,679,681],{"class":680},"sfazB","test-secret",[475,683,684],{"class":485},"\"",[475,686,687],{"class":485},"})\n",[475,689,691,694,696,699,702],{"class":477,"line":690},11,[475,692,693],{"class":481},"        if",[475,695,635],{"class":567},[475,697,698],{"class":485},"!=",[475,700,701],{"class":485}," nil",[475,703,561],{"class":485},[475,705,707,710,712,715,717,720],{"class":477,"line":706},12,[475,708,709],{"class":567},"            t",[475,711,552],{"class":485},[475,713,714],{"class":536},"Fatal",[475,716,540],{"class":485},[475,718,719],{"class":567},"err",[475,721,522],{"class":485},[475,723,725],{"class":477,"line":724},13,[475,726,727],{"class":485},"        }\n",[475,729,731,734],{"class":477,"line":730},14,[475,732,733],{"class":481},"        return",[475,735,736],{"class":567}," driver\n",[475,738,740,743,746,748,751],{"class":477,"line":739},15,[475,741,742],{"class":485},"    },",[475,744,745],{"class":495}," storagetest",[475,747,552],{"class":485},[475,749,750],{"class":495},"Options",[475,752,753],{"class":485},"{})\n",[475,755,757],{"class":477,"line":756},16,[475,758,759],{"class":485},"}\n",[448,761,450,762,765,766,769,770,772,773,776,777,780,781,784],{},[452,763,764],{},"Run(t, factory, opts)"," egy friss-drivert-adó factoryt vár, amit subtestenként egyszer hív, hogy a tesztek sose osszanak meg állapotot, plusz egy ",[452,767,768],{},"storagetest.Options","-t. Ezután végigmegy a teljes ",[452,771,458],{}," felületen: put\u002Fread kör, range-olvasás, stat, listázás és lapozás, copy, delete-idempotencia, a ",[452,774,775],{},"ValidPath"," traversal-elutasítása, és, ahol a driver támogatja, aláírt URL-ek. Egy driver, ami ",[452,778,779],{},"ErrUnsupported","-ot ad egy opcionális képességre, érvényes, csak kevésbé képes implementációnak számít, nem hibának: a ",[452,782,783],{},"storagetest"," azt ellenőrzi, hogy a megfelelő hibát adja-e, nem azt, hogy minden driver mindent támogat.",[786,787,789],"h3",{"id":788},"opciók-olyan-driverekhez-amik-nem-őriznek-meg-mindent","Opciók olyan driverekhez, amik nem őriznek meg mindent",[466,791,793],{"className":468,"code":792,"language":470,"meta":471,"style":471},"type Options struct {\n    PersistsContentType bool\n    PersistsMetadata    bool\n}\n",[452,794,795,808,817,824],{"__ignoreMap":471},[475,796,797,800,803,806],{"class":477,"line":478},[475,798,799],{"class":485},"type",[475,801,802],{"class":495}," Options",[475,804,805],{"class":485}," struct",[475,807,561],{"class":485},[475,809,810,813],{"class":477,"line":489},[475,811,812],{"class":567},"    PersistsContentType ",[475,814,816],{"class":815},"spNyl","bool\n",[475,818,819,822],{"class":477,"line":502},[475,820,821],{"class":567},"    PersistsMetadata    ",[475,823,816],{"class":815},[475,825,826],{"class":477,"line":509},[475,827,759],{"class":485},[448,829,830,831,834,835,838,839,842,843,845,846,838,849,852,853,856],{},"Nem minden backend viszi át körben minden metaadatot; egy minimális driver (mondjuk egy csupasz key\u002Fvalue store fölött, attribútum-támogatás nélkül) lehet, hogy nem őrzi meg a ",[452,832,833],{},"PutOptions.ContentType","-ot vagy más metaadatot egy ",[452,836,837],{},"Put","\u002F",[452,840,841],{},"Stat"," kör alatt. Ahelyett, hogy minden drivert egy nem meglévő támogatás hamisítására kényszerítenénk, a ",[452,844,768],{}," lehetővé teszi, hogy ezt előre jelezd: hagyd a ",[452,847,848],{},"PersistsContentType",[452,850,851],{},"PersistsMetadata","-t a zéróértéken (",[452,854,855],{},"false","), és a suite kihagyja azokat az assertionöket, amik egyébként elbuknának egy olyan driveren, ami őszinte a saját korlátairól.",[461,858,860],{"id":859},"saját-driver-írása","Saját Driver írása",[448,862,450,863,865,866,870],{},[452,864,458],{}," interfész (lásd ",[867,868,52],"a",{"href":869},"\u002Fhu\u002Fstorage\u002Foverview#driver-a-backend-szerz%C5%91d%C3%A9s",") a teljes felület, amit egy új backendnek le kell fednie. Egy minimális váz:",[466,872,874],{"className":468,"code":873,"language":470,"meta":471,"style":471},"type myDriver struct {\n    name string\n    \u002F\u002F backend-specifikus mezők\n}\n\nfunc (d *myDriver) Name() string { return d.name }\n\nfunc (d *myDriver) Put(ctx context.Context, path string, r io.Reader, opts storage.PutOptions) error {\n    if !storage.ValidPath(path) {\n        return storage.ErrInvalidPath\n    }\n    \u002F\u002F r írása a backendbe a path-ra\n    return nil\n}\n\nfunc (d *myDriver) Reader(ctx context.Context, path string) (io.ReadCloser, error) {\n    \u002F\u002F a path-on lévő objektum, vagy storage.ErrNotExist, ha hiányzik\n}\n\nfunc (d *myDriver) RangeReader(ctx context.Context, path string, offset, length int64) (io.ReadCloser, error) {\n    \u002F\u002F egy bájttartomány-olvasás; length \u003C 0 azt jelenti, \"a végéig\"\n}\n\nfunc (d *myDriver) Stat(ctx context.Context, path string) (storage.FileInfo, error) { \u002F* ... *\u002F }\nfunc (d *myDriver) List(ctx context.Context, opts storage.ListOptions) (storage.ListPage, error) { \u002F* ... *\u002F }\nfunc (d *myDriver) Copy(ctx context.Context, src, dst string) error { \u002F* ... *\u002F }\nfunc (d *myDriver) Delete(ctx context.Context, path string) error { \u002F* idempotens *\u002F }\n\nfunc (d *myDriver) URL(ctx context.Context, path string) (string, error) { \u002F* ... *\u002F }\n\nfunc (d *myDriver) TemporaryURL(ctx context.Context, path string, opts storage.TemporaryURLOptions) (string, error) {\n    return \"\", storage.ErrUnsupported \u002F\u002F ha a backend nem tud URL-t aláírni\n}\n\nfunc (d *myDriver) TemporaryUploadURL(ctx context.Context, path string, opts storage.TemporaryUploadURLOptions) (storage.UploadURL, error) {\n    return storage.UploadURL{}, storage.ErrUnsupported\n}\n",[452,875,876,887,895,901,905,909,952,956,1025,1048,1059,1064,1069,1077,1081,1085,1138,1144,1149,1154,1219,1225,1230,1235,1294,1356,1406,1451,1456,1509,1514,1573,1593,1598,1603,1667,1688],{"__ignoreMap":471},[475,877,878,880,883,885],{"class":477,"line":478},[475,879,799],{"class":485},[475,881,882],{"class":495}," myDriver",[475,884,805],{"class":485},[475,886,561],{"class":485},[475,888,889,892],{"class":477,"line":489},[475,890,891],{"class":567},"    name ",[475,893,894],{"class":815},"string\n",[475,896,897],{"class":477,"line":502},[475,898,900],{"class":899},"sHwdD","    \u002F\u002F backend-specifikus mezők\n",[475,902,903],{"class":477,"line":509},[475,904,759],{"class":485},[475,906,907],{"class":477,"line":519},[475,908,506],{"emptyLinePlaceholder":505},[475,910,911,913,916,919,922,925,927,930,933,936,939,942,945,947,950],{"class":477,"line":525},[475,912,533],{"class":485},[475,914,915],{"class":485}," (",[475,917,918],{"class":543},"d ",[475,920,921],{"class":485},"*",[475,923,924],{"class":495},"myDriver",[475,926,558],{"class":485},[475,928,929],{"class":536}," Name",[475,931,932],{"class":485},"()",[475,934,935],{"class":815}," string",[475,937,938],{"class":485}," {",[475,940,941],{"class":481}," return",[475,943,944],{"class":567}," d",[475,946,552],{"class":485},[475,948,949],{"class":567},"name ",[475,951,759],{"class":485},[475,953,954],{"class":477,"line":530},[475,955,506],{"emptyLinePlaceholder":505},[475,957,958,960,962,964,966,968,970,973,975,978,981,983,986,988,991,993,995,998,1001,1003,1006,1008,1011,1013,1015,1018,1020,1023],{"class":477,"line":564},[475,959,533],{"class":485},[475,961,915],{"class":485},[475,963,918],{"class":543},[475,965,921],{"class":485},[475,967,924],{"class":495},[475,969,558],{"class":485},[475,971,972],{"class":536}," Put",[475,974,540],{"class":485},[475,976,977],{"class":543},"ctx",[475,979,980],{"class":495}," context",[475,982,552],{"class":485},[475,984,985],{"class":495},"Context",[475,987,580],{"class":485},[475,989,990],{"class":543}," path",[475,992,935],{"class":815},[475,994,580],{"class":485},[475,996,997],{"class":543}," r",[475,999,1000],{"class":495}," io",[475,1002,552],{"class":485},[475,1004,1005],{"class":495},"Reader",[475,1007,580],{"class":485},[475,1009,1010],{"class":543}," opts",[475,1012,598],{"class":495},[475,1014,552],{"class":485},[475,1016,1017],{"class":495},"PutOptions",[475,1019,558],{"class":485},[475,1021,1022],{"class":815}," error",[475,1024,561],{"class":485},[475,1026,1027,1030,1033,1035,1037,1039,1041,1044,1046],{"class":477,"line":607},[475,1028,1029],{"class":481},"    if",[475,1031,1032],{"class":485}," !",[475,1034,147],{"class":567},[475,1036,552],{"class":485},[475,1038,775],{"class":536},[475,1040,540],{"class":485},[475,1042,1043],{"class":567},"path",[475,1045,558],{"class":485},[475,1047,561],{"class":485},[475,1049,1050,1052,1054,1056],{"class":477,"line":627},[475,1051,733],{"class":481},[475,1053,598],{"class":567},[475,1055,552],{"class":485},[475,1057,1058],{"class":567},"ErrInvalidPath\n",[475,1060,1061],{"class":477,"line":690},[475,1062,1063],{"class":485},"    }\n",[475,1065,1066],{"class":477,"line":706},[475,1067,1068],{"class":899},"    \u002F\u002F r írása a backendbe a path-ra\n",[475,1070,1071,1074],{"class":477,"line":724},[475,1072,1073],{"class":481},"    return",[475,1075,1076],{"class":485}," nil\n",[475,1078,1079],{"class":477,"line":730},[475,1080,759],{"class":485},[475,1082,1083],{"class":477,"line":739},[475,1084,506],{"emptyLinePlaceholder":505},[475,1086,1087,1089,1091,1093,1095,1097,1099,1102,1104,1106,1108,1110,1112,1114,1116,1118,1120,1122,1125,1127,1130,1132,1134,1136],{"class":477,"line":756},[475,1088,533],{"class":485},[475,1090,915],{"class":485},[475,1092,918],{"class":543},[475,1094,921],{"class":485},[475,1096,924],{"class":495},[475,1098,558],{"class":485},[475,1100,1101],{"class":536}," Reader",[475,1103,540],{"class":485},[475,1105,977],{"class":543},[475,1107,980],{"class":495},[475,1109,552],{"class":485},[475,1111,985],{"class":495},[475,1113,580],{"class":485},[475,1115,990],{"class":543},[475,1117,935],{"class":815},[475,1119,558],{"class":485},[475,1121,915],{"class":485},[475,1123,1124],{"class":495},"io",[475,1126,552],{"class":485},[475,1128,1129],{"class":495},"ReadCloser",[475,1131,580],{"class":485},[475,1133,1022],{"class":815},[475,1135,558],{"class":485},[475,1137,561],{"class":485},[475,1139,1141],{"class":477,"line":1140},17,[475,1142,1143],{"class":899},"    \u002F\u002F a path-on lévő objektum, vagy storage.ErrNotExist, ha hiányzik\n",[475,1145,1147],{"class":477,"line":1146},18,[475,1148,759],{"class":485},[475,1150,1152],{"class":477,"line":1151},19,[475,1153,506],{"emptyLinePlaceholder":505},[475,1155,1157,1159,1161,1163,1165,1167,1169,1172,1174,1176,1178,1180,1182,1184,1186,1188,1190,1193,1195,1198,1201,1203,1205,1207,1209,1211,1213,1215,1217],{"class":477,"line":1156},20,[475,1158,533],{"class":485},[475,1160,915],{"class":485},[475,1162,918],{"class":543},[475,1164,921],{"class":485},[475,1166,924],{"class":495},[475,1168,558],{"class":485},[475,1170,1171],{"class":536}," RangeReader",[475,1173,540],{"class":485},[475,1175,977],{"class":543},[475,1177,980],{"class":495},[475,1179,552],{"class":485},[475,1181,985],{"class":495},[475,1183,580],{"class":485},[475,1185,990],{"class":543},[475,1187,935],{"class":815},[475,1189,580],{"class":485},[475,1191,1192],{"class":543}," offset",[475,1194,580],{"class":485},[475,1196,1197],{"class":543}," length",[475,1199,1200],{"class":815}," int64",[475,1202,558],{"class":485},[475,1204,915],{"class":485},[475,1206,1124],{"class":495},[475,1208,552],{"class":485},[475,1210,1129],{"class":495},[475,1212,580],{"class":485},[475,1214,1022],{"class":815},[475,1216,558],{"class":485},[475,1218,561],{"class":485},[475,1220,1222],{"class":477,"line":1221},21,[475,1223,1224],{"class":899},"    \u002F\u002F egy bájttartomány-olvasás; length \u003C 0 azt jelenti, \"a végéig\"\n",[475,1226,1228],{"class":477,"line":1227},22,[475,1229,759],{"class":485},[475,1231,1233],{"class":477,"line":1232},23,[475,1234,506],{"emptyLinePlaceholder":505},[475,1236,1238,1240,1242,1244,1246,1248,1250,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1280,1282,1284,1286,1288,1291],{"class":477,"line":1237},24,[475,1239,533],{"class":485},[475,1241,915],{"class":485},[475,1243,918],{"class":543},[475,1245,921],{"class":485},[475,1247,924],{"class":495},[475,1249,558],{"class":485},[475,1251,1252],{"class":536}," Stat",[475,1254,540],{"class":485},[475,1256,977],{"class":543},[475,1258,980],{"class":495},[475,1260,552],{"class":485},[475,1262,985],{"class":495},[475,1264,580],{"class":485},[475,1266,990],{"class":543},[475,1268,935],{"class":815},[475,1270,558],{"class":485},[475,1272,915],{"class":485},[475,1274,147],{"class":495},[475,1276,552],{"class":485},[475,1278,1279],{"class":495},"FileInfo",[475,1281,580],{"class":485},[475,1283,1022],{"class":815},[475,1285,558],{"class":485},[475,1287,938],{"class":485},[475,1289,1290],{"class":899}," \u002F* ... *\u002F",[475,1292,1293],{"class":485}," }\n",[475,1295,1297,1299,1301,1303,1305,1307,1309,1312,1314,1316,1318,1320,1322,1324,1326,1328,1330,1333,1335,1337,1339,1341,1344,1346,1348,1350,1352,1354],{"class":477,"line":1296},25,[475,1298,533],{"class":485},[475,1300,915],{"class":485},[475,1302,918],{"class":543},[475,1304,921],{"class":485},[475,1306,924],{"class":495},[475,1308,558],{"class":485},[475,1310,1311],{"class":536}," List",[475,1313,540],{"class":485},[475,1315,977],{"class":543},[475,1317,980],{"class":495},[475,1319,552],{"class":485},[475,1321,985],{"class":495},[475,1323,580],{"class":485},[475,1325,1010],{"class":543},[475,1327,598],{"class":495},[475,1329,552],{"class":485},[475,1331,1332],{"class":495},"ListOptions",[475,1334,558],{"class":485},[475,1336,915],{"class":485},[475,1338,147],{"class":495},[475,1340,552],{"class":485},[475,1342,1343],{"class":495},"ListPage",[475,1345,580],{"class":485},[475,1347,1022],{"class":815},[475,1349,558],{"class":485},[475,1351,938],{"class":485},[475,1353,1290],{"class":899},[475,1355,1293],{"class":485},[475,1357,1359,1361,1363,1365,1367,1369,1371,1374,1376,1378,1380,1382,1384,1386,1389,1391,1394,1396,1398,1400,1402,1404],{"class":477,"line":1358},26,[475,1360,533],{"class":485},[475,1362,915],{"class":485},[475,1364,918],{"class":543},[475,1366,921],{"class":485},[475,1368,924],{"class":495},[475,1370,558],{"class":485},[475,1372,1373],{"class":536}," Copy",[475,1375,540],{"class":485},[475,1377,977],{"class":543},[475,1379,980],{"class":495},[475,1381,552],{"class":485},[475,1383,985],{"class":495},[475,1385,580],{"class":485},[475,1387,1388],{"class":543}," src",[475,1390,580],{"class":485},[475,1392,1393],{"class":543}," dst",[475,1395,935],{"class":815},[475,1397,558],{"class":485},[475,1399,1022],{"class":815},[475,1401,938],{"class":485},[475,1403,1290],{"class":899},[475,1405,1293],{"class":485},[475,1407,1409,1411,1413,1415,1417,1419,1421,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442,1444,1446,1449],{"class":477,"line":1408},27,[475,1410,533],{"class":485},[475,1412,915],{"class":485},[475,1414,918],{"class":543},[475,1416,921],{"class":485},[475,1418,924],{"class":495},[475,1420,558],{"class":485},[475,1422,1423],{"class":536}," Delete",[475,1425,540],{"class":485},[475,1427,977],{"class":543},[475,1429,980],{"class":495},[475,1431,552],{"class":485},[475,1433,985],{"class":495},[475,1435,580],{"class":485},[475,1437,990],{"class":543},[475,1439,935],{"class":815},[475,1441,558],{"class":485},[475,1443,1022],{"class":815},[475,1445,938],{"class":485},[475,1447,1448],{"class":899}," \u002F* idempotens *\u002F",[475,1450,1293],{"class":485},[475,1452,1454],{"class":477,"line":1453},28,[475,1455,506],{"emptyLinePlaceholder":505},[475,1457,1459,1461,1463,1465,1467,1469,1471,1474,1476,1478,1480,1482,1484,1486,1488,1490,1492,1494,1497,1499,1501,1503,1505,1507],{"class":477,"line":1458},29,[475,1460,533],{"class":485},[475,1462,915],{"class":485},[475,1464,918],{"class":543},[475,1466,921],{"class":485},[475,1468,924],{"class":495},[475,1470,558],{"class":485},[475,1472,1473],{"class":536}," URL",[475,1475,540],{"class":485},[475,1477,977],{"class":543},[475,1479,980],{"class":495},[475,1481,552],{"class":485},[475,1483,985],{"class":495},[475,1485,580],{"class":485},[475,1487,990],{"class":543},[475,1489,935],{"class":815},[475,1491,558],{"class":485},[475,1493,915],{"class":485},[475,1495,1496],{"class":815},"string",[475,1498,580],{"class":485},[475,1500,1022],{"class":815},[475,1502,558],{"class":485},[475,1504,938],{"class":485},[475,1506,1290],{"class":899},[475,1508,1293],{"class":485},[475,1510,1512],{"class":477,"line":1511},30,[475,1513,506],{"emptyLinePlaceholder":505},[475,1515,1517,1519,1521,1523,1525,1527,1529,1532,1534,1536,1538,1540,1542,1544,1546,1548,1550,1552,1554,1556,1559,1561,1563,1565,1567,1569,1571],{"class":477,"line":1516},31,[475,1518,533],{"class":485},[475,1520,915],{"class":485},[475,1522,918],{"class":543},[475,1524,921],{"class":485},[475,1526,924],{"class":495},[475,1528,558],{"class":485},[475,1530,1531],{"class":536}," TemporaryURL",[475,1533,540],{"class":485},[475,1535,977],{"class":543},[475,1537,980],{"class":495},[475,1539,552],{"class":485},[475,1541,985],{"class":495},[475,1543,580],{"class":485},[475,1545,990],{"class":543},[475,1547,935],{"class":815},[475,1549,580],{"class":485},[475,1551,1010],{"class":543},[475,1553,598],{"class":495},[475,1555,552],{"class":485},[475,1557,1558],{"class":495},"TemporaryURLOptions",[475,1560,558],{"class":485},[475,1562,915],{"class":485},[475,1564,1496],{"class":815},[475,1566,580],{"class":485},[475,1568,1022],{"class":815},[475,1570,558],{"class":485},[475,1572,561],{"class":485},[475,1574,1576,1578,1581,1583,1585,1587,1590],{"class":477,"line":1575},32,[475,1577,1073],{"class":481},[475,1579,1580],{"class":485}," \"\"",[475,1582,580],{"class":485},[475,1584,598],{"class":567},[475,1586,552],{"class":485},[475,1588,1589],{"class":567},"ErrUnsupported ",[475,1591,1592],{"class":899},"\u002F\u002F ha a backend nem tud URL-t aláírni\n",[475,1594,1596],{"class":477,"line":1595},33,[475,1597,759],{"class":485},[475,1599,1601],{"class":477,"line":1600},34,[475,1602,506],{"emptyLinePlaceholder":505},[475,1604,1606,1608,1610,1612,1614,1616,1618,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1648,1650,1652,1654,1656,1659,1661,1663,1665],{"class":477,"line":1605},35,[475,1607,533],{"class":485},[475,1609,915],{"class":485},[475,1611,918],{"class":543},[475,1613,921],{"class":485},[475,1615,924],{"class":495},[475,1617,558],{"class":485},[475,1619,1620],{"class":536}," TemporaryUploadURL",[475,1622,540],{"class":485},[475,1624,977],{"class":543},[475,1626,980],{"class":495},[475,1628,552],{"class":485},[475,1630,985],{"class":495},[475,1632,580],{"class":485},[475,1634,990],{"class":543},[475,1636,935],{"class":815},[475,1638,580],{"class":485},[475,1640,1010],{"class":543},[475,1642,598],{"class":495},[475,1644,552],{"class":485},[475,1646,1647],{"class":495},"TemporaryUploadURLOptions",[475,1649,558],{"class":485},[475,1651,915],{"class":485},[475,1653,147],{"class":495},[475,1655,552],{"class":485},[475,1657,1658],{"class":495},"UploadURL",[475,1660,580],{"class":485},[475,1662,1022],{"class":815},[475,1664,558],{"class":485},[475,1666,561],{"class":485},[475,1668,1670,1672,1674,1676,1678,1681,1683,1685],{"class":477,"line":1669},36,[475,1671,1073],{"class":481},[475,1673,598],{"class":495},[475,1675,552],{"class":485},[475,1677,1658],{"class":495},[475,1679,1680],{"class":485},"{},",[475,1682,598],{"class":567},[475,1684,552],{"class":485},[475,1686,1687],{"class":567},"ErrUnsupported\n",[475,1689,1691],{"class":477,"line":1690},37,[475,1692,759],{"class":485},[448,1694,1695],{},"Néhány dolog, amire érdemes figyelni írás közben:",[1697,1698,1699,1707,1713,1727,1745],"ul",{},[1700,1701,1702,1703,1706],"li",{},"Hívd meg a ",[452,1704,1705],{},"storage.ValidPath","-t minden olyan metódus elején, ami path-ot kap és hozzáér a backendhez; ez az egyetlen dolog, amit minden drivertől elvárunk, hogy osszon.",[1700,1708,450,1709,1712],{},[452,1710,1711],{},"Delete","-nek idempotensnek kell lennie: egy már törölt path törlése nem hiba.",[1700,1714,1715,1716,1719,1720,1726],{},"Ha egy képesség tényleg nem alkalmazható a backendre, adj vissza ",[452,1717,1718],{},"storage.ErrUnsupported","-ot egy félig működő közelítés helyett; a hívóktól elvárt, hogy ezt kezeljék (lásd ",[867,1721,1723],{"href":1722},"\u002Fhu\u002Fstorage\u002Fdisk-api#urlek",[452,1724,1725],{},"Disk.ProvidesTemporaryURLs",").",[1700,1728,1729,1730,1733,1734,1737,1738,1741,1742,1744],{},"Az opcionális ",[452,1731,1732],{},"Mover"," interfészt csak akkor implementáld, ha a backendnek van natív, nem-másoló mozgatása; egyébként hagyd implementálatlanul, és a ",[452,1735,1736],{},"Disk.Move"," a drivered helyett ",[452,1739,1740],{},"Copy"," + ",[452,1743,1711],{},"-re esik vissza.",[1700,1746,1747,1748,1751,1752,1755],{},"Futtasd le a ",[452,1749,1750],{},"storagetest.Run","-on, mielőtt bármi valósiba bekötnéd. Ez a leggyorsabb módja megtalálni egy sarkot (egy off-by-one egy range-olvasásban, egy ",[452,1753,1754],{},"List"," lap, ami nem lapoz helyesen), amit egy kézzel írt smoke test nem kapna el.",[461,1757,1759],{"id":1758},"kapcsolódó-oldalak","Kapcsolódó oldalak",[1697,1761,1762,1773,1778,1783],{},[1700,1763,1764,1766,1767,1769,1770,1772],{},[867,1765,52],{"href":153},": a teljes ",[452,1768,458],{}," szerződés és a ",[452,1771,1732],{}," interfész.",[1700,1774,1775,1777],{},[867,1776,156],{"href":157},": a metódusok, amik végül a te driveredbe hívnak.",[1700,1779,1780,1782],{},[867,1781,160],{"href":161},": olvasd el e két driver forrását egy kidolgozott példáért a szerződésről.",[1700,1784,1785,1787],{},[867,1786,164],{"href":165},": a harmadik beépített driver, és az, amelyikben a legtöbb backend-specifikus logika van.",[1789,1790,1791],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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}",{"title":471,"searchDepth":489,"depth":489,"links":1793},[1794,1797,1798],{"id":463,"depth":489,"text":464,"children":1795},[1796],{"id":788,"depth":502,"text":789},{"id":859,"depth":489,"text":860},{"id":1758,"depth":489,"text":1759},"A storagetest konformancia-suite, és amit egy saját Drivernek implementálnia kell.","md",null,{},{"icon":172},{"title":169,"description":1799},"ehl3jdwOzh_dj48rfg-UaY1BsDnq7qlhJ4_cgMWHXHw",[1807,1809],{"title":164,"path":165,"stem":166,"description":1808,"icon":167,"children":-1},"Az S3-kompatibilis driver, egy külön verziózott modul, minio-go-ra épülve.",{"title":52,"path":180,"stem":181,"description":1810,"icon":175,"children":-1},"A telemetry facade: logolás, OpenTelemetry és Sentry egyetlen hívással, egy shutdown-garanciával.",1785445887505]