[{"data":1,"prerenderedAt":1517},["ShallowReactive",2],{"navigation":3,"examples-nav":228,"-examples-database":357,"-examples-database-surround":1510},[4,83,212,218,225],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zephyr Cloud","/deploy/providers/zephyr","2.deploy/20.providers/zephyr",{"title":209,"path":210,"stem":211},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":213,"path":214,"stem":215,"children":216,"icon":36},"Config","/config","3.config/0.index",[217],{"title":213,"path":214,"stem":215,"icon":36},{"title":219,"path":220,"stem":221,"children":222,"icon":224},"Examples","/examples","4.examples/0.index",[223],{"title":219,"path":220,"stem":221,"icon":224},"i-lucide-folder-code",{"title":5,"path":226,"stem":227},"/","index",[229,234,239,243,247,250,255,259,263,267,271,275,279,284,288,291,295,299,303,308,312,317,321,325,329,333,337,341,345,349,353],{"title":230,"description":231,"category":232,"path":233},"API Routes","File-based API routing with HTTP method support and dynamic parameters.","features","/examples/api-routes/readme",{"title":235,"description":236,"category":237,"path":238},"Auto Imports","Automatic imports for utilities and composables.","config","/examples/auto-imports/readme",{"title":240,"description":241,"category":232,"path":242},"Cached Handler","Cache route responses with configurable bypass logic.","/examples/cached-handler/readme",{"title":244,"description":245,"category":232,"path":246},"Custom Error Handler","Customize error responses with a global error handler.","/examples/custom-error-handler/readme",{"title":38,"description":248,"category":232,"path":249},"Built-in database support with SQL template literals.","/examples/database/readme",{"title":251,"description":252,"category":253,"path":254},"Elysia","Integrate Elysia with Nitro using the server entry.","backend frameworks","/examples/elysia/readme",{"title":256,"description":257,"category":253,"path":258},"Express","Integrate Express with Nitro using the server entry.","/examples/express/readme",{"title":260,"description":261,"category":253,"path":262},"Fastify","Integrate Fastify with Nitro using the server entry.","/examples/fastify/readme",{"title":264,"description":265,"category":232,"path":266},"Hello World","Minimal Nitro server using the web standard fetch handler.","/examples/hello-world/readme",{"title":268,"description":269,"category":253,"path":270},"Hono","Integrate Hono with Nitro using the server entry.","/examples/hono/readme",{"title":272,"description":273,"category":237,"path":274},"Import Alias","Custom import aliases for cleaner module paths.","/examples/import-alias/readme",{"title":276,"description":277,"category":232,"path":278},"Middleware","Request middleware for authentication, logging, and request modification.","/examples/middleware/readme",{"title":280,"description":281,"category":282,"path":283},"Mono JSX","Server-side JSX rendering in Nitro with mono-jsx.","server side rendering","/examples/mono-jsx/readme",{"title":285,"description":286,"category":282,"path":287},"Nano JSX","Server-side JSX rendering in Nitro with nano-jsx.","/examples/nano-jsx/readme",{"title":48,"description":289,"category":232,"path":290},"Extend Nitro with custom plugins for hooks and lifecycle events.","/examples/plugins/readme",{"title":292,"description":293,"category":282,"path":294},"Custom Renderer","Build a custom HTML renderer in Nitro with server-side data fetching.","/examples/renderer/readme",{"title":296,"description":297,"category":237,"path":298},"Runtime Config","Environment-aware configuration with runtime access.","/examples/runtime-config/readme",{"title":300,"description":301,"category":232,"path":302},"Server Fetch","Internal server-to-server requests without network overhead.","/examples/server-fetch/readme",{"title":304,"description":305,"category":306,"path":307},"Shiki","Server-side syntax highlighting in Nitro with Shiki.","integrations","/examples/shiki/readme",{"title":309,"description":310,"category":232,"path":311},"Virtual Routes","Define routes programmatically using Nitro's virtual module system.","/examples/virtual-routes/readme",{"title":313,"description":314,"category":315,"path":316},"Vite Nitro Plugin","Use Nitro as a Vite plugin for programmatic configuration.","vite","/examples/vite-nitro-plugin/readme",{"title":318,"description":319,"category":315,"path":320},"Vite RSC","React Server Components with Vite and Nitro.","/examples/vite-rsc/readme",{"title":322,"description":323,"category":282,"path":324},"Vite SSR HTML","Server-side rendering with vanilla HTML, Vite, and Nitro.","/examples/vite-ssr-html/readme",{"title":326,"description":327,"category":282,"path":328},"SSR with Preact","Server-side rendering with Preact in Nitro using Vite.","/examples/vite-ssr-preact/readme",{"title":330,"description":331,"category":282,"path":332},"SSR with React","Server-side rendering with React in Nitro using Vite.","/examples/vite-ssr-react/readme",{"title":334,"description":335,"category":282,"path":336},"SSR with SolidJS","Server-side rendering with SolidJS in Nitro using Vite.","/examples/vite-ssr-solid/readme",{"title":338,"description":339,"category":282,"path":340},"SSR with TanStack Router","Client-side routing with TanStack Router in Nitro using Vite.","/examples/vite-ssr-tsr-react/readme",{"title":342,"description":343,"category":282,"path":344},"SSR with TanStack Start","Full-stack React with TanStack Start in Nitro using Vite.","/examples/vite-ssr-tss-react/readme",{"title":346,"description":347,"category":282,"path":348},"SSR with Vue Router","Server-side rendering with Vue Router in Nitro using Vite.","/examples/vite-ssr-vue-router/readme",{"title":350,"description":351,"category":315,"path":352},"Vite + tRPC","End-to-end typesafe APIs with tRPC in Nitro using Vite.","/examples/vite-trpc/readme",{"title":354,"description":355,"category":232,"path":356},"WebSocket","Real-time bidirectional communication with WebSocket support.","/examples/websocket/readme",{"id":358,"title":38,"body":359,"category":232,"description":248,"extension":1503,"icon":1504,"meta":1505,"navigation":1506,"path":249,"seo":1507,"stem":1508,"__hash__":1509},"examples/examples/database/README.md",{"type":360,"value":361,"toc":1498},"minimark",[362,1086,1090,1095,1295,1310,1314,1321,1477,1481,1494],[363,364,367,486,573,830,854,908],"code-tree",{":expand-all":365,"default-value":366,"expand-all":5},"true","server.ts",[368,369,374],"pre",{"className":370,"code":371,"filename":372,"language":373,"meta":5,"style":5},"language-ts shiki shiki-themes github-light github-dark github-dark","import { defineConfig } from \"nitro\";\n\nexport default defineConfig({\n  experimental: {\n    database: true,\n    tasks: true,\n  },\n  database: {\n    default: { connector: \"sqlite\" },\n  },\n});\n","nitro.config.ts","ts",[375,376,377,400,407,423,429,441,451,457,463,475,480],"code",{"__ignoreMap":5},[378,379,382,386,390,393,397],"span",{"class":380,"line":381},"line",1,[378,383,385],{"class":384},"so5gQ","import",[378,387,389],{"class":388},"slsVL"," { defineConfig } ",[378,391,392],{"class":384},"from",[378,394,396],{"class":395},"sfrk1"," \"nitro\"",[378,398,399],{"class":388},";\n",[378,401,403],{"class":380,"line":402},2,[378,404,406],{"emptyLinePlaceholder":405},true,"\n",[378,408,410,413,416,420],{"class":380,"line":409},3,[378,411,412],{"class":384},"export",[378,414,415],{"class":384}," default",[378,417,419],{"class":418},"shcOC"," defineConfig",[378,421,422],{"class":388},"({\n",[378,424,426],{"class":380,"line":425},4,[378,427,428],{"class":388},"  experimental: {\n",[378,430,432,435,438],{"class":380,"line":431},5,[378,433,434],{"class":388},"    database: ",[378,436,365],{"class":437},"suiK_",[378,439,440],{"class":388},",\n",[378,442,444,447,449],{"class":380,"line":443},6,[378,445,446],{"class":388},"    tasks: ",[378,448,365],{"class":437},[378,450,440],{"class":388},[378,452,454],{"class":380,"line":453},7,[378,455,456],{"class":388},"  },\n",[378,458,460],{"class":380,"line":459},8,[378,461,462],{"class":388},"  database: {\n",[378,464,466,469,472],{"class":380,"line":465},9,[378,467,468],{"class":388},"    default: { connector: ",[378,470,471],{"class":395},"\"sqlite\"",[378,473,474],{"class":388}," },\n",[378,476,478],{"class":380,"line":477},10,[378,479,456],{"class":388},[378,481,483],{"class":380,"line":482},11,[378,484,485],{"class":388},"});\n",[368,487,492],{"className":488,"code":489,"filename":490,"language":491,"meta":5,"style":5},"language-json shiki shiki-themes github-light github-dark github-dark","{\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"nitro dev\",\n    \"build\": \"nitro build\"\n  },\n  \"devDependencies\": {\n    \"nitro\": \"latest\"\n  }\n}\n","package.json","json",[375,493,494,499,512,520,532,542,546,553,563,568],{"__ignoreMap":5},[378,495,496],{"class":380,"line":381},[378,497,498],{"class":388},"{\n",[378,500,501,504,507,510],{"class":380,"line":402},[378,502,503],{"class":437},"  \"type\"",[378,505,506],{"class":388},": ",[378,508,509],{"class":395},"\"module\"",[378,511,440],{"class":388},[378,513,514,517],{"class":380,"line":409},[378,515,516],{"class":437},"  \"scripts\"",[378,518,519],{"class":388},": {\n",[378,521,522,525,527,530],{"class":380,"line":425},[378,523,524],{"class":437},"    \"dev\"",[378,526,506],{"class":388},[378,528,529],{"class":395},"\"nitro dev\"",[378,531,440],{"class":388},[378,533,534,537,539],{"class":380,"line":431},[378,535,536],{"class":437},"    \"build\"",[378,538,506],{"class":388},[378,540,541],{"class":395},"\"nitro build\"\n",[378,543,544],{"class":380,"line":443},[378,545,456],{"class":388},[378,547,548,551],{"class":380,"line":453},[378,549,550],{"class":437},"  \"devDependencies\"",[378,552,519],{"class":388},[378,554,555,558,560],{"class":380,"line":459},[378,556,557],{"class":437},"    \"nitro\"",[378,559,506],{"class":388},[378,561,562],{"class":395},"\"latest\"\n",[378,564,565],{"class":380,"line":465},[378,566,567],{"class":388},"  }\n",[378,569,570],{"class":380,"line":477},[378,571,572],{"class":388},"}\n",[368,574,576],{"className":370,"code":575,"filename":366,"language":373,"meta":5,"style":5},"import { defineHandler } from \"nitro/h3\";\nimport { useDatabase } from \"nitro/database\";\n\nexport default defineHandler(async () => {\n  const db = useDatabase();\n\n  // Create users table\n  await db.sql`DROP TABLE IF EXISTS users`;\n  await db.sql`CREATE TABLE IF NOT EXISTS users (\"id\" TEXT PRIMARY KEY, \"firstName\" TEXT, \"lastName\" TEXT, \"email\" TEXT)`;\n\n  // Add a new user\n  const userId = String(Math.round(Math.random() * 10_000));\n  await db.sql`INSERT INTO users VALUES (${userId}, 'John', 'Doe', '')`;\n\n  // Query for users\n  const { rows } = await db.sql`SELECT * FROM users WHERE id = ${userId}`;\n\n  return {\n    rows,\n  };\n});\n",[375,577,578,592,606,610,634,651,655,661,677,690,694,699,735,755,760,766,800,805,813,819,825],{"__ignoreMap":5},[378,579,580,582,585,587,590],{"class":380,"line":381},[378,581,385],{"class":384},[378,583,584],{"class":388}," { defineHandler } ",[378,586,392],{"class":384},[378,588,589],{"class":395}," \"nitro/h3\"",[378,591,399],{"class":388},[378,593,594,596,599,601,604],{"class":380,"line":402},[378,595,385],{"class":384},[378,597,598],{"class":388}," { useDatabase } ",[378,600,392],{"class":384},[378,602,603],{"class":395}," \"nitro/database\"",[378,605,399],{"class":388},[378,607,608],{"class":380,"line":409},[378,609,406],{"emptyLinePlaceholder":405},[378,611,612,614,616,619,622,625,628,631],{"class":380,"line":425},[378,613,412],{"class":384},[378,615,415],{"class":384},[378,617,618],{"class":418}," defineHandler",[378,620,621],{"class":388},"(",[378,623,624],{"class":384},"async",[378,626,627],{"class":388}," () ",[378,629,630],{"class":384},"=>",[378,632,633],{"class":388}," {\n",[378,635,636,639,642,645,648],{"class":380,"line":431},[378,637,638],{"class":384},"  const",[378,640,641],{"class":437}," db",[378,643,644],{"class":384}," =",[378,646,647],{"class":418}," useDatabase",[378,649,650],{"class":388},"();\n",[378,652,653],{"class":380,"line":443},[378,654,406],{"emptyLinePlaceholder":405},[378,656,657],{"class":380,"line":453},[378,658,660],{"class":659},"sCsY4","  // Create users table\n",[378,662,663,666,669,672,675],{"class":380,"line":459},[378,664,665],{"class":384},"  await",[378,667,668],{"class":388}," db.",[378,670,671],{"class":418},"sql",[378,673,674],{"class":395},"`DROP TABLE IF EXISTS users`",[378,676,399],{"class":388},[378,678,679,681,683,685,688],{"class":380,"line":465},[378,680,665],{"class":384},[378,682,668],{"class":388},[378,684,671],{"class":418},[378,686,687],{"class":395},"`CREATE TABLE IF NOT EXISTS users (\"id\" TEXT PRIMARY KEY, \"firstName\" TEXT, \"lastName\" TEXT, \"email\" TEXT)`",[378,689,399],{"class":388},[378,691,692],{"class":380,"line":477},[378,693,406],{"emptyLinePlaceholder":405},[378,695,696],{"class":380,"line":482},[378,697,698],{"class":659},"  // Add a new user\n",[378,700,702,704,707,709,712,715,718,720,723,726,729,732],{"class":380,"line":701},12,[378,703,638],{"class":384},[378,705,706],{"class":437}," userId",[378,708,644],{"class":384},[378,710,711],{"class":418}," String",[378,713,714],{"class":388},"(Math.",[378,716,717],{"class":418},"round",[378,719,714],{"class":388},[378,721,722],{"class":418},"random",[378,724,725],{"class":388},"() ",[378,727,728],{"class":384},"*",[378,730,731],{"class":437}," 10_000",[378,733,734],{"class":388},"));\n",[378,736,738,740,742,744,747,750,753],{"class":380,"line":737},13,[378,739,665],{"class":384},[378,741,668],{"class":388},[378,743,671],{"class":418},[378,745,746],{"class":395},"`INSERT INTO users VALUES (${",[378,748,749],{"class":388},"userId",[378,751,752],{"class":395},"}, 'John', 'Doe', '')`",[378,754,399],{"class":388},[378,756,758],{"class":380,"line":757},14,[378,759,406],{"emptyLinePlaceholder":405},[378,761,763],{"class":380,"line":762},15,[378,764,765],{"class":659},"  // Query for users\n",[378,767,769,771,774,777,780,783,786,788,790,793,795,798],{"class":380,"line":768},16,[378,770,638],{"class":384},[378,772,773],{"class":388}," { ",[378,775,776],{"class":437},"rows",[378,778,779],{"class":388}," } ",[378,781,782],{"class":384},"=",[378,784,785],{"class":384}," await",[378,787,668],{"class":388},[378,789,671],{"class":418},[378,791,792],{"class":395},"`SELECT * FROM users WHERE id = ${",[378,794,749],{"class":388},[378,796,797],{"class":395},"}`",[378,799,399],{"class":388},[378,801,803],{"class":380,"line":802},17,[378,804,406],{"emptyLinePlaceholder":405},[378,806,808,811],{"class":380,"line":807},18,[378,809,810],{"class":384},"  return",[378,812,633],{"class":388},[378,814,816],{"class":380,"line":815},19,[378,817,818],{"class":388},"    rows,\n",[378,820,822],{"class":380,"line":821},20,[378,823,824],{"class":388},"  };\n",[378,826,828],{"class":380,"line":827},21,[378,829,485],{"class":388},[368,831,834],{"className":488,"code":832,"filename":833,"language":491,"meta":5,"style":5},"{\n  \"extends\": \"nitro/tsconfig\"\n}\n","tsconfig.json",[375,835,836,840,850],{"__ignoreMap":5},[378,837,838],{"class":380,"line":381},[378,839,498],{"class":388},[378,841,842,845,847],{"class":380,"line":402},[378,843,844],{"class":437},"  \"extends\"",[378,846,506],{"class":388},[378,848,849],{"class":395},"\"nitro/tsconfig\"\n",[378,851,852],{"class":380,"line":409},[378,853,572],{"class":388},[368,855,858],{"className":370,"code":856,"filename":857,"language":373,"meta":5,"style":5},"import { defineConfig } from \"vite\";\nimport { nitro } from \"nitro/vite\";\n\nexport default defineConfig({ plugins: [nitro()] });\n","vite.config.ts",[375,859,860,873,887,891],{"__ignoreMap":5},[378,861,862,864,866,868,871],{"class":380,"line":381},[378,863,385],{"class":384},[378,865,389],{"class":388},[378,867,392],{"class":384},[378,869,870],{"class":395}," \"vite\"",[378,872,399],{"class":388},[378,874,875,877,880,882,885],{"class":380,"line":402},[378,876,385],{"class":384},[378,878,879],{"class":388}," { nitro } ",[378,881,392],{"class":384},[378,883,884],{"class":395}," \"nitro/vite\"",[378,886,399],{"class":388},[378,888,889],{"class":380,"line":409},[378,890,406],{"emptyLinePlaceholder":405},[378,892,893,895,897,899,902,905],{"class":380,"line":425},[378,894,412],{"class":384},[378,896,415],{"class":384},[378,898,419],{"class":418},[378,900,901],{"class":388},"({ plugins: [",[378,903,904],{"class":418},"nitro",[378,906,907],{"class":388},"()] });\n",[368,909,912],{"className":370,"code":910,"filename":911,"language":373,"meta":5,"style":5},"import { defineTask } from \"nitro/task\";\nimport { useDatabase } from \"nitro/database\";\n\nexport default defineTask({\n  meta: {\n    description: \"Run database migrations\",\n  },\n  async run() {\n    const db = useDatabase();\n\n    console.log(\"Running database migrations...\");\n\n    // Create users table\n    await db.sql`DROP TABLE IF EXISTS users`;\n    await db.sql`CREATE TABLE IF NOT EXISTS users (\"id\" TEXT PRIMARY KEY, \"firstName\" TEXT, \"lastName\" TEXT, \"email\" TEXT)`;\n\n    return {\n      result: \"Database migrations complete!\",\n    };\n  },\n});\n","tasks/db/migrate.ts",[375,913,914,928,940,944,955,960,970,974,985,998,1002,1018,1022,1027,1040,1052,1056,1063,1073,1078,1082],{"__ignoreMap":5},[378,915,916,918,921,923,926],{"class":380,"line":381},[378,917,385],{"class":384},[378,919,920],{"class":388}," { defineTask } ",[378,922,392],{"class":384},[378,924,925],{"class":395}," \"nitro/task\"",[378,927,399],{"class":388},[378,929,930,932,934,936,938],{"class":380,"line":402},[378,931,385],{"class":384},[378,933,598],{"class":388},[378,935,392],{"class":384},[378,937,603],{"class":395},[378,939,399],{"class":388},[378,941,942],{"class":380,"line":409},[378,943,406],{"emptyLinePlaceholder":405},[378,945,946,948,950,953],{"class":380,"line":425},[378,947,412],{"class":384},[378,949,415],{"class":384},[378,951,952],{"class":418}," defineTask",[378,954,422],{"class":388},[378,956,957],{"class":380,"line":431},[378,958,959],{"class":388},"  meta: {\n",[378,961,962,965,968],{"class":380,"line":443},[378,963,964],{"class":388},"    description: ",[378,966,967],{"class":395},"\"Run database migrations\"",[378,969,440],{"class":388},[378,971,972],{"class":380,"line":453},[378,973,456],{"class":388},[378,975,976,979,982],{"class":380,"line":459},[378,977,978],{"class":384},"  async",[378,980,981],{"class":418}," run",[378,983,984],{"class":388},"() {\n",[378,986,987,990,992,994,996],{"class":380,"line":465},[378,988,989],{"class":384},"    const",[378,991,641],{"class":437},[378,993,644],{"class":384},[378,995,647],{"class":418},[378,997,650],{"class":388},[378,999,1000],{"class":380,"line":477},[378,1001,406],{"emptyLinePlaceholder":405},[378,1003,1004,1007,1010,1012,1015],{"class":380,"line":482},[378,1005,1006],{"class":388},"    console.",[378,1008,1009],{"class":418},"log",[378,1011,621],{"class":388},[378,1013,1014],{"class":395},"\"Running database migrations...\"",[378,1016,1017],{"class":388},");\n",[378,1019,1020],{"class":380,"line":701},[378,1021,406],{"emptyLinePlaceholder":405},[378,1023,1024],{"class":380,"line":737},[378,1025,1026],{"class":659},"    // Create users table\n",[378,1028,1029,1032,1034,1036,1038],{"class":380,"line":757},[378,1030,1031],{"class":384},"    await",[378,1033,668],{"class":388},[378,1035,671],{"class":418},[378,1037,674],{"class":395},[378,1039,399],{"class":388},[378,1041,1042,1044,1046,1048,1050],{"class":380,"line":762},[378,1043,1031],{"class":384},[378,1045,668],{"class":388},[378,1047,671],{"class":418},[378,1049,687],{"class":395},[378,1051,399],{"class":388},[378,1053,1054],{"class":380,"line":768},[378,1055,406],{"emptyLinePlaceholder":405},[378,1057,1058,1061],{"class":380,"line":802},[378,1059,1060],{"class":384},"    return",[378,1062,633],{"class":388},[378,1064,1065,1068,1071],{"class":380,"line":807},[378,1066,1067],{"class":388},"      result: ",[378,1069,1070],{"class":395},"\"Database migrations complete!\"",[378,1072,440],{"class":388},[378,1074,1075],{"class":380,"line":815},[378,1076,1077],{"class":388},"    };\n",[378,1079,1080],{"class":380,"line":821},[378,1081,456],{"class":388},[378,1083,1084],{"class":380,"line":827},[378,1085,485],{"class":388},[1087,1088,1089],"p",{},"Nitro provides a built-in database layer that uses SQL template literals for safe, parameterized queries. This example creates a users table, inserts a record, and queries it back.",[1091,1092,1094],"h2",{"id":1093},"querying-the-database","Querying the Database",[368,1096,1097],{"className":370,"code":575,"filename":366,"language":373,"meta":5,"style":5},[375,1098,1099,1111,1123,1127,1145,1157,1161,1165,1177,1189,1193,1197,1223,1239,1243,1247,1273,1277,1283,1287,1291],{"__ignoreMap":5},[378,1100,1101,1103,1105,1107,1109],{"class":380,"line":381},[378,1102,385],{"class":384},[378,1104,584],{"class":388},[378,1106,392],{"class":384},[378,1108,589],{"class":395},[378,1110,399],{"class":388},[378,1112,1113,1115,1117,1119,1121],{"class":380,"line":402},[378,1114,385],{"class":384},[378,1116,598],{"class":388},[378,1118,392],{"class":384},[378,1120,603],{"class":395},[378,1122,399],{"class":388},[378,1124,1125],{"class":380,"line":409},[378,1126,406],{"emptyLinePlaceholder":405},[378,1128,1129,1131,1133,1135,1137,1139,1141,1143],{"class":380,"line":425},[378,1130,412],{"class":384},[378,1132,415],{"class":384},[378,1134,618],{"class":418},[378,1136,621],{"class":388},[378,1138,624],{"class":384},[378,1140,627],{"class":388},[378,1142,630],{"class":384},[378,1144,633],{"class":388},[378,1146,1147,1149,1151,1153,1155],{"class":380,"line":431},[378,1148,638],{"class":384},[378,1150,641],{"class":437},[378,1152,644],{"class":384},[378,1154,647],{"class":418},[378,1156,650],{"class":388},[378,1158,1159],{"class":380,"line":443},[378,1160,406],{"emptyLinePlaceholder":405},[378,1162,1163],{"class":380,"line":453},[378,1164,660],{"class":659},[378,1166,1167,1169,1171,1173,1175],{"class":380,"line":459},[378,1168,665],{"class":384},[378,1170,668],{"class":388},[378,1172,671],{"class":418},[378,1174,674],{"class":395},[378,1176,399],{"class":388},[378,1178,1179,1181,1183,1185,1187],{"class":380,"line":465},[378,1180,665],{"class":384},[378,1182,668],{"class":388},[378,1184,671],{"class":418},[378,1186,687],{"class":395},[378,1188,399],{"class":388},[378,1190,1191],{"class":380,"line":477},[378,1192,406],{"emptyLinePlaceholder":405},[378,1194,1195],{"class":380,"line":482},[378,1196,698],{"class":659},[378,1198,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221],{"class":380,"line":701},[378,1200,638],{"class":384},[378,1202,706],{"class":437},[378,1204,644],{"class":384},[378,1206,711],{"class":418},[378,1208,714],{"class":388},[378,1210,717],{"class":418},[378,1212,714],{"class":388},[378,1214,722],{"class":418},[378,1216,725],{"class":388},[378,1218,728],{"class":384},[378,1220,731],{"class":437},[378,1222,734],{"class":388},[378,1224,1225,1227,1229,1231,1233,1235,1237],{"class":380,"line":737},[378,1226,665],{"class":384},[378,1228,668],{"class":388},[378,1230,671],{"class":418},[378,1232,746],{"class":395},[378,1234,749],{"class":388},[378,1236,752],{"class":395},[378,1238,399],{"class":388},[378,1240,1241],{"class":380,"line":757},[378,1242,406],{"emptyLinePlaceholder":405},[378,1244,1245],{"class":380,"line":762},[378,1246,765],{"class":659},[378,1248,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271],{"class":380,"line":768},[378,1250,638],{"class":384},[378,1252,773],{"class":388},[378,1254,776],{"class":437},[378,1256,779],{"class":388},[378,1258,782],{"class":384},[378,1260,785],{"class":384},[378,1262,668],{"class":388},[378,1264,671],{"class":418},[378,1266,792],{"class":395},[378,1268,749],{"class":388},[378,1270,797],{"class":395},[378,1272,399],{"class":388},[378,1274,1275],{"class":380,"line":802},[378,1276,406],{"emptyLinePlaceholder":405},[378,1278,1279,1281],{"class":380,"line":807},[378,1280,810],{"class":384},[378,1282,633],{"class":388},[378,1284,1285],{"class":380,"line":815},[378,1286,818],{"class":388},[378,1288,1289],{"class":380,"line":821},[378,1290,824],{"class":388},[378,1292,1293],{"class":380,"line":827},[378,1294,485],{"class":388},[1087,1296,1297,1298,1301,1302,1305,1306,1309],{},"Retrieve the database instance using ",[375,1299,1300],{},"useDatabase()",". The database can be queried using ",[375,1303,1304],{},"db.sql",", and variables like ",[375,1307,1308],{},"${userId}"," are automatically escaped to prevent SQL injection.",[1091,1311,1313],{"id":1312},"running-migrations-with-tasks","Running Migrations with Tasks",[1087,1315,1316,1317,1320],{},"Nitro tasks let you run operations outside of request handlers. For database migrations, create a task file in ",[375,1318,1319],{},"tasks/"," and run it via the CLI. This keeps schema changes separate from your application code.",[368,1322,1323],{"className":370,"code":910,"filename":911,"language":373,"meta":5,"style":5},[375,1324,1325,1337,1349,1353,1363,1367,1375,1379,1387,1399,1403,1415,1419,1423,1435,1447,1451,1457,1465,1469,1473],{"__ignoreMap":5},[378,1326,1327,1329,1331,1333,1335],{"class":380,"line":381},[378,1328,385],{"class":384},[378,1330,920],{"class":388},[378,1332,392],{"class":384},[378,1334,925],{"class":395},[378,1336,399],{"class":388},[378,1338,1339,1341,1343,1345,1347],{"class":380,"line":402},[378,1340,385],{"class":384},[378,1342,598],{"class":388},[378,1344,392],{"class":384},[378,1346,603],{"class":395},[378,1348,399],{"class":388},[378,1350,1351],{"class":380,"line":409},[378,1352,406],{"emptyLinePlaceholder":405},[378,1354,1355,1357,1359,1361],{"class":380,"line":425},[378,1356,412],{"class":384},[378,1358,415],{"class":384},[378,1360,952],{"class":418},[378,1362,422],{"class":388},[378,1364,1365],{"class":380,"line":431},[378,1366,959],{"class":388},[378,1368,1369,1371,1373],{"class":380,"line":443},[378,1370,964],{"class":388},[378,1372,967],{"class":395},[378,1374,440],{"class":388},[378,1376,1377],{"class":380,"line":453},[378,1378,456],{"class":388},[378,1380,1381,1383,1385],{"class":380,"line":459},[378,1382,978],{"class":384},[378,1384,981],{"class":418},[378,1386,984],{"class":388},[378,1388,1389,1391,1393,1395,1397],{"class":380,"line":465},[378,1390,989],{"class":384},[378,1392,641],{"class":437},[378,1394,644],{"class":384},[378,1396,647],{"class":418},[378,1398,650],{"class":388},[378,1400,1401],{"class":380,"line":477},[378,1402,406],{"emptyLinePlaceholder":405},[378,1404,1405,1407,1409,1411,1413],{"class":380,"line":482},[378,1406,1006],{"class":388},[378,1408,1009],{"class":418},[378,1410,621],{"class":388},[378,1412,1014],{"class":395},[378,1414,1017],{"class":388},[378,1416,1417],{"class":380,"line":701},[378,1418,406],{"emptyLinePlaceholder":405},[378,1420,1421],{"class":380,"line":737},[378,1422,1026],{"class":659},[378,1424,1425,1427,1429,1431,1433],{"class":380,"line":757},[378,1426,1031],{"class":384},[378,1428,668],{"class":388},[378,1430,671],{"class":418},[378,1432,674],{"class":395},[378,1434,399],{"class":388},[378,1436,1437,1439,1441,1443,1445],{"class":380,"line":762},[378,1438,1031],{"class":384},[378,1440,668],{"class":388},[378,1442,671],{"class":418},[378,1444,687],{"class":395},[378,1446,399],{"class":388},[378,1448,1449],{"class":380,"line":768},[378,1450,406],{"emptyLinePlaceholder":405},[378,1452,1453,1455],{"class":380,"line":802},[378,1454,1060],{"class":384},[378,1456,633],{"class":388},[378,1458,1459,1461,1463],{"class":380,"line":807},[378,1460,1067],{"class":388},[378,1462,1070],{"class":395},[378,1464,440],{"class":388},[378,1466,1467],{"class":380,"line":815},[378,1468,1077],{"class":388},[378,1470,1471],{"class":380,"line":821},[378,1472,456],{"class":388},[378,1474,1475],{"class":380,"line":827},[378,1476,485],{"class":388},[1091,1478,1480],{"id":1479},"learn-more","Learn More",[1482,1483,1484,1490],"ul",{},[1485,1486,1487],"li",{},[1488,1489,38],"a",{"href":39},[1485,1491,1492],{},[1488,1493,53],{"href":54},[1495,1496,1497],"style",{},"html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}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 .sCsY4, html code.shiki .sCsY4{--shiki-light:#6A737D;--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":5,"searchDepth":402,"depth":402,"links":1499},[1500,1501,1502],{"id":1093,"depth":402,"text":1094},{"id":1312,"depth":402,"text":1313},{"id":1479,"depth":402,"text":1480},"md","i-lucide-database",{"automd":405},{},{"title":38,"description":248},"examples/database/README","WDyxpWE2OUpGKEYNQb3rB-AyfX4QvPuiiOQ-jzrttN8",[1511,1514],{"title":244,"path":1512,"stem":1513,"description":245,"children":-1},"/examples/custom-error-handler","examples/custom-error-handler/README",{"title":264,"path":1515,"stem":1516,"description":265,"children":-1},"/examples/hello-world","examples/hello-world/README",1773176974925]