[{"data":1,"prerenderedAt":1439},["ShallowReactive",2],{"navigation":3,"\u002Fguide\u002Fsocket\u002Fdevelopment-only":208,"\u002Fguide\u002Fsocket\u002Fdevelopment-only-surround":1434},[4,98,175],{"title":5,"path":6,"stem":7,"children":8,"icon":97},"Guide","\u002Fguide","1.guide\u002F1.index",[9,12,17,22,46,61,79],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-house",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fguide\u002Finstallation","1.guide\u002F2.installation","i-lucide-download",{"title":18,"path":19,"stem":20,"icon":21},"Quick start","\u002Fguide\u002Fquick-start","1.guide\u002F3.quick-start","i-lucide-rocket",{"title":23,"path":24,"stem":25,"children":26,"icon":45},"Server","\u002Fguide\u002Fserver","1.guide\u002F4.server\u002F1.index",[27,30,35,40],{"title":28,"path":24,"stem":25,"icon":29},"Usage","i-lucide-server",{"title":31,"path":32,"stem":33,"icon":34},"Config file","\u002Fguide\u002Fserver\u002Fconfig-file","1.guide\u002F4.server\u002F2.config-file","i-lucide-file-cog",{"title":36,"path":37,"stem":38,"icon":39},"Options","\u002Fguide\u002Fserver\u002Foptions","1.guide\u002F4.server\u002F3.options","i-lucide-settings",{"title":41,"path":42,"stem":43,"icon":44},"Advanced","\u002Fguide\u002Fserver\u002Fadvanced","1.guide\u002F4.server\u002F4.advanced","i-lucide-flask-conical",false,{"title":47,"path":48,"stem":49,"children":50,"icon":45},"Client","\u002Fguide\u002Fclient","1.guide\u002F5.client\u002F1.index",[51,53,58],{"title":28,"path":48,"stem":49,"icon":52},"i-lucide-monitor-smartphone",{"title":54,"path":55,"stem":56,"icon":57},"Live queries","\u002Fguide\u002Fclient\u002Flive-queries","1.guide\u002F5.client\u002F2.live-queries","i-lucide-radio",{"title":41,"path":59,"stem":60,"icon":44},"\u002Fguide\u002Fclient\u002Fadvanced","1.guide\u002F5.client\u002F3.advanced",{"title":62,"path":63,"stem":64,"children":65,"icon":45},"Development socket","\u002Fguide\u002Fsocket","1.guide\u002F6.socket\u002F1.index",[66,68,71,74],{"title":28,"path":63,"stem":64,"icon":67},"i-lucide-plug",{"title":36,"path":69,"stem":70,"icon":39},"\u002Fguide\u002Fsocket\u002Foptions","1.guide\u002F6.socket\u002F2.options",{"title":41,"path":72,"stem":73,"icon":44},"\u002Fguide\u002Fsocket\u002Fadvanced","1.guide\u002F6.socket\u002F3.advanced",{"title":75,"path":76,"stem":77,"icon":78},"PGlite in dev, Postgres in prod","\u002Fguide\u002Fsocket\u002Fdevelopment-only","1.guide\u002F6.socket\u002F4.development-only","i-lucide-cloud-upload",{"title":80,"path":81,"stem":82,"children":83,"icon":45},"DevTools & tooling","\u002Fguide\u002Fdevtools","1.guide\u002F7.devtools\u002F1.index",[84,87,92],{"title":85,"path":81,"stem":82,"icon":86},"DevTools tab","i-lucide-wrench",{"title":88,"path":89,"stem":90,"icon":91},"Actions","\u002Fguide\u002Fdevtools\u002Factions","1.guide\u002F7.devtools\u002F2.actions","i-lucide-zap",{"title":93,"path":94,"stem":95,"icon":96},"Terminal","\u002Fguide\u002Fdevtools\u002Fterminal","1.guide\u002F7.devtools\u002F3.terminal","i-lucide-square-terminal","i-lucide-book-open",{"title":99,"icon":100,"path":101,"stem":102,"children":103,"page":45},"Recipes","i-lucide-chef-hat","\u002Frecipes","2.recipes",[104,116,138,159,171],{"title":105,"path":106,"stem":107,"children":108,"icon":45},"Migrations","\u002Frecipes\u002Fmigrations","2.recipes\u002F1.migrations\u002F1.index",[109,111],{"title":28,"path":106,"stem":107,"icon":110},"i-lucide-database-backup",{"title":112,"path":113,"stem":114,"icon":115},"Edited migrations","\u002Frecipes\u002Fmigrations\u002Fedited-migrations","2.recipes\u002F1.migrations\u002F2.edited-migrations","i-lucide-file-diff",{"title":117,"path":118,"stem":119,"children":120,"icon":45},"Testing","\u002Frecipes\u002Ftesting","2.recipes\u002F2.testing\u002F1.index",[121,123,128,133],{"title":28,"path":118,"stem":119,"icon":122},"i-lucide-test-tube",{"title":124,"path":125,"stem":126,"icon":127},"Isolation","\u002Frecipes\u002Ftesting\u002Fisolation","2.recipes\u002F2.testing\u002F2.isolation","i-lucide-git-fork",{"title":129,"path":130,"stem":131,"icon":132},"vitest","\u002Frecipes\u002Ftesting\u002Fvitest","2.recipes\u002F2.testing\u002F3.vitest","i-simple-icons-vitest",{"title":134,"path":135,"stem":136,"icon":137},"@nuxt\u002Ftest-utils","\u002Frecipes\u002Ftesting\u002Fnuxt-test-utils","2.recipes\u002F2.testing\u002F4.nuxt-test-utils","i-simple-icons-nuxt",{"title":139,"path":140,"stem":141,"children":142,"icon":45},"Deploy","\u002Frecipes\u002Fdeploy","2.recipes\u002F3.deploy\u002F1.index",[143,144,149,154],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147,"icon":148},"Any Postgres","\u002Frecipes\u002Fdeploy\u002Fpostgres","2.recipes\u002F3.deploy\u002F2.postgres","i-lucide-database",{"title":150,"path":151,"stem":152,"icon":153},"Netlify","\u002Frecipes\u002Fdeploy\u002Fnetlify","2.recipes\u002F3.deploy\u002F3.netlify","i-simple-icons-netlify",{"title":155,"path":156,"stem":157,"icon":158},"Neon","\u002Frecipes\u002Fdeploy\u002Fneon","2.recipes\u002F3.deploy\u002F4.neon","i-simple-icons-neon",{"title":160,"path":161,"stem":162,"children":163,"icon":45},"Outside Nuxt","\u002Frecipes\u002Foutside-nuxt","2.recipes\u002F4.outside-nuxt\u002F1.index",[164,167],{"title":165,"path":161,"stem":162,"icon":166},"Config and provider","i-lucide-package",{"title":168,"path":169,"stem":170,"icon":67},"Socket server","\u002Frecipes\u002Foutside-nuxt\u002Fsocket","2.recipes\u002F4.outside-nuxt\u002F2.socket",{"title":172,"path":173,"stem":174,"icon":67},"Nitro's useDatabase","\u002Frecipes\u002Fnitro-database","2.recipes\u002F5.nitro-database",{"title":176,"icon":177,"path":178,"stem":179,"children":180,"page":45},"Reference","i-lucide-code-xml","\u002Freference","3.reference",[181,185,189,193,198,203],{"title":182,"path":183,"stem":184,"icon":34},"Config files","\u002Freference\u002Fconfig-files","3.reference\u002F1.config-files",{"title":186,"path":187,"stem":188,"icon":39},"Module options","\u002Freference\u002Fmodule-options","3.reference\u002F2.module-options",{"title":190,"path":191,"stem":192,"icon":67},"Socket options","\u002Freference\u002Fsocket-options","3.reference\u002F3.socket-options",{"title":194,"path":195,"stem":196,"icon":197},"Exports","\u002Freference\u002Fexports","3.reference\u002F4.exports","i-lucide-boxes",{"title":199,"path":200,"stem":201,"icon":202},"Hooks","\u002Freference\u002Fhooks","3.reference\u002F5.hooks","i-lucide-anchor",{"title":204,"path":205,"stem":206,"icon":207},"Environment","\u002Freference\u002Fenvironment","3.reference\u002F6.environment","i-lucide-variable",{"id":209,"title":75,"body":210,"description":1427,"extension":1428,"links":1429,"meta":1430,"navigation":1431,"path":76,"seo":1432,"stem":77,"__hash__":1433},"docs\u002F1.guide\u002F6.socket\u002F4.development-only.md",{"type":211,"value":212,"toc":1424},"minimark",[213,217,367,388,394,1307,1314,1319,1402,1420],[214,215,216],"p",{},"The most common setup: PGlite replaces the local Postgres you would otherwise install, run or containerise, while production uses a real database. The socket does not depend on the server side, so you can disable the latter:",[218,219,225],"pre",{"className":220,"code":221,"filename":222,"language":223,"meta":224,"style":224},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['nuxt-pglite'],\n  pglite: {\n    server: {\n      enabled: false, \u002F\u002F no `usePGlite()`, nothing of PGlite in the build\n    },\n    socket: { port: 5433 }, \u002F\u002F but a Postgres URL while `nuxt dev` runs\n  },\n})\n","nuxt.config.ts","ts","",[226,227,228,252,280,291,301,320,326,352,358],"code",{"__ignoreMap":224},[229,230,233,237,240,244,248],"span",{"class":231,"line":232},"line",1,[229,234,236],{"class":235},"s7zQu","export",[229,238,239],{"class":235}," default",[229,241,243],{"class":242},"s2Zo4"," defineNuxtConfig",[229,245,247],{"class":246},"sTEyZ","(",[229,249,251],{"class":250},"sMK4o","{\n",[229,253,255,259,262,265,268,272,274,277],{"class":231,"line":254},2,[229,256,258],{"class":257},"swJcz","  modules",[229,260,261],{"class":250},":",[229,263,264],{"class":246}," [",[229,266,267],{"class":250},"'",[229,269,271],{"class":270},"sfazB","nuxt-pglite",[229,273,267],{"class":250},[229,275,276],{"class":246},"]",[229,278,279],{"class":250},",\n",[229,281,283,286,288],{"class":231,"line":282},3,[229,284,285],{"class":257},"  pglite",[229,287,261],{"class":250},[229,289,290],{"class":250}," {\n",[229,292,294,297,299],{"class":231,"line":293},4,[229,295,296],{"class":257},"    server",[229,298,261],{"class":250},[229,300,290],{"class":250},[229,302,304,307,309,313,316],{"class":231,"line":303},5,[229,305,306],{"class":257},"      enabled",[229,308,261],{"class":250},[229,310,312],{"class":311},"sfNiH"," false",[229,314,315],{"class":250},",",[229,317,319],{"class":318},"sHwdD"," \u002F\u002F no `usePGlite()`, nothing of PGlite in the build\n",[229,321,323],{"class":231,"line":322},6,[229,324,325],{"class":250},"    },\n",[229,327,329,332,334,337,340,342,346,349],{"class":231,"line":328},7,[229,330,331],{"class":257},"    socket",[229,333,261],{"class":250},[229,335,336],{"class":250}," {",[229,338,339],{"class":257}," port",[229,341,261],{"class":250},[229,343,345],{"class":344},"sbssI"," 5433",[229,347,348],{"class":250}," },",[229,350,351],{"class":318}," \u002F\u002F but a Postgres URL while `nuxt dev` runs\n",[229,353,355],{"class":231,"line":354},8,[229,356,357],{"class":250},"  },\n",[229,359,361,364],{"class":231,"line":360},9,[229,362,363],{"class":250},"}",[229,365,366],{"class":246},")\n",[368,369,370,382],"ul",{},[371,372,373,374,377,378,381],"li",{},"In ",[226,375,376],{},"nuxt dev",", the socket starts and sets ",[226,379,380],{},"DATABASE_URL"," to its own URL.",[371,383,384,385,387],{},"In production, ",[226,386,380],{}," comes from your host, and the build contains your driver only.",[214,389,390,391,393],{},"Your database code reads ",[226,392,380],{}," and nothing else.",[395,396,398,405,520,674,752,756,774,925,1057,1076,1094,1098,1288,1294],"steps",{"level":397},"3",[399,400,402,403],"h3",{"id":401},"read-database_url","Read ",[226,404,380],{},[218,406,409],{"className":220,"code":407,"filename":408,"language":223,"meta":224,"style":224},"import { drizzle } from 'drizzle-orm\u002Fnode-postgres'\n\nimport { relations } from '..\u002Fdatabase\u002Frelations'\n\nexport function useDB() {\n  return drizzle(process.env.DATABASE_URL!, { relations })\n}\n","server\u002Futils\u002Fdb.ts",[226,410,411,436,442,462,466,482,515],{"__ignoreMap":224},[229,412,413,416,418,421,424,427,430,433],{"class":231,"line":232},[229,414,415],{"class":235},"import",[229,417,336],{"class":250},[229,419,420],{"class":246}," drizzle",[229,422,423],{"class":250}," }",[229,425,426],{"class":235}," from",[229,428,429],{"class":250}," '",[229,431,432],{"class":270},"drizzle-orm\u002Fnode-postgres",[229,434,435],{"class":250},"'\n",[229,437,438],{"class":231,"line":254},[229,439,441],{"emptyLinePlaceholder":440},true,"\n",[229,443,444,446,448,451,453,455,457,460],{"class":231,"line":282},[229,445,415],{"class":235},[229,447,336],{"class":250},[229,449,450],{"class":246}," relations",[229,452,423],{"class":250},[229,454,426],{"class":235},[229,456,429],{"class":250},[229,458,459],{"class":270},"..\u002Fdatabase\u002Frelations",[229,461,435],{"class":250},[229,463,464],{"class":231,"line":293},[229,465,441],{"emptyLinePlaceholder":440},[229,467,468,470,474,477,480],{"class":231,"line":303},[229,469,236],{"class":235},[229,471,473],{"class":472},"spNyl"," function",[229,475,476],{"class":242}," useDB",[229,478,479],{"class":250},"()",[229,481,290],{"class":250},[229,483,484,487,489,491,494,497,500,502,504,507,509,511,513],{"class":231,"line":322},[229,485,486],{"class":235},"  return",[229,488,420],{"class":242},[229,490,247],{"class":257},[229,492,493],{"class":246},"process",[229,495,496],{"class":250},".",[229,498,499],{"class":246},"env",[229,501,496],{"class":250},[229,503,380],{"class":246},[229,505,506],{"class":250},"!,",[229,508,336],{"class":250},[229,510,450],{"class":246},[229,512,423],{"class":250},[229,514,366],{"class":257},[229,516,517],{"class":231,"line":328},[229,518,519],{"class":250},"}\n",[218,521,524],{"className":220,"code":522,"filename":523,"language":223,"meta":224,"style":224},"import { pgTable, serial, timestamp } from 'drizzle-orm\u002Fpg-core'\n\nexport const visits = pgTable('visits', {\n  id: serial('id').primaryKey(),\n  createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),\n})\n","server\u002Fdatabase\u002Fschema.ts",[226,525,526,556,560,588,618,668],{"__ignoreMap":224},[229,527,528,530,532,535,537,540,542,545,547,549,551,554],{"class":231,"line":232},[229,529,415],{"class":235},[229,531,336],{"class":250},[229,533,534],{"class":246}," pgTable",[229,536,315],{"class":250},[229,538,539],{"class":246}," serial",[229,541,315],{"class":250},[229,543,544],{"class":246}," timestamp",[229,546,423],{"class":250},[229,548,426],{"class":235},[229,550,429],{"class":250},[229,552,553],{"class":270},"drizzle-orm\u002Fpg-core",[229,555,435],{"class":250},[229,557,558],{"class":231,"line":254},[229,559,441],{"emptyLinePlaceholder":440},[229,561,562,564,567,570,573,575,577,579,582,584,586],{"class":231,"line":282},[229,563,236],{"class":235},[229,565,566],{"class":472}," const",[229,568,569],{"class":246}," visits ",[229,571,572],{"class":250},"=",[229,574,534],{"class":242},[229,576,247],{"class":246},[229,578,267],{"class":250},[229,580,581],{"class":270},"visits",[229,583,267],{"class":250},[229,585,315],{"class":250},[229,587,290],{"class":250},[229,589,590,593,595,597,599,601,604,606,609,611,614,616],{"class":231,"line":293},[229,591,592],{"class":257},"  id",[229,594,261],{"class":250},[229,596,539],{"class":242},[229,598,247],{"class":246},[229,600,267],{"class":250},[229,602,603],{"class":270},"id",[229,605,267],{"class":250},[229,607,608],{"class":246},")",[229,610,496],{"class":250},[229,612,613],{"class":242},"primaryKey",[229,615,479],{"class":246},[229,617,279],{"class":250},[229,619,620,623,625,627,629,631,634,636,638,640,643,645,648,650,652,654,657,659,661,664,666],{"class":231,"line":303},[229,621,622],{"class":257},"  createdAt",[229,624,261],{"class":250},[229,626,544],{"class":242},[229,628,247],{"class":246},[229,630,267],{"class":250},[229,632,633],{"class":270},"created_at",[229,635,267],{"class":250},[229,637,315],{"class":250},[229,639,336],{"class":250},[229,641,642],{"class":257}," withTimezone",[229,644,261],{"class":250},[229,646,647],{"class":311}," true",[229,649,423],{"class":250},[229,651,608],{"class":246},[229,653,496],{"class":250},[229,655,656],{"class":242},"notNull",[229,658,479],{"class":246},[229,660,496],{"class":250},[229,662,663],{"class":242},"defaultNow",[229,665,479],{"class":246},[229,667,279],{"class":250},[229,669,670,672],{"class":231,"line":322},[229,671,363],{"class":250},[229,673,366],{"class":246},[218,675,678],{"className":220,"code":676,"filename":677,"language":223,"meta":224,"style":224},"import { defineRelations } from 'drizzle-orm'\n\nimport * as schema from '.\u002Fschema'\n\n\u002F\u002F Enables `db.query`, even with no relations to declare.\nexport const relations = defineRelations(schema)\n","server\u002Fdatabase\u002Frelations.ts",[226,679,680,700,704,727,731,736],{"__ignoreMap":224},[229,681,682,684,686,689,691,693,695,698],{"class":231,"line":232},[229,683,415],{"class":235},[229,685,336],{"class":250},[229,687,688],{"class":246}," defineRelations",[229,690,423],{"class":250},[229,692,426],{"class":235},[229,694,429],{"class":250},[229,696,697],{"class":270},"drizzle-orm",[229,699,435],{"class":250},[229,701,702],{"class":231,"line":254},[229,703,441],{"emptyLinePlaceholder":440},[229,705,706,708,711,714,717,720,722,725],{"class":231,"line":282},[229,707,415],{"class":235},[229,709,710],{"class":250}," *",[229,712,713],{"class":235}," as",[229,715,716],{"class":246}," schema ",[229,718,719],{"class":235},"from",[229,721,429],{"class":250},[229,723,724],{"class":270},".\u002Fschema",[229,726,435],{"class":250},[229,728,729],{"class":231,"line":293},[229,730,441],{"emptyLinePlaceholder":440},[229,732,733],{"class":231,"line":303},[229,734,735],{"class":318},"\u002F\u002F Enables `db.query`, even with no relations to declare.\n",[229,737,738,740,742,745,747,749],{"class":231,"line":322},[229,739,236],{"class":235},[229,741,566],{"class":472},[229,743,744],{"class":246}," relations ",[229,746,572],{"class":250},[229,748,688],{"class":242},[229,750,751],{"class":246},"(schema)\n",[399,753,755],{"id":754},"prepare-the-development-database","Prepare the development database",[214,757,758,759,762,763,766,767,770,771,773],{},"The socket still reads ",[226,760,761],{},"server\u002Fpglite.config.ts",", so ",[226,764,765],{},"init",", extensions and per-environment settings apply to the development database. Generate migrations from the schema with ",[226,768,769],{},"drizzle-kit generate",", and let ",[226,772,765],{}," apply them, so that the local database is built from the same files as the production one:",[218,775,777],{"className":220,"code":776,"filename":761,"language":223,"meta":224,"style":224},"import { fileURLToPath } from 'node:url'\n\nimport { applyMigrations } from 'nuxt-pglite\u002Fmigrations'\n\nconst migrations = fileURLToPath(new URL('.\u002Fdatabase\u002Fmigrations', import.meta.url))\n\nexport default definePGliteServerConfig({\n  init: (pg) => applyMigrations(pg, migrations),\n})\n",[226,778,779,799,803,823,827,871,875,888,919],{"__ignoreMap":224},[229,780,781,783,785,788,790,792,794,797],{"class":231,"line":232},[229,782,415],{"class":235},[229,784,336],{"class":250},[229,786,787],{"class":246}," fileURLToPath",[229,789,423],{"class":250},[229,791,426],{"class":235},[229,793,429],{"class":250},[229,795,796],{"class":270},"node:url",[229,798,435],{"class":250},[229,800,801],{"class":231,"line":254},[229,802,441],{"emptyLinePlaceholder":440},[229,804,805,807,809,812,814,816,818,821],{"class":231,"line":282},[229,806,415],{"class":235},[229,808,336],{"class":250},[229,810,811],{"class":246}," applyMigrations",[229,813,423],{"class":250},[229,815,426],{"class":235},[229,817,429],{"class":250},[229,819,820],{"class":270},"nuxt-pglite\u002Fmigrations",[229,822,435],{"class":250},[229,824,825],{"class":231,"line":293},[229,826,441],{"emptyLinePlaceholder":440},[229,828,829,832,835,837,839,841,844,847,849,851,854,856,858,861,863,866,868],{"class":231,"line":303},[229,830,831],{"class":472},"const",[229,833,834],{"class":246}," migrations ",[229,836,572],{"class":250},[229,838,787],{"class":242},[229,840,247],{"class":246},[229,842,843],{"class":250},"new",[229,845,846],{"class":242}," URL",[229,848,247],{"class":246},[229,850,267],{"class":250},[229,852,853],{"class":270},".\u002Fdatabase\u002Fmigrations",[229,855,267],{"class":250},[229,857,315],{"class":250},[229,859,860],{"class":235}," import",[229,862,496],{"class":250},[229,864,865],{"class":246},"meta",[229,867,496],{"class":250},[229,869,870],{"class":246},"url))\n",[229,872,873],{"class":231,"line":322},[229,874,441],{"emptyLinePlaceholder":440},[229,876,877,879,881,884,886],{"class":231,"line":328},[229,878,236],{"class":235},[229,880,239],{"class":235},[229,882,883],{"class":242}," definePGliteServerConfig",[229,885,247],{"class":246},[229,887,251],{"class":250},[229,889,890,893,895,898,902,904,907,909,912,914,917],{"class":231,"line":354},[229,891,892],{"class":242},"  init",[229,894,261],{"class":250},[229,896,897],{"class":250}," (",[229,899,901],{"class":900},"sHdIc","pg",[229,903,608],{"class":250},[229,905,906],{"class":472}," =>",[229,908,811],{"class":242},[229,910,911],{"class":246},"(pg",[229,913,315],{"class":250},[229,915,916],{"class":246}," migrations)",[229,918,279],{"class":250},[229,920,921,923],{"class":231,"line":360},[229,922,363],{"class":250},[229,924,366],{"class":246},[218,926,929],{"className":220,"code":927,"filename":928,"language":223,"meta":224,"style":224},"import { defineConfig } from 'drizzle-kit'\n\nexport default defineConfig({\n  schema: '.\u002Fserver\u002Fdatabase\u002Fschema.ts',\n  out: '.\u002Fserver\u002Fdatabase\u002Fmigrations',\n  dialect: 'postgresql',\n  dbCredentials: {\n    \u002F\u002F the socket, for `drizzle-kit studio` and `check` while `nuxt dev` runs\n    url: 'postgres:\u002F\u002Fpostgres@127.0.0.1:5433\u002Fpostgres',\n  },\n})\n","drizzle.config.ts",[226,930,931,951,955,967,983,999,1015,1024,1029,1045,1050],{"__ignoreMap":224},[229,932,933,935,937,940,942,944,946,949],{"class":231,"line":232},[229,934,415],{"class":235},[229,936,336],{"class":250},[229,938,939],{"class":246}," defineConfig",[229,941,423],{"class":250},[229,943,426],{"class":235},[229,945,429],{"class":250},[229,947,948],{"class":270},"drizzle-kit",[229,950,435],{"class":250},[229,952,953],{"class":231,"line":254},[229,954,441],{"emptyLinePlaceholder":440},[229,956,957,959,961,963,965],{"class":231,"line":282},[229,958,236],{"class":235},[229,960,239],{"class":235},[229,962,939],{"class":242},[229,964,247],{"class":246},[229,966,251],{"class":250},[229,968,969,972,974,976,979,981],{"class":231,"line":293},[229,970,971],{"class":257},"  schema",[229,973,261],{"class":250},[229,975,429],{"class":250},[229,977,978],{"class":270},".\u002Fserver\u002Fdatabase\u002Fschema.ts",[229,980,267],{"class":250},[229,982,279],{"class":250},[229,984,985,988,990,992,995,997],{"class":231,"line":303},[229,986,987],{"class":257},"  out",[229,989,261],{"class":250},[229,991,429],{"class":250},[229,993,994],{"class":270},".\u002Fserver\u002Fdatabase\u002Fmigrations",[229,996,267],{"class":250},[229,998,279],{"class":250},[229,1000,1001,1004,1006,1008,1011,1013],{"class":231,"line":322},[229,1002,1003],{"class":257},"  dialect",[229,1005,261],{"class":250},[229,1007,429],{"class":250},[229,1009,1010],{"class":270},"postgresql",[229,1012,267],{"class":250},[229,1014,279],{"class":250},[229,1016,1017,1020,1022],{"class":231,"line":328},[229,1018,1019],{"class":257},"  dbCredentials",[229,1021,261],{"class":250},[229,1023,290],{"class":250},[229,1025,1026],{"class":231,"line":354},[229,1027,1028],{"class":318},"    \u002F\u002F the socket, for `drizzle-kit studio` and `check` while `nuxt dev` runs\n",[229,1030,1031,1034,1036,1038,1041,1043],{"class":231,"line":360},[229,1032,1033],{"class":257},"    url",[229,1035,261],{"class":250},[229,1037,429],{"class":250},[229,1039,1040],{"class":270},"postgres:\u002F\u002Fpostgres@127.0.0.1:5433\u002Fpostgres",[229,1042,267],{"class":250},[229,1044,279],{"class":250},[229,1046,1048],{"class":231,"line":1047},10,[229,1049,357],{"class":250},[229,1051,1053,1055],{"class":231,"line":1052},11,[229,1054,363],{"class":250},[229,1056,366],{"class":246},[218,1058,1062],{"className":1059,"code":1060,"filename":93,"language":1061,"meta":224,"style":224},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx drizzle-kit generate\n","bash",[226,1063,1064],{"__ignoreMap":224},[229,1065,1066,1070,1073],{"class":231,"line":232},[229,1067,1069],{"class":1068},"sBMFI","npx",[229,1071,1072],{"class":270}," drizzle-kit",[229,1074,1075],{"class":270}," generate\n",[214,1077,1078,1080,1081,1083,1084,1087,1088,897,1090,1093],{},[226,1079,765],{}," runs when the socket's instance is created, as ",[226,1082,376],{}," starts: restart it after generating a migration. See ",[1085,1086,105],"a",{"href":106}," for the details. Without migration files, plain SQL in ",[226,1089,765],{},[226,1091,1092],{},"CREATE TABLE IF NOT EXISTS …",") does the same job.",[399,1095,1097],{"id":1096},"use-it-in-routes","Use it in routes",[218,1099,1102],{"className":220,"code":1100,"filename":1101,"language":223,"meta":224,"style":224},"import { count } from 'drizzle-orm'\n\nimport { visits } from '..\u002Fdatabase\u002Fschema'\n\nexport default defineEventHandler(async () => {\n  const db = useDB()\n  await db.insert(visits).values({})\n  const [{ total }] = await db.select({ total: count() }).from(visits)\n  return { total }\n})\n","server\u002Fapi\u002Fvisits.post.ts",[226,1103,1104,1123,1127,1147,1151,1172,1188,1218,1271,1282],{"__ignoreMap":224},[229,1105,1106,1108,1110,1113,1115,1117,1119,1121],{"class":231,"line":232},[229,1107,415],{"class":235},[229,1109,336],{"class":250},[229,1111,1112],{"class":246}," count",[229,1114,423],{"class":250},[229,1116,426],{"class":235},[229,1118,429],{"class":250},[229,1120,697],{"class":270},[229,1122,435],{"class":250},[229,1124,1125],{"class":231,"line":254},[229,1126,441],{"emptyLinePlaceholder":440},[229,1128,1129,1131,1133,1136,1138,1140,1142,1145],{"class":231,"line":282},[229,1130,415],{"class":235},[229,1132,336],{"class":250},[229,1134,1135],{"class":246}," visits",[229,1137,423],{"class":250},[229,1139,426],{"class":235},[229,1141,429],{"class":250},[229,1143,1144],{"class":270},"..\u002Fdatabase\u002Fschema",[229,1146,435],{"class":250},[229,1148,1149],{"class":231,"line":293},[229,1150,441],{"emptyLinePlaceholder":440},[229,1152,1153,1155,1157,1160,1162,1165,1168,1170],{"class":231,"line":303},[229,1154,236],{"class":235},[229,1156,239],{"class":235},[229,1158,1159],{"class":242}," defineEventHandler",[229,1161,247],{"class":246},[229,1163,1164],{"class":472},"async",[229,1166,1167],{"class":250}," ()",[229,1169,906],{"class":472},[229,1171,290],{"class":250},[229,1173,1174,1177,1180,1183,1185],{"class":231,"line":322},[229,1175,1176],{"class":472},"  const",[229,1178,1179],{"class":246}," db",[229,1181,1182],{"class":250}," =",[229,1184,476],{"class":242},[229,1186,1187],{"class":257},"()\n",[229,1189,1190,1193,1195,1197,1200,1202,1204,1206,1208,1211,1213,1216],{"class":231,"line":328},[229,1191,1192],{"class":235},"  await",[229,1194,1179],{"class":246},[229,1196,496],{"class":250},[229,1198,1199],{"class":242},"insert",[229,1201,247],{"class":257},[229,1203,581],{"class":246},[229,1205,608],{"class":257},[229,1207,496],{"class":250},[229,1209,1210],{"class":242},"values",[229,1212,247],{"class":257},[229,1214,1215],{"class":250},"{}",[229,1217,366],{"class":257},[229,1219,1220,1222,1225,1228,1231,1233,1236,1238,1240,1243,1245,1248,1250,1252,1254,1257,1259,1261,1263,1265,1267,1269],{"class":231,"line":354},[229,1221,1176],{"class":472},[229,1223,1224],{"class":250}," [{",[229,1226,1227],{"class":246}," total",[229,1229,1230],{"class":250}," }]",[229,1232,1182],{"class":250},[229,1234,1235],{"class":235}," await",[229,1237,1179],{"class":246},[229,1239,496],{"class":250},[229,1241,1242],{"class":242},"select",[229,1244,247],{"class":257},[229,1246,1247],{"class":250},"{",[229,1249,1227],{"class":257},[229,1251,261],{"class":250},[229,1253,1112],{"class":242},[229,1255,1256],{"class":257},"() ",[229,1258,363],{"class":250},[229,1260,608],{"class":257},[229,1262,496],{"class":250},[229,1264,719],{"class":242},[229,1266,247],{"class":257},[229,1268,581],{"class":246},[229,1270,366],{"class":257},[229,1272,1273,1275,1277,1279],{"class":231,"line":360},[229,1274,486],{"class":235},[229,1276,336],{"class":250},[229,1278,1227],{"class":246},[229,1280,1281],{"class":250}," }\n",[229,1283,1284,1286],{"class":231,"line":1047},[229,1285,363],{"class":250},[229,1287,366],{"class":246},[399,1289,1291,1292],{"id":1290},"deploy-with-a-real-database_url","Deploy with a real ",[226,1293,380],{},[214,1295,1296,1297,1299,1300,1303,1304,1306],{},"Set ",[226,1298,380],{}," in your host's environment to any Postgres: Supabase, Railway, Neon, a managed instance or your own server. Apply the same migration files to it, with ",[226,1301,1302],{},"drizzle-kit migrate"," (or your tool's migrate) in your build command or CI, or let a platform that applies them itself do it. See ",[1085,1305,139],{"href":140}," for both.",[214,1308,1309,1310,1313],{},"This site runs this setup on Netlify: the ",[1085,1311,1312],{"href":151},"Netlify recipe"," is a deployed example.",[1315,1316,1318],"h2",{"id":1317},"what-ends-up-where","What ends up where",[1320,1321,1322,1338],"table",{},[1323,1324,1325],"thead",{},[1326,1327,1328,1331,1335],"tr",{},[1329,1330],"th",{},[1329,1332,1333],{},[226,1334,376],{},[1329,1336,1337],{},"Production build",[1339,1340,1341,1360,1372,1386],"tbody",{},[1326,1342,1343,1354,1357],{},[1344,1345,1346,1348,1349,1353],"td",{},[226,1347,380],{}," (or the ",[1085,1350,1352],{"href":1351},"\u002Fguide\u002Fsocket#provider-presets","provider's"," variables)",[1344,1355,1356],{},"the socket's URL, unless already set",[1344,1358,1359],{},"your host's value",[1326,1361,1362,1366,1369],{},[1344,1363,1364],{},[226,1365,761],{},[1344,1367,1368],{},"loaded by the socket",[1344,1370,1371],{},"not bundled",[1326,1373,1374,1380,1383],{},[1344,1375,1376,1379],{},[226,1377,1378],{},"@electric-sql\u002Fpglite"," in the server output",[1344,1381,1382],{},"n\u002Fa",[1344,1384,1385],{},"absent",[1326,1387,1388,1397,1400],{},[1344,1389,1390,1393,1394],{},[226,1391,1392],{},"usePGlite()"," \u002F ",[226,1395,1396],{},"#pglite\u002Fserver",[1344,1398,1399],{},"a stub that rejects with a pointer",[1344,1401,1399],{},[1403,1404,1405],"tip",{},[214,1406,1407,1408,1411,1412,1415,1416,1419],{},"The socket imports the server config file in the Nuxt process, outside any bundle. ",[226,1409,1410],{},"definePGliteServerConfig"," is provided there even with the server side disabled, and the app's aliases (",[226,1413,1414],{},"~~",", ",[226,1417,1418],{},"#pglite\u002Fmigrations",", …) resolve as they do in the server bundle; auto-imports other than the config helper do not.",[1421,1422,1423],"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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":224,"searchDepth":232,"depth":254,"links":1425},[1426],{"id":1317,"depth":254,"text":1318},"Develop against PGlite with nothing to install, deploy against any Postgres, with the same code and no PGlite in the build.","md",null,{},{"icon":78},{"title":75,"description":1427},"3m5QU8cngE7yiEfh7tNfoBm8c1cfaqB24RPn6QrQXqY",[1435,1437],{"title":41,"path":72,"stem":73,"description":1436,"icon":44,"children":-1},"How many clients share one PGlite session, and where that differs from a real server.",{"title":85,"path":81,"stem":82,"description":1438,"icon":86,"children":-1},"Inspect each PGlite instance, run SQL against it and trigger your actions from Nuxt DevTools.",1791474260430]