[{"data":1,"prerenderedAt":3952},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto/auto-api/cloudflare-d1-en":444,"/docs/nuxt-auto/auto-api/cloudflare-d1-surround-en":3948},[4,8,13,28,41,51,64,77,94,110,134,150,157,172],{"title":5,"path":6,"stem":7},"Overview","/docs/landing","0.docs/1.landing/001.index",{"title":9,"path":10,"stem":11,"badge":12},"Built-in Features","/docs/landing/built-in-features","0.docs/1.landing/002.built-in-features","New",{"title":14,"path":15,"stem":16,"children":17,"icon":27},"Content Foundation","/docs/landing/content","0.docs/1.landing/02.content/1.index",[18,19,23],{"title":5,"path":15,"stem":16},{"title":20,"path":21,"stem":22},"Details","/docs/landing/content/details","0.docs/1.landing/02.content/2.details",{"title":24,"path":25,"stem":26},"Technical","/docs/landing/content/technical","0.docs/1.landing/02.content/4.technical","i-heroicons-document-text",{"title":29,"path":30,"stem":31,"children":32,"icon":40},"Regional Content","/docs/landing/regional","0.docs/1.landing/03.regional/1.index",[33,34,37],{"title":5,"path":30,"stem":31},{"title":20,"path":35,"stem":36},"/docs/landing/regional/details","0.docs/1.landing/03.regional/2.details",{"title":24,"path":38,"stem":39},"/docs/landing/regional/technical","0.docs/1.landing/03.regional/4.technical","i-heroicons-globe-alt",{"title":42,"path":43,"stem":44,"children":45,"icon":50},"Multi-language","/docs/landing/multilang","0.docs/1.landing/04.multilang/1.index",[46,47],{"title":5,"path":43,"stem":44},{"title":20,"path":48,"stem":49},"/docs/landing/multilang/details","0.docs/1.landing/04.multilang/2.details","i-heroicons-language",{"title":52,"path":53,"stem":54,"children":55,"icon":63},"Blog","/docs/landing/blog","0.docs/1.landing/05.blog/1.index",[56,57,60],{"title":5,"path":53,"stem":54},{"title":20,"path":58,"stem":59},"/docs/landing/blog/details","0.docs/1.landing/05.blog/2.details",{"title":24,"path":61,"stem":62},"/docs/landing/blog/technical","0.docs/1.landing/05.blog/4.technical","i-heroicons-pencil-square",{"title":65,"path":66,"stem":67,"children":68,"icon":76},"Documentation","/docs/landing/docs","0.docs/1.landing/06.docs/1.index",[69,70,73],{"title":5,"path":66,"stem":67},{"title":20,"path":71,"stem":72},"/docs/landing/docs/details","0.docs/1.landing/06.docs/2.details",{"title":24,"path":74,"stem":75},"/docs/landing/docs/technical","0.docs/1.landing/06.docs/4.technical","i-heroicons-book-open",{"title":78,"path":79,"stem":80,"children":81,"icon":93},"Forms","/docs/landing/forms","0.docs/1.landing/07.forms/1.index",[82,83,86,90],{"title":5,"path":79,"stem":80},{"title":20,"path":84,"stem":85},"/docs/landing/forms/details","0.docs/1.landing/07.forms/2.details",{"title":87,"path":88,"stem":89},"Admin","/docs/landing/forms/admin","0.docs/1.landing/07.forms/3.admin",{"title":24,"path":91,"stem":92},"/docs/landing/forms/technical","0.docs/1.landing/07.forms/4.technical","i-heroicons-clipboard-document-list",{"title":95,"path":96,"stem":97,"children":98,"icon":109},"Email","/docs/landing/email","0.docs/1.landing/08.email/1.index",[99,100,103,106],{"title":5,"path":96,"stem":97},{"title":20,"path":101,"stem":102},"/docs/landing/email/details","0.docs/1.landing/08.email/2.details",{"title":87,"path":104,"stem":105},"/docs/landing/email/admin","0.docs/1.landing/08.email/3.admin",{"title":24,"path":107,"stem":108},"/docs/landing/email/technical","0.docs/1.landing/08.email/4.technical","i-heroicons-envelope",{"title":111,"path":112,"stem":113,"children":114,"icon":133},"Feedback Platform","/docs/landing/feedback","0.docs/1.landing/09.feedback/1.index",[115,116,119,122,125,129],{"title":5,"path":112,"stem":113},{"title":20,"path":117,"stem":118},"/docs/landing/feedback/details","0.docs/1.landing/09.feedback/2.details",{"title":87,"path":120,"stem":121},"/docs/landing/feedback/admin","0.docs/1.landing/09.feedback/3.admin",{"title":24,"path":123,"stem":124},"/docs/landing/feedback/technical","0.docs/1.landing/09.feedback/4.technical",{"title":126,"path":127,"stem":128},"Compare vs SaaS","/docs/landing/feedback/compare","0.docs/1.landing/09.feedback/5.compare",{"title":130,"path":131,"stem":132},"FAQ","/docs/landing/feedback/faq","0.docs/1.landing/09.feedback/6.faq","i-heroicons-chat-bubble-left-right",{"title":135,"path":136,"stem":137,"children":138,"icon":149},"Storage","/docs/landing/storage","0.docs/1.landing/10.storage/1.index",[139,140,143,146],{"title":5,"path":136,"stem":137},{"title":20,"path":141,"stem":142},"/docs/landing/storage/details","0.docs/1.landing/10.storage/2.details",{"title":87,"path":144,"stem":145},"/docs/landing/storage/admin","0.docs/1.landing/10.storage/3.admin",{"title":24,"path":147,"stem":148},"/docs/landing/storage/technical","0.docs/1.landing/10.storage/4.technical","i-heroicons-circle-stack",{"title":151,"path":152,"stem":153,"children":154,"icon":156},"Offline First","/docs/landing/offline-first","0.docs/1.landing/11.offline-first/1.index",[155],{"title":151,"path":152,"stem":153},"i-heroicons-users",{"title":158,"path":159,"stem":160,"children":161,"icon":156},"Yjs Sync","/docs/landing/yjs-sync","0.docs/1.landing/12.yjs-sync/1.index",[162,163,166,169],{"title":5,"path":159,"stem":160},{"title":20,"path":164,"stem":165},"/docs/landing/yjs-sync/details","0.docs/1.landing/12.yjs-sync/2.details",{"title":87,"path":167,"stem":168},"/docs/landing/yjs-sync/admin","0.docs/1.landing/12.yjs-sync/3.admin",{"title":24,"path":170,"stem":171},"/docs/landing/yjs-sync/technical","0.docs/1.landing/12.yjs-sync/4.technical",{"title":173,"path":174,"stem":175,"children":176,"badge":178,"icon":179},"Newsletter","/docs/landing/newsletter","0.docs/1.landing/13.newsletter/index",[177],{"title":173,"path":174,"stem":175,"badge":178},"Coming Soon","i-lucide-send",[181,184,202,298],{"title":5,"path":182,"stem":183},"/docs/nuxt-auto","0.docs/3.nuxt-auto/index",{"title":185,"path":186,"stem":187,"children":188,"page":201},"Getting Started","/docs/nuxt-auto/getting-started","0.docs/3.nuxt-auto/1.getting-started",[189,193,197],{"title":190,"path":191,"stem":192},"Introduction","/docs/nuxt-auto/getting-started/introduction","0.docs/3.nuxt-auto/1.getting-started/1.introduction",{"title":194,"path":195,"stem":196},"Installation","/docs/nuxt-auto/getting-started/installation","0.docs/3.nuxt-auto/1.getting-started/2.installation",{"title":198,"path":199,"stem":200},"Quick Start","/docs/nuxt-auto/getting-started/quick-start","0.docs/3.nuxt-auto/1.getting-started/3.quick-start",false,{"title":203,"path":204,"stem":205,"children":206,"page":201},"Auto API","/docs/nuxt-auto/auto-api","0.docs/3.nuxt-auto/2.auto-api",[207,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294],{"title":185,"path":208,"stem":209},"/docs/nuxt-auto/auto-api/getting-started","0.docs/3.nuxt-auto/2.auto-api/1.getting-started",{"title":211,"path":212,"stem":213},"Aggregations","/docs/nuxt-auto/auto-api/aggregations","0.docs/3.nuxt-auto/2.auto-api/10.aggregations",{"title":215,"path":216,"stem":217},"Lifecycle Hooks","/docs/nuxt-auto/auto-api/lifecycle-hooks","0.docs/3.nuxt-auto/2.auto-api/11.lifecycle-hooks",{"title":219,"path":220,"stem":221},"Many-to-Many (M2M) Relationships","/docs/nuxt-auto/auto-api/m2m-relationships","0.docs/3.nuxt-auto/2.auto-api/12.m2m-relationships",{"title":223,"path":224,"stem":225},"Plugin System","/docs/nuxt-auto/auto-api/plugin-system","0.docs/3.nuxt-auto/2.auto-api/13.plugin-system",{"title":227,"path":228,"stem":229},"Database Adapters","/docs/nuxt-auto/auto-api/database-adapters","0.docs/3.nuxt-auto/2.auto-api/14.database-adapters",{"title":231,"path":232,"stem":233},"Custom Endpoints","/docs/nuxt-auto/auto-api/custom-endpoints","0.docs/3.nuxt-auto/2.auto-api/15.custom-endpoints",{"title":235,"path":236,"stem":237},"Multi-Tenancy","/docs/nuxt-auto/auto-api/multi-tenancy","0.docs/3.nuxt-auto/2.auto-api/16.multi-tenancy",{"title":239,"path":240,"stem":241},"Validation","/docs/nuxt-auto/auto-api/validation","0.docs/3.nuxt-auto/2.auto-api/2.validation",{"title":243,"path":244,"stem":245},"Rate Limiting","/docs/nuxt-auto/auto-api/rate-limiting","0.docs/3.nuxt-auto/2.auto-api/20.rate-limiting",{"title":247,"path":248,"stem":249},"Request Metadata Plugin","/docs/nuxt-auto/auto-api/request-metadata","0.docs/3.nuxt-auto/2.auto-api/21.request-metadata",{"title":251,"path":252,"stem":253},"Plugin Catalog","/docs/nuxt-auto/auto-api/plugin-catalog","0.docs/3.nuxt-auto/2.auto-api/22.plugin-catalog",{"title":255,"path":256,"stem":257},"Handler Overrides","/docs/nuxt-auto/auto-api/handler-overrides","0.docs/3.nuxt-auto/2.auto-api/3.handler-overrides",{"title":259,"path":260,"stem":261},"Cloudflare D1","/docs/nuxt-auto/auto-api/cloudflare-d1","0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1",{"title":263,"path":264,"stem":265},"SQLite to D1 Migration","/docs/nuxt-auto/auto-api/migration-sqlite-d1","0.docs/3.nuxt-auto/2.auto-api/31.migration-sqlite-d1",{"title":267,"path":268,"stem":269},"Frontend Composables","/docs/nuxt-auto/auto-api/frontend-composables","0.docs/3.nuxt-auto/2.auto-api/32.frontend-composables",{"title":271,"path":272,"stem":273},"Testing","/docs/nuxt-auto/auto-api/testing","0.docs/3.nuxt-auto/2.auto-api/33.testing",{"title":275,"path":276,"stem":277},"Pagination","/docs/nuxt-auto/auto-api/pagination","0.docs/3.nuxt-auto/2.auto-api/4.pagination",{"title":279,"path":280,"stem":281},"Soft Deletes","/docs/nuxt-auto/auto-api/soft-deletes","0.docs/3.nuxt-auto/2.auto-api/5.soft-deletes",{"title":283,"path":284,"stem":285},"Authentication & Authorization","/docs/nuxt-auto/auto-api/authentication-authorization","0.docs/3.nuxt-auto/2.auto-api/6.authentication-authorization",{"title":287,"path":288,"stem":289},"Better-Auth Integration","/docs/nuxt-auto/auto-api/better-auth","0.docs/3.nuxt-auto/2.auto-api/7.better-auth",{"title":291,"path":292,"stem":293},"Nested Relations","/docs/nuxt-auto/auto-api/nested-relationships","0.docs/3.nuxt-auto/2.auto-api/8.nested-relationships",{"title":295,"path":296,"stem":297},"Bulk Operations","/docs/nuxt-auto/auto-api/bulk-operations","0.docs/3.nuxt-auto/2.auto-api/9.bulk-operations",{"title":299,"path":300,"stem":301,"children":302,"page":201},"Auto Admin","/docs/nuxt-auto/auto-admin","0.docs/3.nuxt-auto/3.auto-admin",[303,306,310,314,318,322,326,330,334],{"title":185,"path":304,"stem":305},"/docs/nuxt-auto/auto-admin/getting-started","0.docs/3.nuxt-auto/3.auto-admin/1.getting-started",{"title":307,"path":308,"stem":309},"Configuration & Theming","/docs/nuxt-auto/auto-admin/configuration-theming","0.docs/3.nuxt-auto/3.auto-admin/2.configuration-theming",{"title":311,"path":312,"stem":313},"Resource Configuration","/docs/nuxt-auto/auto-admin/resource-configuration","0.docs/3.nuxt-auto/3.auto-admin/3.resource-configuration",{"title":315,"path":316,"stem":317},"Form Fields & Widgets","/docs/nuxt-auto/auto-admin/form-fields-widgets","0.docs/3.nuxt-auto/3.auto-admin/4.form-fields-widgets",{"title":319,"path":320,"stem":321},"Permissions","/docs/nuxt-auto/auto-admin/permissions","0.docs/3.nuxt-auto/3.auto-admin/5.permissions",{"title":323,"path":324,"stem":325},"Custom Pages","/docs/nuxt-auto/auto-admin/custom-pages","0.docs/3.nuxt-auto/3.auto-admin/6.custom-pages",{"title":327,"path":328,"stem":329},"M2M Relationships","/docs/nuxt-auto/auto-admin/m2m-relationships","0.docs/3.nuxt-auto/3.auto-admin/7.m2m-relationships",{"title":331,"path":332,"stem":333},"Custom Actions","/docs/nuxt-auto/auto-admin/custom-actions","0.docs/3.nuxt-auto/3.auto-admin/8.custom-actions",{"title":335,"path":336,"stem":337},"Composables","/docs/nuxt-auto/auto-admin/composables","0.docs/3.nuxt-auto/3.auto-admin/9.composables",[339,342,355,382,400,415,425],{"title":5,"path":340,"stem":341},"/docs/nuxt-protokit","0.docs/4.nuxt-protokit/index",{"title":185,"path":343,"stem":344,"children":345,"icon":354},"/docs/nuxt-protokit/getting-started","0.docs/4.nuxt-protokit/1.getting-started/1.index",[346,347,351],{"title":190,"path":343,"stem":344},{"title":348,"path":349,"stem":350},"Core Concepts","/docs/nuxt-protokit/getting-started/concepts","0.docs/4.nuxt-protokit/1.getting-started/2.concepts",{"title":198,"path":352,"stem":353},"/docs/nuxt-protokit/getting-started/quick-start","0.docs/4.nuxt-protokit/1.getting-started/3.quick-start","i-lucide-rocket",{"title":356,"path":357,"stem":358,"children":359,"icon":381},"Schemas","/docs/nuxt-protokit/schemas","0.docs/4.nuxt-protokit/2.schemas/1.index",[360,361,365,369,373,377],{"title":5,"path":357,"stem":358},{"title":362,"path":363,"stem":364},"Field Types","/docs/nuxt-protokit/schemas/fields","0.docs/4.nuxt-protokit/2.schemas/2.fields",{"title":366,"path":367,"stem":368},"Collections","/docs/nuxt-protokit/schemas/collections","0.docs/4.nuxt-protokit/2.schemas/3.collections",{"title":370,"path":371,"stem":372},"Derived & Computed","/docs/nuxt-protokit/schemas/derived-computed","0.docs/4.nuxt-protokit/2.schemas/4.derived-computed",{"title":374,"path":375,"stem":376},"Connections","/docs/nuxt-protokit/schemas/connections","0.docs/4.nuxt-protokit/2.schemas/5.connections",{"title":378,"path":379,"stem":380},"Visualizations & Layouts","/docs/nuxt-protokit/schemas/visualizations","0.docs/4.nuxt-protokit/2.schemas/6.visualizations","i-lucide-file-code",{"title":335,"path":383,"stem":384,"children":385,"icon":399},"/docs/nuxt-protokit/composables","0.docs/4.nuxt-protokit/3.composables/1.index",[386,387,391,395],{"title":5,"path":383,"stem":384},{"title":388,"path":389,"stem":390},"usePrototype","/docs/nuxt-protokit/composables/use-prototype","0.docs/4.nuxt-protokit/3.composables/2.use-prototype",{"title":392,"path":393,"stem":394},"useProtoDoc","/docs/nuxt-protokit/composables/use-proto-doc","0.docs/4.nuxt-protokit/3.composables/3.use-proto-doc",{"title":396,"path":397,"stem":398},"useProtoCollection","/docs/nuxt-protokit/composables/use-proto-collection","0.docs/4.nuxt-protokit/3.composables/4.use-proto-collection","i-lucide-layers",{"title":401,"path":402,"stem":403,"children":404,"icon":414},"Components","/docs/nuxt-protokit/components","0.docs/4.nuxt-protokit/4.components/1.index",[405,406,410],{"title":5,"path":402,"stem":403},{"title":407,"path":408,"stem":409},"ProtoTool","/docs/nuxt-protokit/components/proto-tool","0.docs/4.nuxt-protokit/4.components/2.proto-tool",{"title":411,"path":412,"stem":413},"ProtoCrudModal","/docs/nuxt-protokit/components/proto-crud-modal","0.docs/4.nuxt-protokit/4.components/3.proto-crud-modal","i-lucide-puzzle",{"title":151,"path":416,"stem":417,"children":418,"icon":424},"/docs/nuxt-protokit/offline-first","0.docs/4.nuxt-protokit/5.offline-first/1.index",[419,420],{"title":151,"path":416,"stem":417},{"title":421,"path":422,"stem":423},"Corruption Recovery","/docs/nuxt-protokit/offline-first/corruption-recovery","0.docs/4.nuxt-protokit/5.offline-first/2.corruption-recovery","i-lucide-wifi-off",{"title":426,"icon":427,"path":428,"stem":429,"children":430},"Advanced","i-lucide-graduation-cap","/docs/nuxt-protokit/advanced","0.docs/4.nuxt-protokit/6.advanced/1.index",[431,432,436,440],{"title":5,"path":428,"stem":429},{"title":433,"path":434,"stem":435},"Multi-Tool Apps","/docs/nuxt-protokit/advanced/building-a-toolkit","0.docs/4.nuxt-protokit/6.advanced/1.building-a-toolkit",{"title":437,"path":438,"stem":439},"Schema Patterns","/docs/nuxt-protokit/advanced/custom-schema-patterns","0.docs/4.nuxt-protokit/6.advanced/2.custom-schema-patterns",{"title":441,"path":442,"stem":443},"Custom Fields & Viz","/docs/nuxt-protokit/advanced/extensibility","0.docs/4.nuxt-protokit/6.advanced/3.extensibility",{"page":445,"fallbackPage":3944},{"id":446,"title":259,"body":447,"description":457,"extension":3943,"links":3944,"meta":3945,"navigation":3944,"ogImage":3944,"path":260,"seo":3946,"stem":261,"__hash__":3947},"nuxt_auto/0.docs/3.nuxt-auto/2.auto-api/30.cloudflare-d1.md",{"type":448,"value":449,"toc":3897},"minimark",[450,454,458,463,509,512,515,520,547,551,617,620,624,656,660,731,738,742,748,832,836,1060,1064,1069,1318,1322,1467,1470,1474,1477,1514,1518,1521,1887,1890,1894,1914,1920,1924,1980,1984,1987,2015,2018,2022,2065,2069,2296,2300,2303,2348,2351,2355,2387,2391,2396,2648,2652,2655,2763,2767,2770,2892,2896,3062,3066,3069,3323,3326,3330,3336,3341,3360,3364,3369,3373,3423,3427,3432,3436,3450,3454,3459,3463,3477,3481,3588,3592,3596,3599,3737,3741,3744,3847,3851,3858,3862,3893],[451,452,259],"h1",{"id":453},"cloudflare-d1",[455,456,457],"p",{},"Nuxt Auto API fully supports Cloudflare D1, allowing you to deploy your API to the edge with a serverless SQLite database.",[459,460,462],"h2",{"id":461},"table-of-contents","Table of Contents",[464,465,466,473,479,485,491,497,503],"ul",{},[467,468,469],"li",{},[470,471,5],"a",{"href":472},"#overview",[467,474,475],{},[470,476,478],{"href":477},"#setup-guide","Setup Guide",[467,480,481],{},[470,482,484],{"href":483},"#local-development","Local Development",[467,486,487],{},[470,488,490],{"href":489},"#database-migrations","Database Migrations",[467,492,493],{},[470,494,496],{"href":495},"#deployment","Deployment",[467,498,499],{},[470,500,502],{"href":501},"#performance-optimization","Performance Optimization",[467,504,505],{},[470,506,508],{"href":507},"#troubleshooting","Troubleshooting",[459,510,5],{"id":511},"overview",[455,513,514],{},"Cloudflare D1 is a serverless SQLite database that runs on Cloudflare's global network. Nuxt Auto API uses the same Drizzle ORM schema for both local SQLite (better-sqlite3) and production D1.",[516,517,519],"h3",{"id":518},"key-benefits","Key Benefits",[464,521,522,529,535,541],{},[467,523,524,528],{},[525,526,527],"strong",{},"Edge Performance",": Database runs close to your users worldwide",[467,530,531,534],{},[525,532,533],{},"Serverless",": No infrastructure management",[467,536,537,540],{},[525,538,539],{},"Cost-Effective",": Pay only for what you use",[467,542,543,546],{},[525,544,545],{},"SQLite Compatible",": Same schema and queries as local development",[516,548,550],{"id":549},"differences-from-sqlite","Differences from SQLite",[552,553,554,569],"table",{},[555,556,557],"thead",{},[558,559,560,564,567],"tr",{},[561,562,563],"th",{},"Feature",[561,565,566],{},"SQLite (better-sqlite3)",[561,568,259],{},[570,571,572,584,595,606],"tbody",{},[558,573,574,578,581],{},[575,576,577],"td",{},"Execution",[575,579,580],{},"Synchronous",[575,582,583],{},"Asynchronous",[558,585,586,589,592],{},[575,587,588],{},"Location",[575,590,591],{},"Local file",[575,593,594],{},"Edge network",[558,596,597,600,603],{},[575,598,599],{},"Scaling",[575,601,602],{},"Single instance",[575,604,605],{},"Globally distributed",[558,607,608,611,614],{},[575,609,610],{},"Cost",[575,612,613],{},"Free (development)",[575,615,616],{},"Pay-per-use",[459,618,478],{"id":619},"setup-guide",[516,621,623],{"id":622},"step-1-install-dependencies","Step 1: Install Dependencies",[625,626,631],"pre",{"className":627,"code":628,"language":629,"meta":630,"style":630},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install drizzle-orm wrangler --save-dev\n","bash","",[632,633,634],"code",{"__ignoreMap":630},[635,636,639,643,647,650,653],"span",{"class":637,"line":638},"line",1,[635,640,642],{"class":641},"sBMFI","npm",[635,644,646],{"class":645},"sfazB"," install",[635,648,649],{"class":645}," drizzle-orm",[635,651,652],{"class":645}," wrangler",[635,654,655],{"class":645}," --save-dev\n",[516,657,659],{"id":658},"step-2-create-d1-database","Step 2: Create D1 Database",[625,661,663],{"className":627,"code":662,"language":629,"meta":630,"style":630},"# Create D1 database\nnpx wrangler d1 create @websideproject/nuxt-auto-api-db\n\n# Output:\n# Database created!\n# [[d1_databases]]\n# binding = \"DB\"\n# database_name = \"@websideproject/nuxt-auto-api-db\"\n# database_id = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n",[632,664,665,671,688,695,701,707,713,719,725],{"__ignoreMap":630},[635,666,667],{"class":637,"line":638},[635,668,670],{"class":669},"sHwdD","# Create D1 database\n",[635,672,674,677,679,682,685],{"class":637,"line":673},2,[635,675,676],{"class":641},"npx",[635,678,652],{"class":645},[635,680,681],{"class":645}," d1",[635,683,684],{"class":645}," create",[635,686,687],{"class":645}," @websideproject/nuxt-auto-api-db\n",[635,689,691],{"class":637,"line":690},3,[635,692,694],{"emptyLinePlaceholder":693},true,"\n",[635,696,698],{"class":637,"line":697},4,[635,699,700],{"class":669},"# Output:\n",[635,702,704],{"class":637,"line":703},5,[635,705,706],{"class":669},"# Database created!\n",[635,708,710],{"class":637,"line":709},6,[635,711,712],{"class":669},"# [[d1_databases]]\n",[635,714,716],{"class":637,"line":715},7,[635,717,718],{"class":669},"# binding = \"DB\"\n",[635,720,722],{"class":637,"line":721},8,[635,723,724],{"class":669},"# database_name = \"@websideproject/nuxt-auto-api-db\"\n",[635,726,728],{"class":637,"line":727},9,[635,729,730],{"class":669},"# database_id = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n",[455,732,733,734,737],{},"Copy the output to your ",[632,735,736],{},"wrangler.toml",".",[516,739,741],{"id":740},"step-3-configure-wranglertoml","Step 3: Configure wrangler.toml",[455,743,744,745,747],{},"Create ",[632,746,736],{}," in your project root:",[625,749,753],{"className":750,"code":751,"language":752,"meta":630,"style":630},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name = \"@websideproject/nuxt-auto-api\"\nmain = \".output/server/index.mjs\"\ncompatibility_date = \"2024-01-01\"\n\n[[d1_databases]]\nbinding = \"DB\"\ndatabase_name = \"@websideproject/nuxt-auto-api-db\"\ndatabase_id = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n\n# For local development\n[env.local]\n[[env.local.d1_databases]]\nbinding = \"DB\"\ndatabase_name = \"@websideproject/nuxt-auto-api-db\"\ndatabase_id = \"local\"\n","toml",[632,754,755,760,765,770,774,779,784,789,794,798,804,810,816,821,826],{"__ignoreMap":630},[635,756,757],{"class":637,"line":638},[635,758,759],{},"name = \"@websideproject/nuxt-auto-api\"\n",[635,761,762],{"class":637,"line":673},[635,763,764],{},"main = \".output/server/index.mjs\"\n",[635,766,767],{"class":637,"line":690},[635,768,769],{},"compatibility_date = \"2024-01-01\"\n",[635,771,772],{"class":637,"line":697},[635,773,694],{"emptyLinePlaceholder":693},[635,775,776],{"class":637,"line":703},[635,777,778],{},"[[d1_databases]]\n",[635,780,781],{"class":637,"line":709},[635,782,783],{},"binding = \"DB\"\n",[635,785,786],{"class":637,"line":715},[635,787,788],{},"database_name = \"@websideproject/nuxt-auto-api-db\"\n",[635,790,791],{"class":637,"line":721},[635,792,793],{},"database_id = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\n",[635,795,796],{"class":637,"line":727},[635,797,694],{"emptyLinePlaceholder":693},[635,799,801],{"class":637,"line":800},10,[635,802,803],{},"# For local development\n",[635,805,807],{"class":637,"line":806},11,[635,808,809],{},"[env.local]\n",[635,811,813],{"class":637,"line":812},12,[635,814,815],{},"[[env.local.d1_databases]]\n",[635,817,819],{"class":637,"line":818},13,[635,820,783],{},[635,822,824],{"class":637,"line":823},14,[635,825,788],{},[635,827,829],{"class":637,"line":828},15,[635,830,831],{},"database_id = \"local\"\n",[516,833,835],{"id":834},"step-4-update-drizzle-configuration","Step 4: Update Drizzle Configuration",[625,837,841],{"className":838,"code":839,"language":840,"meta":630,"style":630},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","// drizzle.config.ts\nimport { defineConfig } from 'drizzle-kit'\n\nexport default defineConfig({\n  schema: './server/database/schema.ts',\n  out: './server/database/migrations',\n  dialect: 'sqlite', // D1 uses SQLite dialect\n  driver: 'd1-http', // For remote operations\n  dbCredentials: {\n    accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,\n    databaseId: process.env.CLOUDFLARE_D1_ID!,\n    token: process.env.CLOUDFLARE_API_TOKEN!\n  }\n})\n","typescript",[632,842,843,848,877,881,898,918,934,954,973,983,1006,1026,1047,1052],{"__ignoreMap":630},[635,844,845],{"class":637,"line":638},[635,846,847],{"class":669},"// drizzle.config.ts\n",[635,849,850,854,858,862,865,868,871,874],{"class":637,"line":673},[635,851,853],{"class":852},"s7zQu","import",[635,855,857],{"class":856},"sMK4o"," {",[635,859,861],{"class":860},"sTEyZ"," defineConfig",[635,863,864],{"class":856}," }",[635,866,867],{"class":852}," from",[635,869,870],{"class":856}," '",[635,872,873],{"class":645},"drizzle-kit",[635,875,876],{"class":856},"'\n",[635,878,879],{"class":637,"line":690},[635,880,694],{"emptyLinePlaceholder":693},[635,882,883,886,889,892,895],{"class":637,"line":697},[635,884,885],{"class":852},"export",[635,887,888],{"class":852}," default",[635,890,861],{"class":891},"s2Zo4",[635,893,894],{"class":860},"(",[635,896,897],{"class":856},"{\n",[635,899,900,904,907,909,912,915],{"class":637,"line":703},[635,901,903],{"class":902},"swJcz","  schema",[635,905,906],{"class":856},":",[635,908,870],{"class":856},[635,910,911],{"class":645},"./server/database/schema.ts",[635,913,914],{"class":856},"'",[635,916,917],{"class":856},",\n",[635,919,920,923,925,927,930,932],{"class":637,"line":709},[635,921,922],{"class":902},"  out",[635,924,906],{"class":856},[635,926,870],{"class":856},[635,928,929],{"class":645},"./server/database/migrations",[635,931,914],{"class":856},[635,933,917],{"class":856},[635,935,936,939,941,943,946,948,951],{"class":637,"line":715},[635,937,938],{"class":902},"  dialect",[635,940,906],{"class":856},[635,942,870],{"class":856},[635,944,945],{"class":645},"sqlite",[635,947,914],{"class":856},[635,949,950],{"class":856},",",[635,952,953],{"class":669}," // D1 uses SQLite dialect\n",[635,955,956,959,961,963,966,968,970],{"class":637,"line":721},[635,957,958],{"class":902},"  driver",[635,960,906],{"class":856},[635,962,870],{"class":856},[635,964,965],{"class":645},"d1-http",[635,967,914],{"class":856},[635,969,950],{"class":856},[635,971,972],{"class":669}," // For remote operations\n",[635,974,975,978,980],{"class":637,"line":727},[635,976,977],{"class":902},"  dbCredentials",[635,979,906],{"class":856},[635,981,982],{"class":856}," {\n",[635,984,985,988,990,993,995,998,1000,1003],{"class":637,"line":800},[635,986,987],{"class":902},"    accountId",[635,989,906],{"class":856},[635,991,992],{"class":860}," process",[635,994,737],{"class":856},[635,996,997],{"class":860},"env",[635,999,737],{"class":856},[635,1001,1002],{"class":860},"CLOUDFLARE_ACCOUNT_ID",[635,1004,1005],{"class":856},"!,\n",[635,1007,1008,1011,1013,1015,1017,1019,1021,1024],{"class":637,"line":806},[635,1009,1010],{"class":902},"    databaseId",[635,1012,906],{"class":856},[635,1014,992],{"class":860},[635,1016,737],{"class":856},[635,1018,997],{"class":860},[635,1020,737],{"class":856},[635,1022,1023],{"class":860},"CLOUDFLARE_D1_ID",[635,1025,1005],{"class":856},[635,1027,1028,1031,1033,1035,1037,1039,1041,1044],{"class":637,"line":812},[635,1029,1030],{"class":902},"    token",[635,1032,906],{"class":856},[635,1034,992],{"class":860},[635,1036,737],{"class":856},[635,1038,997],{"class":860},[635,1040,737],{"class":856},[635,1042,1043],{"class":860},"CLOUDFLARE_API_TOKEN",[635,1045,1046],{"class":856},"!\n",[635,1048,1049],{"class":637,"line":818},[635,1050,1051],{"class":856},"  }\n",[635,1053,1054,1057],{"class":637,"line":823},[635,1055,1056],{"class":856},"}",[635,1058,1059],{"class":860},")\n",[516,1061,1063],{"id":1062},"step-5-initialize-d1-in-nitro-plugin","Step 5: Initialize D1 in Nitro Plugin",[455,1065,744,1066,906],{},[632,1067,1068],{},"server/plugins/database.d1.ts",[625,1070,1072],{"className":838,"code":1071,"language":840,"meta":630,"style":630},"import { drizzle } from 'drizzle-orm/d1'\nimport * as schema from '../database/schema'\n\nexport default defineNitroPlugin((nitroApp) => {\n  // Get D1 binding from Cloudflare\n  const binding = nitroApp.cloudflare?.env?.DB\n\n  if (!binding) {\n    throw new Error('D1 database binding not found')\n  }\n\n  const db = drizzle(binding, { schema })\n\n  // Store in globalThis for auto-api\n  globalThis.__autoApiDb = db\n\n  console.log('[@websideproject/nuxt-auto-api] D1 database initialized')\n})\n",[632,1073,1074,1094,1117,1121,1147,1152,1181,1185,1204,1226,1230,1234,1260,1264,1269,1284,1289,1311],{"__ignoreMap":630},[635,1075,1076,1078,1080,1083,1085,1087,1089,1092],{"class":637,"line":638},[635,1077,853],{"class":852},[635,1079,857],{"class":856},[635,1081,1082],{"class":860}," drizzle",[635,1084,864],{"class":856},[635,1086,867],{"class":852},[635,1088,870],{"class":856},[635,1090,1091],{"class":645},"drizzle-orm/d1",[635,1093,876],{"class":856},[635,1095,1096,1098,1101,1104,1107,1110,1112,1115],{"class":637,"line":673},[635,1097,853],{"class":852},[635,1099,1100],{"class":856}," *",[635,1102,1103],{"class":852}," as",[635,1105,1106],{"class":860}," schema ",[635,1108,1109],{"class":852},"from",[635,1111,870],{"class":856},[635,1113,1114],{"class":645},"../database/schema",[635,1116,876],{"class":856},[635,1118,1119],{"class":637,"line":690},[635,1120,694],{"emptyLinePlaceholder":693},[635,1122,1123,1125,1127,1130,1132,1134,1138,1141,1145],{"class":637,"line":697},[635,1124,885],{"class":852},[635,1126,888],{"class":852},[635,1128,1129],{"class":891}," defineNitroPlugin",[635,1131,894],{"class":860},[635,1133,894],{"class":856},[635,1135,1137],{"class":1136},"sHdIc","nitroApp",[635,1139,1140],{"class":856},")",[635,1142,1144],{"class":1143},"spNyl"," =>",[635,1146,982],{"class":856},[635,1148,1149],{"class":637,"line":703},[635,1150,1151],{"class":669},"  // Get D1 binding from Cloudflare\n",[635,1153,1154,1157,1160,1163,1166,1168,1171,1174,1176,1178],{"class":637,"line":709},[635,1155,1156],{"class":1143},"  const",[635,1158,1159],{"class":860}," binding",[635,1161,1162],{"class":856}," =",[635,1164,1165],{"class":860}," nitroApp",[635,1167,737],{"class":856},[635,1169,1170],{"class":860},"cloudflare",[635,1172,1173],{"class":856},"?.",[635,1175,997],{"class":860},[635,1177,1173],{"class":856},[635,1179,1180],{"class":860},"DB\n",[635,1182,1183],{"class":637,"line":715},[635,1184,694],{"emptyLinePlaceholder":693},[635,1186,1187,1190,1193,1196,1199,1202],{"class":637,"line":721},[635,1188,1189],{"class":852},"  if",[635,1191,1192],{"class":902}," (",[635,1194,1195],{"class":856},"!",[635,1197,1198],{"class":860},"binding",[635,1200,1201],{"class":902},") ",[635,1203,897],{"class":856},[635,1205,1206,1209,1212,1215,1217,1219,1222,1224],{"class":637,"line":727},[635,1207,1208],{"class":852},"    throw",[635,1210,1211],{"class":856}," new",[635,1213,1214],{"class":891}," Error",[635,1216,894],{"class":902},[635,1218,914],{"class":856},[635,1220,1221],{"class":645},"D1 database binding not found",[635,1223,914],{"class":856},[635,1225,1059],{"class":902},[635,1227,1228],{"class":637,"line":800},[635,1229,1051],{"class":856},[635,1231,1232],{"class":637,"line":806},[635,1233,694],{"emptyLinePlaceholder":693},[635,1235,1236,1238,1241,1243,1245,1247,1249,1251,1253,1256,1258],{"class":637,"line":812},[635,1237,1156],{"class":1143},[635,1239,1240],{"class":860}," db",[635,1242,1162],{"class":856},[635,1244,1082],{"class":891},[635,1246,894],{"class":902},[635,1248,1198],{"class":860},[635,1250,950],{"class":856},[635,1252,857],{"class":856},[635,1254,1255],{"class":860}," schema",[635,1257,864],{"class":856},[635,1259,1059],{"class":902},[635,1261,1262],{"class":637,"line":818},[635,1263,694],{"emptyLinePlaceholder":693},[635,1265,1266],{"class":637,"line":823},[635,1267,1268],{"class":669},"  // Store in globalThis for auto-api\n",[635,1270,1271,1274,1276,1279,1281],{"class":637,"line":828},[635,1272,1273],{"class":860},"  globalThis",[635,1275,737],{"class":856},[635,1277,1278],{"class":860},"__autoApiDb",[635,1280,1162],{"class":856},[635,1282,1283],{"class":860}," db\n",[635,1285,1287],{"class":637,"line":1286},16,[635,1288,694],{"emptyLinePlaceholder":693},[635,1290,1292,1295,1297,1300,1302,1304,1307,1309],{"class":637,"line":1291},17,[635,1293,1294],{"class":860},"  console",[635,1296,737],{"class":856},[635,1298,1299],{"class":891},"log",[635,1301,894],{"class":902},[635,1303,914],{"class":856},[635,1305,1306],{"class":645},"[@websideproject/nuxt-auto-api] D1 database initialized",[635,1308,914],{"class":856},[635,1310,1059],{"class":902},[635,1312,1314,1316],{"class":637,"line":1313},18,[635,1315,1056],{"class":856},[635,1317,1059],{"class":860},[516,1319,1321],{"id":1320},"step-6-update-nuxtconfigts","Step 6: Update nuxt.config.ts",[625,1323,1325],{"className":838,"code":1324,"language":840,"meta":630,"style":630},"export default defineNuxtConfig({\n  modules: ['@websideproject/nuxt-auto-api'],\n\n  autoApi: {\n    prefix: '/api',\n    database: {\n      client: 'd1' // Specify D1 client\n    }\n  },\n\n  nitro: {\n    preset: 'cloudflare-pages' // or 'cloudflare-workers'\n  }\n})\n",[632,1326,1327,1340,1362,1366,1375,1391,1400,1417,1422,1427,1431,1440,1457,1461],{"__ignoreMap":630},[635,1328,1329,1331,1333,1336,1338],{"class":637,"line":638},[635,1330,885],{"class":852},[635,1332,888],{"class":852},[635,1334,1335],{"class":891}," defineNuxtConfig",[635,1337,894],{"class":860},[635,1339,897],{"class":856},[635,1341,1342,1345,1347,1350,1352,1355,1357,1360],{"class":637,"line":673},[635,1343,1344],{"class":902},"  modules",[635,1346,906],{"class":856},[635,1348,1349],{"class":860}," [",[635,1351,914],{"class":856},[635,1353,1354],{"class":645},"@websideproject/nuxt-auto-api",[635,1356,914],{"class":856},[635,1358,1359],{"class":860},"]",[635,1361,917],{"class":856},[635,1363,1364],{"class":637,"line":690},[635,1365,694],{"emptyLinePlaceholder":693},[635,1367,1368,1371,1373],{"class":637,"line":697},[635,1369,1370],{"class":902},"  autoApi",[635,1372,906],{"class":856},[635,1374,982],{"class":856},[635,1376,1377,1380,1382,1384,1387,1389],{"class":637,"line":703},[635,1378,1379],{"class":902},"    prefix",[635,1381,906],{"class":856},[635,1383,870],{"class":856},[635,1385,1386],{"class":645},"/api",[635,1388,914],{"class":856},[635,1390,917],{"class":856},[635,1392,1393,1396,1398],{"class":637,"line":709},[635,1394,1395],{"class":902},"    database",[635,1397,906],{"class":856},[635,1399,982],{"class":856},[635,1401,1402,1405,1407,1409,1412,1414],{"class":637,"line":715},[635,1403,1404],{"class":902},"      client",[635,1406,906],{"class":856},[635,1408,870],{"class":856},[635,1410,1411],{"class":645},"d1",[635,1413,914],{"class":856},[635,1415,1416],{"class":669}," // Specify D1 client\n",[635,1418,1419],{"class":637,"line":721},[635,1420,1421],{"class":856},"    }\n",[635,1423,1424],{"class":637,"line":727},[635,1425,1426],{"class":856},"  },\n",[635,1428,1429],{"class":637,"line":800},[635,1430,694],{"emptyLinePlaceholder":693},[635,1432,1433,1436,1438],{"class":637,"line":806},[635,1434,1435],{"class":902},"  nitro",[635,1437,906],{"class":856},[635,1439,982],{"class":856},[635,1441,1442,1445,1447,1449,1452,1454],{"class":637,"line":812},[635,1443,1444],{"class":902},"    preset",[635,1446,906],{"class":856},[635,1448,870],{"class":856},[635,1450,1451],{"class":645},"cloudflare-pages",[635,1453,914],{"class":856},[635,1455,1456],{"class":669}," // or 'cloudflare-workers'\n",[635,1458,1459],{"class":637,"line":818},[635,1460,1051],{"class":856},[635,1462,1463,1465],{"class":637,"line":823},[635,1464,1056],{"class":856},[635,1466,1059],{"class":860},[459,1468,484],{"id":1469},"local-development",[516,1471,1473],{"id":1472},"option-1-wrangler-dev-recommended","Option 1: Wrangler Dev (Recommended)",[455,1475,1476],{},"Use Wrangler for local D1 development:",[625,1478,1480],{"className":627,"code":1479,"language":629,"meta":630,"style":630},"# Start Wrangler dev server\nnpx wrangler dev\n\n# In separate terminal, run Nuxt\nnpm run dev\n",[632,1481,1482,1487,1496,1500,1505],{"__ignoreMap":630},[635,1483,1484],{"class":637,"line":638},[635,1485,1486],{"class":669},"# Start Wrangler dev server\n",[635,1488,1489,1491,1493],{"class":637,"line":673},[635,1490,676],{"class":641},[635,1492,652],{"class":645},[635,1494,1495],{"class":645}," dev\n",[635,1497,1498],{"class":637,"line":690},[635,1499,694],{"emptyLinePlaceholder":693},[635,1501,1502],{"class":637,"line":697},[635,1503,1504],{"class":669},"# In separate terminal, run Nuxt\n",[635,1506,1507,1509,1512],{"class":637,"line":703},[635,1508,642],{"class":641},[635,1510,1511],{"class":645}," run",[635,1513,1495],{"class":645},[516,1515,1517],{"id":1516},"option-2-hybrid-setup","Option 2: Hybrid Setup",[455,1519,1520],{},"Use SQLite locally, D1 in production:",[625,1522,1524],{"className":838,"code":1523,"language":840,"meta":630,"style":630},"// server/plugins/database.ts\nimport { drizzle as drizzleSqlite } from 'drizzle-orm/better-sqlite3'\nimport { drizzle as drizzleD1 } from 'drizzle-orm/d1'\nimport Database from 'better-sqlite3'\nimport * as schema from '../database/schema'\n\nexport default defineNitroPlugin((nitroApp) => {\n  let db\n\n  if (process.dev) {\n    // Local development: Use SQLite\n    const sqlite = new Database('.data/db.sqlite')\n    db = drizzleSqlite(sqlite, { schema })\n    console.log('[@websideproject/nuxt-auto-api] SQLite database initialized')\n  } else if (nitroApp.cloudflare?.env?.DB) {\n    // Production: Use D1\n    db = drizzleD1(nitroApp.cloudflare.env.DB, { schema })\n    console.log('[@websideproject/nuxt-auto-api] D1 database initialized')\n  } else {\n    throw new Error('Database not configured')\n  }\n\n  globalThis.__autoApiDb = db\n})\n",[632,1525,1526,1531,1555,1578,1594,1612,1616,1636,1643,1647,1665,1670,1696,1719,1739,1771,1776,1810,1828,1837,1857,1862,1867,1880],{"__ignoreMap":630},[635,1527,1528],{"class":637,"line":638},[635,1529,1530],{"class":669},"// server/plugins/database.ts\n",[635,1532,1533,1535,1537,1539,1541,1544,1546,1548,1550,1553],{"class":637,"line":673},[635,1534,853],{"class":852},[635,1536,857],{"class":856},[635,1538,1082],{"class":860},[635,1540,1103],{"class":852},[635,1542,1543],{"class":860}," drizzleSqlite",[635,1545,864],{"class":856},[635,1547,867],{"class":852},[635,1549,870],{"class":856},[635,1551,1552],{"class":645},"drizzle-orm/better-sqlite3",[635,1554,876],{"class":856},[635,1556,1557,1559,1561,1563,1565,1568,1570,1572,1574,1576],{"class":637,"line":690},[635,1558,853],{"class":852},[635,1560,857],{"class":856},[635,1562,1082],{"class":860},[635,1564,1103],{"class":852},[635,1566,1567],{"class":860}," drizzleD1",[635,1569,864],{"class":856},[635,1571,867],{"class":852},[635,1573,870],{"class":856},[635,1575,1091],{"class":645},[635,1577,876],{"class":856},[635,1579,1580,1582,1585,1587,1589,1592],{"class":637,"line":697},[635,1581,853],{"class":852},[635,1583,1584],{"class":860}," Database ",[635,1586,1109],{"class":852},[635,1588,870],{"class":856},[635,1590,1591],{"class":645},"better-sqlite3",[635,1593,876],{"class":856},[635,1595,1596,1598,1600,1602,1604,1606,1608,1610],{"class":637,"line":703},[635,1597,853],{"class":852},[635,1599,1100],{"class":856},[635,1601,1103],{"class":852},[635,1603,1106],{"class":860},[635,1605,1109],{"class":852},[635,1607,870],{"class":856},[635,1609,1114],{"class":645},[635,1611,876],{"class":856},[635,1613,1614],{"class":637,"line":709},[635,1615,694],{"emptyLinePlaceholder":693},[635,1617,1618,1620,1622,1624,1626,1628,1630,1632,1634],{"class":637,"line":715},[635,1619,885],{"class":852},[635,1621,888],{"class":852},[635,1623,1129],{"class":891},[635,1625,894],{"class":860},[635,1627,894],{"class":856},[635,1629,1137],{"class":1136},[635,1631,1140],{"class":856},[635,1633,1144],{"class":1143},[635,1635,982],{"class":856},[635,1637,1638,1641],{"class":637,"line":721},[635,1639,1640],{"class":1143},"  let",[635,1642,1283],{"class":860},[635,1644,1645],{"class":637,"line":727},[635,1646,694],{"emptyLinePlaceholder":693},[635,1648,1649,1651,1653,1656,1658,1661,1663],{"class":637,"line":800},[635,1650,1189],{"class":852},[635,1652,1192],{"class":902},[635,1654,1655],{"class":860},"process",[635,1657,737],{"class":856},[635,1659,1660],{"class":860},"dev",[635,1662,1201],{"class":902},[635,1664,897],{"class":856},[635,1666,1667],{"class":637,"line":806},[635,1668,1669],{"class":669},"    // Local development: Use SQLite\n",[635,1671,1672,1675,1678,1680,1682,1685,1687,1689,1692,1694],{"class":637,"line":812},[635,1673,1674],{"class":1143},"    const",[635,1676,1677],{"class":860}," sqlite",[635,1679,1162],{"class":856},[635,1681,1211],{"class":856},[635,1683,1684],{"class":891}," Database",[635,1686,894],{"class":902},[635,1688,914],{"class":856},[635,1690,1691],{"class":645},".data/db.sqlite",[635,1693,914],{"class":856},[635,1695,1059],{"class":902},[635,1697,1698,1701,1703,1705,1707,1709,1711,1713,1715,1717],{"class":637,"line":818},[635,1699,1700],{"class":860},"    db",[635,1702,1162],{"class":856},[635,1704,1543],{"class":891},[635,1706,894],{"class":902},[635,1708,945],{"class":860},[635,1710,950],{"class":856},[635,1712,857],{"class":856},[635,1714,1255],{"class":860},[635,1716,864],{"class":856},[635,1718,1059],{"class":902},[635,1720,1721,1724,1726,1728,1730,1732,1735,1737],{"class":637,"line":823},[635,1722,1723],{"class":860},"    console",[635,1725,737],{"class":856},[635,1727,1299],{"class":891},[635,1729,894],{"class":902},[635,1731,914],{"class":856},[635,1733,1734],{"class":645},"[@websideproject/nuxt-auto-api] SQLite database initialized",[635,1736,914],{"class":856},[635,1738,1059],{"class":902},[635,1740,1741,1744,1747,1750,1752,1754,1756,1758,1760,1762,1764,1767,1769],{"class":637,"line":828},[635,1742,1743],{"class":856},"  }",[635,1745,1746],{"class":852}," else",[635,1748,1749],{"class":852}," if",[635,1751,1192],{"class":902},[635,1753,1137],{"class":860},[635,1755,737],{"class":856},[635,1757,1170],{"class":860},[635,1759,1173],{"class":856},[635,1761,997],{"class":860},[635,1763,1173],{"class":856},[635,1765,1766],{"class":860},"DB",[635,1768,1201],{"class":902},[635,1770,897],{"class":856},[635,1772,1773],{"class":637,"line":1286},[635,1774,1775],{"class":669},"    // Production: Use D1\n",[635,1777,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808],{"class":637,"line":1291},[635,1779,1700],{"class":860},[635,1781,1162],{"class":856},[635,1783,1567],{"class":891},[635,1785,894],{"class":902},[635,1787,1137],{"class":860},[635,1789,737],{"class":856},[635,1791,1170],{"class":860},[635,1793,737],{"class":856},[635,1795,997],{"class":860},[635,1797,737],{"class":856},[635,1799,1766],{"class":860},[635,1801,950],{"class":856},[635,1803,857],{"class":856},[635,1805,1255],{"class":860},[635,1807,864],{"class":856},[635,1809,1059],{"class":902},[635,1811,1812,1814,1816,1818,1820,1822,1824,1826],{"class":637,"line":1313},[635,1813,1723],{"class":860},[635,1815,737],{"class":856},[635,1817,1299],{"class":891},[635,1819,894],{"class":902},[635,1821,914],{"class":856},[635,1823,1306],{"class":645},[635,1825,914],{"class":856},[635,1827,1059],{"class":902},[635,1829,1831,1833,1835],{"class":637,"line":1830},19,[635,1832,1743],{"class":856},[635,1834,1746],{"class":852},[635,1836,982],{"class":856},[635,1838,1840,1842,1844,1846,1848,1850,1853,1855],{"class":637,"line":1839},20,[635,1841,1208],{"class":852},[635,1843,1211],{"class":856},[635,1845,1214],{"class":891},[635,1847,894],{"class":902},[635,1849,914],{"class":856},[635,1851,1852],{"class":645},"Database not configured",[635,1854,914],{"class":856},[635,1856,1059],{"class":902},[635,1858,1860],{"class":637,"line":1859},21,[635,1861,1051],{"class":856},[635,1863,1865],{"class":637,"line":1864},22,[635,1866,694],{"emptyLinePlaceholder":693},[635,1868,1870,1872,1874,1876,1878],{"class":637,"line":1869},23,[635,1871,1273],{"class":860},[635,1873,737],{"class":856},[635,1875,1278],{"class":860},[635,1877,1162],{"class":856},[635,1879,1283],{"class":860},[635,1881,1883,1885],{"class":637,"line":1882},24,[635,1884,1056],{"class":856},[635,1886,1059],{"class":860},[459,1888,490],{"id":1889},"database-migrations",[516,1891,1893],{"id":1892},"generate-migrations","Generate Migrations",[625,1895,1897],{"className":627,"code":1896,"language":629,"meta":630,"style":630},"# Generate migration files\nnpx drizzle-kit generate\n",[632,1898,1899,1904],{"__ignoreMap":630},[635,1900,1901],{"class":637,"line":638},[635,1902,1903],{"class":669},"# Generate migration files\n",[635,1905,1906,1908,1911],{"class":637,"line":673},[635,1907,676],{"class":641},[635,1909,1910],{"class":645}," drizzle-kit",[635,1912,1913],{"class":645}," generate\n",[455,1915,1916,1917,737],{},"This creates SQL files in ",[632,1918,1919],{},"server/database/migrations/",[516,1921,1923],{"id":1922},"apply-migrations-to-d1","Apply Migrations to D1",[625,1925,1927],{"className":627,"code":1926,"language":629,"meta":630,"style":630},"# Apply to local D1\nnpx wrangler d1 migrations apply @websideproject/nuxt-auto-api-db --local\n\n# Apply to remote D1 (production)\nnpx wrangler d1 migrations apply @websideproject/nuxt-auto-api-db --remote\n",[632,1928,1929,1934,1954,1958,1963],{"__ignoreMap":630},[635,1930,1931],{"class":637,"line":638},[635,1932,1933],{"class":669},"# Apply to local D1\n",[635,1935,1936,1938,1940,1942,1945,1948,1951],{"class":637,"line":673},[635,1937,676],{"class":641},[635,1939,652],{"class":645},[635,1941,681],{"class":645},[635,1943,1944],{"class":645}," migrations",[635,1946,1947],{"class":645}," apply",[635,1949,1950],{"class":645}," @websideproject/nuxt-auto-api-db",[635,1952,1953],{"class":645}," --local\n",[635,1955,1956],{"class":637,"line":690},[635,1957,694],{"emptyLinePlaceholder":693},[635,1959,1960],{"class":637,"line":697},[635,1961,1962],{"class":669},"# Apply to remote D1 (production)\n",[635,1964,1965,1967,1969,1971,1973,1975,1977],{"class":637,"line":703},[635,1966,676],{"class":641},[635,1968,652],{"class":645},[635,1970,681],{"class":645},[635,1972,1944],{"class":645},[635,1974,1947],{"class":645},[635,1976,1950],{"class":645},[635,1978,1979],{"class":645}," --remote\n",[516,1981,1983],{"id":1982},"manual-migration","Manual Migration",[455,1985,1986],{},"You can also apply migrations manually:",[625,1988,1990],{"className":627,"code":1989,"language":629,"meta":630,"style":630},"# Execute SQL file\nnpx wrangler d1 execute @websideproject/nuxt-auto-api-db --file=./migrations/0001_initial.sql --remote\n",[632,1991,1992,1997],{"__ignoreMap":630},[635,1993,1994],{"class":637,"line":638},[635,1995,1996],{"class":669},"# Execute SQL file\n",[635,1998,1999,2001,2003,2005,2008,2010,2013],{"class":637,"line":673},[635,2000,676],{"class":641},[635,2002,652],{"class":645},[635,2004,681],{"class":645},[635,2006,2007],{"class":645}," execute",[635,2009,1950],{"class":645},[635,2011,2012],{"class":645}," --file=./migrations/0001_initial.sql",[635,2014,1979],{"class":645},[459,2016,496],{"id":2017},"deployment",[516,2019,2021],{"id":2020},"deploy-to-cloudflare-pages","Deploy to Cloudflare Pages",[625,2023,2025],{"className":627,"code":2024,"language":629,"meta":630,"style":630},"# Build for Cloudflare Pages\nnpm run build\n\n# Deploy with Wrangler\nnpx wrangler pages deploy .output/public\n",[632,2026,2027,2032,2041,2045,2050],{"__ignoreMap":630},[635,2028,2029],{"class":637,"line":638},[635,2030,2031],{"class":669},"# Build for Cloudflare Pages\n",[635,2033,2034,2036,2038],{"class":637,"line":673},[635,2035,642],{"class":641},[635,2037,1511],{"class":645},[635,2039,2040],{"class":645}," build\n",[635,2042,2043],{"class":637,"line":690},[635,2044,694],{"emptyLinePlaceholder":693},[635,2046,2047],{"class":637,"line":697},[635,2048,2049],{"class":669},"# Deploy with Wrangler\n",[635,2051,2052,2054,2056,2059,2062],{"class":637,"line":703},[635,2053,676],{"class":641},[635,2055,652],{"class":645},[635,2057,2058],{"class":645}," pages",[635,2060,2061],{"class":645}," deploy",[635,2063,2064],{"class":645}," .output/public\n",[516,2066,2068],{"id":2067},"deploy-with-github-actions","Deploy with GitHub Actions",[625,2070,2074],{"className":2071,"code":2072,"language":2073,"meta":630,"style":630},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# .github/workflows/deploy.yml\nname: Deploy to Cloudflare Pages\n\non:\n  push:\n    branches: [main]\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v3\n\n      - uses: actions/setup-node@v3\n        with:\n          node-version: 20\n\n      - run: npm ci\n      - run: npm run build\n\n      - name: Deploy to Cloudflare Pages\n        uses: cloudflare/wrangler-action@v3\n        with:\n          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}\n          accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}\n          command: pages deploy .output/public --project-name=@websideproject/nuxt-auto-api\n","yaml",[632,2075,2076,2081,2091,2095,2104,2111,2126,2130,2137,2144,2154,2161,2174,2178,2189,2196,2207,2211,2222,2233,2237,2248,2258,2264,2274,2285],{"__ignoreMap":630},[635,2077,2078],{"class":637,"line":638},[635,2079,2080],{"class":669},"# .github/workflows/deploy.yml\n",[635,2082,2083,2086,2088],{"class":637,"line":673},[635,2084,2085],{"class":902},"name",[635,2087,906],{"class":856},[635,2089,2090],{"class":645}," Deploy to Cloudflare Pages\n",[635,2092,2093],{"class":637,"line":690},[635,2094,694],{"emptyLinePlaceholder":693},[635,2096,2097,2101],{"class":637,"line":697},[635,2098,2100],{"class":2099},"sfNiH","on",[635,2102,2103],{"class":856},":\n",[635,2105,2106,2109],{"class":637,"line":703},[635,2107,2108],{"class":902},"  push",[635,2110,2103],{"class":856},[635,2112,2113,2116,2118,2120,2123],{"class":637,"line":709},[635,2114,2115],{"class":902},"    branches",[635,2117,906],{"class":856},[635,2119,1349],{"class":856},[635,2121,2122],{"class":645},"main",[635,2124,2125],{"class":856},"]\n",[635,2127,2128],{"class":637,"line":715},[635,2129,694],{"emptyLinePlaceholder":693},[635,2131,2132,2135],{"class":637,"line":721},[635,2133,2134],{"class":902},"jobs",[635,2136,2103],{"class":856},[635,2138,2139,2142],{"class":637,"line":727},[635,2140,2141],{"class":902},"  deploy",[635,2143,2103],{"class":856},[635,2145,2146,2149,2151],{"class":637,"line":800},[635,2147,2148],{"class":902},"    runs-on",[635,2150,906],{"class":856},[635,2152,2153],{"class":645}," ubuntu-latest\n",[635,2155,2156,2159],{"class":637,"line":806},[635,2157,2158],{"class":902},"    steps",[635,2160,2103],{"class":856},[635,2162,2163,2166,2169,2171],{"class":637,"line":812},[635,2164,2165],{"class":856},"      -",[635,2167,2168],{"class":902}," uses",[635,2170,906],{"class":856},[635,2172,2173],{"class":645}," actions/checkout@v3\n",[635,2175,2176],{"class":637,"line":818},[635,2177,694],{"emptyLinePlaceholder":693},[635,2179,2180,2182,2184,2186],{"class":637,"line":823},[635,2181,2165],{"class":856},[635,2183,2168],{"class":902},[635,2185,906],{"class":856},[635,2187,2188],{"class":645}," actions/setup-node@v3\n",[635,2190,2191,2194],{"class":637,"line":828},[635,2192,2193],{"class":902},"        with",[635,2195,2103],{"class":856},[635,2197,2198,2201,2203],{"class":637,"line":1286},[635,2199,2200],{"class":902},"          node-version",[635,2202,906],{"class":856},[635,2204,2206],{"class":2205},"sbssI"," 20\n",[635,2208,2209],{"class":637,"line":1291},[635,2210,694],{"emptyLinePlaceholder":693},[635,2212,2213,2215,2217,2219],{"class":637,"line":1313},[635,2214,2165],{"class":856},[635,2216,1511],{"class":902},[635,2218,906],{"class":856},[635,2220,2221],{"class":645}," npm ci\n",[635,2223,2224,2226,2228,2230],{"class":637,"line":1830},[635,2225,2165],{"class":856},[635,2227,1511],{"class":902},[635,2229,906],{"class":856},[635,2231,2232],{"class":645}," npm run build\n",[635,2234,2235],{"class":637,"line":1839},[635,2236,694],{"emptyLinePlaceholder":693},[635,2238,2239,2241,2244,2246],{"class":637,"line":1859},[635,2240,2165],{"class":856},[635,2242,2243],{"class":902}," name",[635,2245,906],{"class":856},[635,2247,2090],{"class":645},[635,2249,2250,2253,2255],{"class":637,"line":1864},[635,2251,2252],{"class":902},"        uses",[635,2254,906],{"class":856},[635,2256,2257],{"class":645}," cloudflare/wrangler-action@v3\n",[635,2259,2260,2262],{"class":637,"line":1869},[635,2261,2193],{"class":902},[635,2263,2103],{"class":856},[635,2265,2266,2269,2271],{"class":637,"line":1882},[635,2267,2268],{"class":902},"          apiToken",[635,2270,906],{"class":856},[635,2272,2273],{"class":645}," ${{ secrets.CLOUDFLARE_API_TOKEN }}\n",[635,2275,2277,2280,2282],{"class":637,"line":2276},25,[635,2278,2279],{"class":902},"          accountId",[635,2281,906],{"class":856},[635,2283,2284],{"class":645}," ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}\n",[635,2286,2288,2291,2293],{"class":637,"line":2287},26,[635,2289,2290],{"class":902},"          command",[635,2292,906],{"class":856},[635,2294,2295],{"class":645}," pages deploy .output/public --project-name=@websideproject/nuxt-auto-api\n",[516,2297,2299],{"id":2298},"environment-variables","Environment Variables",[455,2301,2302],{},"Set in Cloudflare Dashboard or via CLI:",[625,2304,2306],{"className":627,"code":2305,"language":629,"meta":630,"style":630},"# Set production environment variables\nnpx wrangler pages deployment create \\\n  --project-name=@websideproject/nuxt-auto-api \\\n  --branch=main \\\n  --d1-binding=DB:@websideproject/nuxt-auto-api-db\n",[632,2307,2308,2313,2329,2336,2343],{"__ignoreMap":630},[635,2309,2310],{"class":637,"line":638},[635,2311,2312],{"class":669},"# Set production environment variables\n",[635,2314,2315,2317,2319,2321,2324,2326],{"class":637,"line":673},[635,2316,676],{"class":641},[635,2318,652],{"class":645},[635,2320,2058],{"class":645},[635,2322,2323],{"class":645}," deployment",[635,2325,684],{"class":645},[635,2327,2328],{"class":860}," \\\n",[635,2330,2331,2334],{"class":637,"line":690},[635,2332,2333],{"class":645},"  --project-name=@websideproject/nuxt-auto-api",[635,2335,2328],{"class":860},[635,2337,2338,2341],{"class":637,"line":697},[635,2339,2340],{"class":645},"  --branch=main",[635,2342,2328],{"class":860},[635,2344,2345],{"class":637,"line":703},[635,2346,2347],{"class":645},"  --d1-binding=DB:@websideproject/nuxt-auto-api-db\n",[459,2349,502],{"id":2350},"performance-optimization",[516,2352,2354],{"id":2353},"d1-limits","D1 Limits",[464,2356,2357,2363,2369,2375,2381],{},[467,2358,2359,2362],{},[525,2360,2361],{},"Max query size",": 1MB",[467,2364,2365,2368],{},[525,2366,2367],{},"Max result size",": 10MB",[467,2370,2371,2374],{},[525,2372,2373],{},"Read operations",": ~50,000 RPM per database",[467,2376,2377,2380],{},[525,2378,2379],{},"Write operations",": ~5,000 RPM per database",[467,2382,2383,2386],{},[525,2384,2385],{},"Query timeout",": 30 seconds",[516,2388,2390],{"id":2389},"optimization-tips","Optimization Tips",[2392,2393,2395],"h4",{"id":2394},"_1-add-indexes","1. Add Indexes",[625,2397,2399],{"className":838,"code":2398,"language":840,"meta":630,"style":630},"// server/database/schema.ts\nimport { sqliteTable, integer, text, index } from 'drizzle-orm/sqlite-core'\n\nexport const users = sqliteTable('users', {\n  id: integer('id').primaryKey(),\n  email: text('email').notNull().unique(),\n  status: text('status')\n}, (table) => ({\n  emailIdx: index('email_idx').on(table.email),\n  statusIdx: index('status_idx').on(table.status)\n}))\n",[632,2400,2401,2406,2441,2445,2473,2503,2539,2559,2576,2610,2641],{"__ignoreMap":630},[635,2402,2403],{"class":637,"line":638},[635,2404,2405],{"class":669},"// server/database/schema.ts\n",[635,2407,2408,2410,2412,2415,2417,2420,2422,2425,2427,2430,2432,2434,2436,2439],{"class":637,"line":673},[635,2409,853],{"class":852},[635,2411,857],{"class":856},[635,2413,2414],{"class":860}," sqliteTable",[635,2416,950],{"class":856},[635,2418,2419],{"class":860}," integer",[635,2421,950],{"class":856},[635,2423,2424],{"class":860}," text",[635,2426,950],{"class":856},[635,2428,2429],{"class":860}," index",[635,2431,864],{"class":856},[635,2433,867],{"class":852},[635,2435,870],{"class":856},[635,2437,2438],{"class":645},"drizzle-orm/sqlite-core",[635,2440,876],{"class":856},[635,2442,2443],{"class":637,"line":690},[635,2444,694],{"emptyLinePlaceholder":693},[635,2446,2447,2449,2452,2455,2458,2460,2462,2464,2467,2469,2471],{"class":637,"line":697},[635,2448,885],{"class":852},[635,2450,2451],{"class":1143}," const",[635,2453,2454],{"class":860}," users ",[635,2456,2457],{"class":856},"=",[635,2459,2414],{"class":891},[635,2461,894],{"class":860},[635,2463,914],{"class":856},[635,2465,2466],{"class":645},"users",[635,2468,914],{"class":856},[635,2470,950],{"class":856},[635,2472,982],{"class":856},[635,2474,2475,2478,2480,2482,2484,2486,2489,2491,2493,2495,2498,2501],{"class":637,"line":703},[635,2476,2477],{"class":902},"  id",[635,2479,906],{"class":856},[635,2481,2419],{"class":891},[635,2483,894],{"class":860},[635,2485,914],{"class":856},[635,2487,2488],{"class":645},"id",[635,2490,914],{"class":856},[635,2492,1140],{"class":860},[635,2494,737],{"class":856},[635,2496,2497],{"class":891},"primaryKey",[635,2499,2500],{"class":860},"()",[635,2502,917],{"class":856},[635,2504,2505,2508,2510,2512,2514,2516,2519,2521,2523,2525,2528,2530,2532,2535,2537],{"class":637,"line":709},[635,2506,2507],{"class":902},"  email",[635,2509,906],{"class":856},[635,2511,2424],{"class":891},[635,2513,894],{"class":860},[635,2515,914],{"class":856},[635,2517,2518],{"class":645},"email",[635,2520,914],{"class":856},[635,2522,1140],{"class":860},[635,2524,737],{"class":856},[635,2526,2527],{"class":891},"notNull",[635,2529,2500],{"class":860},[635,2531,737],{"class":856},[635,2533,2534],{"class":891},"unique",[635,2536,2500],{"class":860},[635,2538,917],{"class":856},[635,2540,2541,2544,2546,2548,2550,2552,2555,2557],{"class":637,"line":715},[635,2542,2543],{"class":902},"  status",[635,2545,906],{"class":856},[635,2547,2424],{"class":891},[635,2549,894],{"class":860},[635,2551,914],{"class":856},[635,2553,2554],{"class":645},"status",[635,2556,914],{"class":856},[635,2558,1059],{"class":860},[635,2560,2561,2564,2566,2568,2570,2572,2574],{"class":637,"line":721},[635,2562,2563],{"class":856},"},",[635,2565,1192],{"class":856},[635,2567,552],{"class":1136},[635,2569,1140],{"class":856},[635,2571,1144],{"class":1143},[635,2573,1192],{"class":860},[635,2575,897],{"class":856},[635,2577,2578,2581,2583,2585,2587,2589,2592,2594,2596,2598,2600,2603,2605,2608],{"class":637,"line":727},[635,2579,2580],{"class":902},"  emailIdx",[635,2582,906],{"class":856},[635,2584,2429],{"class":891},[635,2586,894],{"class":860},[635,2588,914],{"class":856},[635,2590,2591],{"class":645},"email_idx",[635,2593,914],{"class":856},[635,2595,1140],{"class":860},[635,2597,737],{"class":856},[635,2599,2100],{"class":891},[635,2601,2602],{"class":860},"(table",[635,2604,737],{"class":856},[635,2606,2607],{"class":860},"email)",[635,2609,917],{"class":856},[635,2611,2612,2615,2617,2619,2621,2623,2626,2628,2630,2632,2634,2636,2638],{"class":637,"line":800},[635,2613,2614],{"class":902},"  statusIdx",[635,2616,906],{"class":856},[635,2618,2429],{"class":891},[635,2620,894],{"class":860},[635,2622,914],{"class":856},[635,2624,2625],{"class":645},"status_idx",[635,2627,914],{"class":856},[635,2629,1140],{"class":860},[635,2631,737],{"class":856},[635,2633,2100],{"class":891},[635,2635,2602],{"class":860},[635,2637,737],{"class":856},[635,2639,2640],{"class":860},"status)\n",[635,2642,2643,2645],{"class":637,"line":806},[635,2644,1056],{"class":856},[635,2646,2647],{"class":860},"))\n",[2392,2649,2651],{"id":2650},"_2-use-pagination","2. Use Pagination",[455,2653,2654],{},"Always paginate large result sets:",[625,2656,2658],{"className":838,"code":2657,"language":840,"meta":630,"style":630},"// ✅ Good - Paginated\nconst posts = await db.query.posts.findMany({\n  limit: 20,\n  offset: 0\n})\n\n// ❌ Bad - No limit\nconst posts = await db.query.posts.findMany()\n",[632,2659,2660,2665,2699,2711,2721,2727,2731,2736],{"__ignoreMap":630},[635,2661,2662],{"class":637,"line":638},[635,2663,2664],{"class":669},"// ✅ Good - Paginated\n",[635,2666,2667,2670,2673,2675,2678,2680,2682,2685,2687,2690,2692,2695,2697],{"class":637,"line":673},[635,2668,2669],{"class":1143},"const",[635,2671,2672],{"class":860}," posts ",[635,2674,2457],{"class":856},[635,2676,2677],{"class":852}," await",[635,2679,1240],{"class":860},[635,2681,737],{"class":856},[635,2683,2684],{"class":860},"query",[635,2686,737],{"class":856},[635,2688,2689],{"class":860},"posts",[635,2691,737],{"class":856},[635,2693,2694],{"class":891},"findMany",[635,2696,894],{"class":860},[635,2698,897],{"class":856},[635,2700,2701,2704,2706,2709],{"class":637,"line":690},[635,2702,2703],{"class":902},"  limit",[635,2705,906],{"class":856},[635,2707,2708],{"class":2205}," 20",[635,2710,917],{"class":856},[635,2712,2713,2716,2718],{"class":637,"line":697},[635,2714,2715],{"class":902},"  offset",[635,2717,906],{"class":856},[635,2719,2720],{"class":2205}," 0\n",[635,2722,2723,2725],{"class":637,"line":703},[635,2724,1056],{"class":856},[635,2726,1059],{"class":860},[635,2728,2729],{"class":637,"line":709},[635,2730,694],{"emptyLinePlaceholder":693},[635,2732,2733],{"class":637,"line":715},[635,2734,2735],{"class":669},"// ❌ Bad - No limit\n",[635,2737,2738,2740,2742,2744,2746,2748,2750,2752,2754,2756,2758,2760],{"class":637,"line":721},[635,2739,2669],{"class":1143},[635,2741,2672],{"class":860},[635,2743,2457],{"class":856},[635,2745,2677],{"class":852},[635,2747,1240],{"class":860},[635,2749,737],{"class":856},[635,2751,2684],{"class":860},[635,2753,737],{"class":856},[635,2755,2689],{"class":860},[635,2757,737],{"class":856},[635,2759,2694],{"class":891},[635,2761,2762],{"class":860},"()\n",[2392,2764,2766],{"id":2765},"_3-reduce-result-size","3. Reduce Result Size",[455,2768,2769],{},"Select only needed fields:",[625,2771,2773],{"className":838,"code":2772,"language":840,"meta":630,"style":630},"// ✅ Good - Specific fields\nconst users = await db.select({\n  id: schema.users.id,\n  name: schema.users.name\n}).from(schema.users)\n\n// ❌ Bad - All fields\nconst users = await db.select().from(schema.users)\n",[632,2774,2775,2780,2801,2819,2837,2855,2859,2864],{"__ignoreMap":630},[635,2776,2777],{"class":637,"line":638},[635,2778,2779],{"class":669},"// ✅ Good - Specific fields\n",[635,2781,2782,2784,2786,2788,2790,2792,2794,2797,2799],{"class":637,"line":673},[635,2783,2669],{"class":1143},[635,2785,2454],{"class":860},[635,2787,2457],{"class":856},[635,2789,2677],{"class":852},[635,2791,1240],{"class":860},[635,2793,737],{"class":856},[635,2795,2796],{"class":891},"select",[635,2798,894],{"class":860},[635,2800,897],{"class":856},[635,2802,2803,2805,2807,2809,2811,2813,2815,2817],{"class":637,"line":690},[635,2804,2477],{"class":902},[635,2806,906],{"class":856},[635,2808,1255],{"class":860},[635,2810,737],{"class":856},[635,2812,2466],{"class":860},[635,2814,737],{"class":856},[635,2816,2488],{"class":860},[635,2818,917],{"class":856},[635,2820,2821,2824,2826,2828,2830,2832,2834],{"class":637,"line":697},[635,2822,2823],{"class":902},"  name",[635,2825,906],{"class":856},[635,2827,1255],{"class":860},[635,2829,737],{"class":856},[635,2831,2466],{"class":860},[635,2833,737],{"class":856},[635,2835,2836],{"class":860},"name\n",[635,2838,2839,2841,2843,2845,2847,2850,2852],{"class":637,"line":703},[635,2840,1056],{"class":856},[635,2842,1140],{"class":860},[635,2844,737],{"class":856},[635,2846,1109],{"class":891},[635,2848,2849],{"class":860},"(schema",[635,2851,737],{"class":856},[635,2853,2854],{"class":860},"users)\n",[635,2856,2857],{"class":637,"line":709},[635,2858,694],{"emptyLinePlaceholder":693},[635,2860,2861],{"class":637,"line":715},[635,2862,2863],{"class":669},"// ❌ Bad - All fields\n",[635,2865,2866,2868,2870,2872,2874,2876,2878,2880,2882,2884,2886,2888,2890],{"class":637,"line":721},[635,2867,2669],{"class":1143},[635,2869,2454],{"class":860},[635,2871,2457],{"class":856},[635,2873,2677],{"class":852},[635,2875,1240],{"class":860},[635,2877,737],{"class":856},[635,2879,2796],{"class":891},[635,2881,2500],{"class":860},[635,2883,737],{"class":856},[635,2885,1109],{"class":891},[635,2887,2849],{"class":860},[635,2889,737],{"class":856},[635,2891,2854],{"class":860},[2392,2893,2895],{"id":2894},"_4-batch-operations","4. Batch Operations",[625,2897,2899],{"className":838,"code":2898,"language":840,"meta":630,"style":630},"// Use D1's batch API for multiple operations\nconst batch = [\n  db.insert(schema.users).values({ email: 'user1@test.com' }),\n  db.insert(schema.users).values({ email: 'user2@test.com' }),\n  db.insert(schema.users).values({ email: 'user3@test.com' })\n]\n\nawait db.batch(batch)\n",[632,2900,2901,2906,2918,2963,3002,3039,3043,3047],{"__ignoreMap":630},[635,2902,2903],{"class":637,"line":638},[635,2904,2905],{"class":669},"// Use D1's batch API for multiple operations\n",[635,2907,2908,2910,2913,2915],{"class":637,"line":673},[635,2909,2669],{"class":1143},[635,2911,2912],{"class":860}," batch ",[635,2914,2457],{"class":856},[635,2916,2917],{"class":860}," [\n",[635,2919,2920,2923,2925,2928,2930,2932,2935,2937,2940,2942,2945,2948,2950,2952,2955,2957,2959,2961],{"class":637,"line":690},[635,2921,2922],{"class":860},"  db",[635,2924,737],{"class":856},[635,2926,2927],{"class":891},"insert",[635,2929,2849],{"class":860},[635,2931,737],{"class":856},[635,2933,2934],{"class":860},"users)",[635,2936,737],{"class":856},[635,2938,2939],{"class":891},"values",[635,2941,894],{"class":860},[635,2943,2944],{"class":856},"{",[635,2946,2947],{"class":902}," email",[635,2949,906],{"class":856},[635,2951,870],{"class":856},[635,2953,2954],{"class":645},"user1@test.com",[635,2956,914],{"class":856},[635,2958,864],{"class":856},[635,2960,1140],{"class":860},[635,2962,917],{"class":856},[635,2964,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2994,2996,2998,3000],{"class":637,"line":697},[635,2966,2922],{"class":860},[635,2968,737],{"class":856},[635,2970,2927],{"class":891},[635,2972,2849],{"class":860},[635,2974,737],{"class":856},[635,2976,2934],{"class":860},[635,2978,737],{"class":856},[635,2980,2939],{"class":891},[635,2982,894],{"class":860},[635,2984,2944],{"class":856},[635,2986,2947],{"class":902},[635,2988,906],{"class":856},[635,2990,870],{"class":856},[635,2992,2993],{"class":645},"user2@test.com",[635,2995,914],{"class":856},[635,2997,864],{"class":856},[635,2999,1140],{"class":860},[635,3001,917],{"class":856},[635,3003,3004,3006,3008,3010,3012,3014,3016,3018,3020,3022,3024,3026,3028,3030,3033,3035,3037],{"class":637,"line":703},[635,3005,2922],{"class":860},[635,3007,737],{"class":856},[635,3009,2927],{"class":891},[635,3011,2849],{"class":860},[635,3013,737],{"class":856},[635,3015,2934],{"class":860},[635,3017,737],{"class":856},[635,3019,2939],{"class":891},[635,3021,894],{"class":860},[635,3023,2944],{"class":856},[635,3025,2947],{"class":902},[635,3027,906],{"class":856},[635,3029,870],{"class":856},[635,3031,3032],{"class":645},"user3@test.com",[635,3034,914],{"class":856},[635,3036,864],{"class":856},[635,3038,1059],{"class":860},[635,3040,3041],{"class":637,"line":709},[635,3042,2125],{"class":860},[635,3044,3045],{"class":637,"line":715},[635,3046,694],{"emptyLinePlaceholder":693},[635,3048,3049,3052,3054,3056,3059],{"class":637,"line":721},[635,3050,3051],{"class":852},"await",[635,3053,1240],{"class":860},[635,3055,737],{"class":856},[635,3057,3058],{"class":891},"batch",[635,3060,3061],{"class":860},"(batch)\n",[2392,3063,3065],{"id":3064},"_5-cache-frequently-accessed-data","5. Cache Frequently Accessed Data",[455,3067,3068],{},"Use Cloudflare KV or Cache API for hot data:",[625,3070,3072],{"className":838,"code":3071,"language":840,"meta":630,"style":630},"// Cache expensive query results\nconst cacheKey = 'popular-posts'\nconst cached = await caches.default.match(cacheKey)\n\nif (cached) {\n  return cached.json()\n}\n\nconst posts = await db.query.posts.findMany({\n  where: eq(schema.posts.published, true),\n  limit: 10\n})\n\nawait caches.default.put(\n  cacheKey,\n  new Response(JSON.stringify(posts), {\n    headers: { 'Cache-Control': 'max-age=300' }\n  })\n)\n",[632,3073,3074,3079,3095,3122,3126,3136,3151,3156,3160,3188,3218,3227,3233,3237,3255,3262,3285,3313,3319],{"__ignoreMap":630},[635,3075,3076],{"class":637,"line":638},[635,3077,3078],{"class":669},"// Cache expensive query results\n",[635,3080,3081,3083,3086,3088,3090,3093],{"class":637,"line":673},[635,3082,2669],{"class":1143},[635,3084,3085],{"class":860}," cacheKey ",[635,3087,2457],{"class":856},[635,3089,870],{"class":856},[635,3091,3092],{"class":645},"popular-posts",[635,3094,876],{"class":856},[635,3096,3097,3099,3102,3104,3106,3109,3111,3114,3116,3119],{"class":637,"line":690},[635,3098,2669],{"class":1143},[635,3100,3101],{"class":860}," cached ",[635,3103,2457],{"class":856},[635,3105,2677],{"class":852},[635,3107,3108],{"class":860}," caches",[635,3110,737],{"class":856},[635,3112,3113],{"class":860},"default",[635,3115,737],{"class":856},[635,3117,3118],{"class":891},"match",[635,3120,3121],{"class":860},"(cacheKey)\n",[635,3123,3124],{"class":637,"line":697},[635,3125,694],{"emptyLinePlaceholder":693},[635,3127,3128,3131,3134],{"class":637,"line":703},[635,3129,3130],{"class":852},"if",[635,3132,3133],{"class":860}," (cached) ",[635,3135,897],{"class":856},[635,3137,3138,3141,3144,3146,3149],{"class":637,"line":709},[635,3139,3140],{"class":852},"  return",[635,3142,3143],{"class":860}," cached",[635,3145,737],{"class":856},[635,3147,3148],{"class":891},"json",[635,3150,2762],{"class":902},[635,3152,3153],{"class":637,"line":715},[635,3154,3155],{"class":856},"}\n",[635,3157,3158],{"class":637,"line":721},[635,3159,694],{"emptyLinePlaceholder":693},[635,3161,3162,3164,3166,3168,3170,3172,3174,3176,3178,3180,3182,3184,3186],{"class":637,"line":727},[635,3163,2669],{"class":1143},[635,3165,2672],{"class":860},[635,3167,2457],{"class":856},[635,3169,2677],{"class":852},[635,3171,1240],{"class":860},[635,3173,737],{"class":856},[635,3175,2684],{"class":860},[635,3177,737],{"class":856},[635,3179,2689],{"class":860},[635,3181,737],{"class":856},[635,3183,2694],{"class":891},[635,3185,894],{"class":860},[635,3187,897],{"class":856},[635,3189,3190,3193,3195,3198,3200,3202,3204,3206,3209,3211,3214,3216],{"class":637,"line":800},[635,3191,3192],{"class":902},"  where",[635,3194,906],{"class":856},[635,3196,3197],{"class":891}," eq",[635,3199,2849],{"class":860},[635,3201,737],{"class":856},[635,3203,2689],{"class":860},[635,3205,737],{"class":856},[635,3207,3208],{"class":860},"published",[635,3210,950],{"class":856},[635,3212,3213],{"class":2099}," true",[635,3215,1140],{"class":860},[635,3217,917],{"class":856},[635,3219,3220,3222,3224],{"class":637,"line":806},[635,3221,2703],{"class":902},[635,3223,906],{"class":856},[635,3225,3226],{"class":2205}," 10\n",[635,3228,3229,3231],{"class":637,"line":812},[635,3230,1056],{"class":856},[635,3232,1059],{"class":860},[635,3234,3235],{"class":637,"line":818},[635,3236,694],{"emptyLinePlaceholder":693},[635,3238,3239,3241,3243,3245,3247,3249,3252],{"class":637,"line":823},[635,3240,3051],{"class":852},[635,3242,3108],{"class":860},[635,3244,737],{"class":856},[635,3246,3113],{"class":860},[635,3248,737],{"class":856},[635,3250,3251],{"class":891},"put",[635,3253,3254],{"class":860},"(\n",[635,3256,3257,3260],{"class":637,"line":828},[635,3258,3259],{"class":860},"  cacheKey",[635,3261,917],{"class":856},[635,3263,3264,3267,3270,3273,3275,3278,3281,3283],{"class":637,"line":1286},[635,3265,3266],{"class":856},"  new",[635,3268,3269],{"class":891}," Response",[635,3271,3272],{"class":860},"(JSON",[635,3274,737],{"class":856},[635,3276,3277],{"class":891},"stringify",[635,3279,3280],{"class":860},"(posts)",[635,3282,950],{"class":856},[635,3284,982],{"class":856},[635,3286,3287,3290,3292,3294,3296,3299,3301,3303,3305,3308,3310],{"class":637,"line":1291},[635,3288,3289],{"class":902},"    headers",[635,3291,906],{"class":856},[635,3293,857],{"class":856},[635,3295,870],{"class":856},[635,3297,3298],{"class":902},"Cache-Control",[635,3300,914],{"class":856},[635,3302,906],{"class":856},[635,3304,870],{"class":856},[635,3306,3307],{"class":645},"max-age=300",[635,3309,914],{"class":856},[635,3311,3312],{"class":856}," }\n",[635,3314,3315,3317],{"class":637,"line":1313},[635,3316,1743],{"class":856},[635,3318,1059],{"class":860},[635,3320,3321],{"class":637,"line":1830},[635,3322,1059],{"class":860},[459,3324,508],{"id":3325},"troubleshooting",[516,3327,3329],{"id":3328},"database-binding-not-found","\"Database binding not found\"",[455,3331,3332,3335],{},[525,3333,3334],{},"Problem",": D1 binding is not available in the Nitro context.",[455,3337,3338,906],{},[525,3339,3340],{},"Solution",[3342,3343,3344,3350,3353],"ol",{},[467,3345,3346,3347,3349],{},"Check ",[632,3348,736],{}," has correct binding configuration",[467,3351,3352],{},"Verify Cloudflare Pages has D1 binding configured",[467,3354,3355,3356,3359],{},"Run ",[632,3357,3358],{},"npx wrangler pages deployment list"," to check bindings",[516,3361,3363],{"id":3362},"migrations-not-applied","\"Migrations not applied\"",[455,3365,3366,3368],{},[525,3367,3334],{},": Tables don't exist in D1.",[455,3370,3371,906],{},[525,3372,3340],{},[625,3374,3376],{"className":627,"code":3375,"language":629,"meta":630,"style":630},"# Check migration status\nnpx wrangler d1 migrations list @websideproject/nuxt-auto-api-db\n\n# Apply migrations\nnpx wrangler d1 migrations apply @websideproject/nuxt-auto-api-db --remote\n",[632,3377,3378,3383,3398,3402,3407],{"__ignoreMap":630},[635,3379,3380],{"class":637,"line":638},[635,3381,3382],{"class":669},"# Check migration status\n",[635,3384,3385,3387,3389,3391,3393,3396],{"class":637,"line":673},[635,3386,676],{"class":641},[635,3388,652],{"class":645},[635,3390,681],{"class":645},[635,3392,1944],{"class":645},[635,3394,3395],{"class":645}," list",[635,3397,687],{"class":645},[635,3399,3400],{"class":637,"line":690},[635,3401,694],{"emptyLinePlaceholder":693},[635,3403,3404],{"class":637,"line":697},[635,3405,3406],{"class":669},"# Apply migrations\n",[635,3408,3409,3411,3413,3415,3417,3419,3421],{"class":637,"line":703},[635,3410,676],{"class":641},[635,3412,652],{"class":645},[635,3414,681],{"class":645},[635,3416,1944],{"class":645},[635,3418,1947],{"class":645},[635,3420,1950],{"class":645},[635,3422,1979],{"class":645},[516,3424,3426],{"id":3425},"query-timeout","\"Query timeout\"",[455,3428,3429,3431],{},[525,3430,3334],{},": Query exceeds 30-second timeout.",[455,3433,3434,906],{},[525,3435,3340],{},[3342,3437,3438,3441,3444,3447],{},[467,3439,3440],{},"Add indexes on filtered/sorted columns",[467,3442,3443],{},"Reduce result set size with pagination",[467,3445,3446],{},"Optimize query with EXPLAIN QUERY PLAN",[467,3448,3449],{},"Consider breaking into smaller queries",[516,3451,3453],{"id":3452},"too-many-connections","\"Too many connections\"",[455,3455,3456,3458],{},[525,3457,3334],{},": Hitting rate limits.",[455,3460,3461,906],{},[525,3462,3340],{},[3342,3464,3465,3468,3471,3474],{},[467,3466,3467],{},"D1 handles connection pooling automatically",[467,3469,3470],{},"Implement request queuing on your side",[467,3472,3473],{},"Use caching to reduce database load",[467,3475,3476],{},"Consider upgrading to higher D1 tier",[516,3478,3480],{"id":3479},"enable-query-logging","Enable Query Logging",[625,3482,3484],{"className":838,"code":3483,"language":840,"meta":630,"style":630},"// server/plugins/database.d1.ts\nexport default defineNitroPlugin((nitroApp) => {\n  const db = drizzle(nitroApp.cloudflare.env.DB, {\n    schema,\n    logger: true // Enable query logging\n  })\n\n  globalThis.__autoApiDb = db\n})\n",[632,3485,3486,3491,3511,3541,3548,3560,3566,3570,3582],{"__ignoreMap":630},[635,3487,3488],{"class":637,"line":638},[635,3489,3490],{"class":669},"// server/plugins/database.d1.ts\n",[635,3492,3493,3495,3497,3499,3501,3503,3505,3507,3509],{"class":637,"line":673},[635,3494,885],{"class":852},[635,3496,888],{"class":852},[635,3498,1129],{"class":891},[635,3500,894],{"class":860},[635,3502,894],{"class":856},[635,3504,1137],{"class":1136},[635,3506,1140],{"class":856},[635,3508,1144],{"class":1143},[635,3510,982],{"class":856},[635,3512,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539],{"class":637,"line":690},[635,3514,1156],{"class":1143},[635,3516,1240],{"class":860},[635,3518,1162],{"class":856},[635,3520,1082],{"class":891},[635,3522,894],{"class":902},[635,3524,1137],{"class":860},[635,3526,737],{"class":856},[635,3528,1170],{"class":860},[635,3530,737],{"class":856},[635,3532,997],{"class":860},[635,3534,737],{"class":856},[635,3536,1766],{"class":860},[635,3538,950],{"class":856},[635,3540,982],{"class":856},[635,3542,3543,3546],{"class":637,"line":697},[635,3544,3545],{"class":860},"    schema",[635,3547,917],{"class":856},[635,3549,3550,3553,3555,3557],{"class":637,"line":703},[635,3551,3552],{"class":902},"    logger",[635,3554,906],{"class":856},[635,3556,3213],{"class":2099},[635,3558,3559],{"class":669}," // Enable query logging\n",[635,3561,3562,3564],{"class":637,"line":709},[635,3563,1743],{"class":856},[635,3565,1059],{"class":902},[635,3567,3568],{"class":637,"line":715},[635,3569,694],{"emptyLinePlaceholder":693},[635,3571,3572,3574,3576,3578,3580],{"class":637,"line":721},[635,3573,1273],{"class":860},[635,3575,737],{"class":856},[635,3577,1278],{"class":860},[635,3579,1162],{"class":856},[635,3581,1283],{"class":860},[635,3583,3584,3586],{"class":637,"line":727},[635,3585,1056],{"class":856},[635,3587,1059],{"class":860},[459,3589,3591],{"id":3590},"d1-specific-features","D1-Specific Features",[516,3593,3595],{"id":3594},"query-tracing","Query Tracing",[455,3597,3598],{},"D1 returns execution metadata:",[625,3600,3602],{"className":838,"code":3601,"language":840,"meta":630,"style":630},"const result = await db.prepare('SELECT * FROM users').all()\n\nconsole.log('Query duration:', result.meta.duration)\nconsole.log('Rows read:', result.meta.rows_read)\nconsole.log('Rows written:', result.meta.rows_written)\n",[632,3603,3604,3640,3644,3677,3707],{"__ignoreMap":630},[635,3605,3606,3608,3611,3613,3615,3617,3619,3622,3624,3626,3629,3631,3633,3635,3638],{"class":637,"line":638},[635,3607,2669],{"class":1143},[635,3609,3610],{"class":860}," result ",[635,3612,2457],{"class":856},[635,3614,2677],{"class":852},[635,3616,1240],{"class":860},[635,3618,737],{"class":856},[635,3620,3621],{"class":891},"prepare",[635,3623,894],{"class":860},[635,3625,914],{"class":856},[635,3627,3628],{"class":645},"SELECT * FROM users",[635,3630,914],{"class":856},[635,3632,1140],{"class":860},[635,3634,737],{"class":856},[635,3636,3637],{"class":891},"all",[635,3639,2762],{"class":860},[635,3641,3642],{"class":637,"line":673},[635,3643,694],{"emptyLinePlaceholder":693},[635,3645,3646,3649,3651,3653,3655,3657,3660,3662,3664,3667,3669,3672,3674],{"class":637,"line":690},[635,3647,3648],{"class":860},"console",[635,3650,737],{"class":856},[635,3652,1299],{"class":891},[635,3654,894],{"class":860},[635,3656,914],{"class":856},[635,3658,3659],{"class":645},"Query duration:",[635,3661,914],{"class":856},[635,3663,950],{"class":856},[635,3665,3666],{"class":860}," result",[635,3668,737],{"class":856},[635,3670,3671],{"class":860},"meta",[635,3673,737],{"class":856},[635,3675,3676],{"class":860},"duration)\n",[635,3678,3679,3681,3683,3685,3687,3689,3692,3694,3696,3698,3700,3702,3704],{"class":637,"line":697},[635,3680,3648],{"class":860},[635,3682,737],{"class":856},[635,3684,1299],{"class":891},[635,3686,894],{"class":860},[635,3688,914],{"class":856},[635,3690,3691],{"class":645},"Rows read:",[635,3693,914],{"class":856},[635,3695,950],{"class":856},[635,3697,3666],{"class":860},[635,3699,737],{"class":856},[635,3701,3671],{"class":860},[635,3703,737],{"class":856},[635,3705,3706],{"class":860},"rows_read)\n",[635,3708,3709,3711,3713,3715,3717,3719,3722,3724,3726,3728,3730,3732,3734],{"class":637,"line":703},[635,3710,3648],{"class":860},[635,3712,737],{"class":856},[635,3714,1299],{"class":891},[635,3716,894],{"class":860},[635,3718,914],{"class":856},[635,3720,3721],{"class":645},"Rows written:",[635,3723,914],{"class":856},[635,3725,950],{"class":856},[635,3727,3666],{"class":860},[635,3729,737],{"class":856},[635,3731,3671],{"class":860},[635,3733,737],{"class":856},[635,3735,3736],{"class":860},"rows_written)\n",[516,3738,3740],{"id":3739},"prepared-statements","Prepared Statements",[455,3742,3743],{},"D1 automatically uses prepared statements:",[625,3745,3747],{"className":838,"code":3746,"language":840,"meta":630,"style":630},"// Efficiently reuse prepared statement\nconst stmt = db.prepare('SELECT * FROM users WHERE id = ?')\n\nconst user1 = await stmt.bind(1).first()\nconst user2 = await stmt.bind(2).first()\n",[632,3748,3749,3754,3780,3784,3817],{"__ignoreMap":630},[635,3750,3751],{"class":637,"line":638},[635,3752,3753],{"class":669},"// Efficiently reuse prepared statement\n",[635,3755,3756,3758,3761,3763,3765,3767,3769,3771,3773,3776,3778],{"class":637,"line":673},[635,3757,2669],{"class":1143},[635,3759,3760],{"class":860}," stmt ",[635,3762,2457],{"class":856},[635,3764,1240],{"class":860},[635,3766,737],{"class":856},[635,3768,3621],{"class":891},[635,3770,894],{"class":860},[635,3772,914],{"class":856},[635,3774,3775],{"class":645},"SELECT * FROM users WHERE id = ?",[635,3777,914],{"class":856},[635,3779,1059],{"class":860},[635,3781,3782],{"class":637,"line":690},[635,3783,694],{"emptyLinePlaceholder":693},[635,3785,3786,3788,3791,3793,3795,3798,3800,3803,3805,3808,3810,3812,3815],{"class":637,"line":697},[635,3787,2669],{"class":1143},[635,3789,3790],{"class":860}," user1 ",[635,3792,2457],{"class":856},[635,3794,2677],{"class":852},[635,3796,3797],{"class":860}," stmt",[635,3799,737],{"class":856},[635,3801,3802],{"class":891},"bind",[635,3804,894],{"class":860},[635,3806,3807],{"class":2205},"1",[635,3809,1140],{"class":860},[635,3811,737],{"class":856},[635,3813,3814],{"class":891},"first",[635,3816,2762],{"class":860},[635,3818,3819,3821,3824,3826,3828,3830,3832,3834,3836,3839,3841,3843,3845],{"class":637,"line":703},[635,3820,2669],{"class":1143},[635,3822,3823],{"class":860}," user2 ",[635,3825,2457],{"class":856},[635,3827,2677],{"class":852},[635,3829,3797],{"class":860},[635,3831,737],{"class":856},[635,3833,3802],{"class":891},[635,3835,894],{"class":860},[635,3837,3838],{"class":2205},"2",[635,3840,1140],{"class":860},[635,3842,737],{"class":856},[635,3844,3814],{"class":891},[635,3846,2762],{"class":860},[459,3848,3850],{"id":3849},"migration-from-sqlite-to-d1","Migration from SQLite to D1",[455,3852,3853,3854,3857],{},"See ",[470,3855,3856],{"href":264},"Migration Guide"," for detailed instructions.",[459,3859,3861],{"id":3860},"resources","Resources",[464,3863,3864,3872,3879,3886],{},[467,3865,3866],{},[470,3867,3871],{"href":3868,"rel":3869},"https://developers.cloudflare.com/d1/",[3870],"nofollow","Cloudflare D1 Docs",[467,3873,3874],{},[470,3875,3878],{"href":3876,"rel":3877},"https://orm.drizzle.team/",[3870],"Drizzle ORM Docs",[467,3880,3881],{},[470,3882,3885],{"href":3883,"rel":3884},"https://developers.cloudflare.com/workers/wrangler/",[3870],"Wrangler CLI Docs",[467,3887,3888],{},[470,3889,3892],{"href":3890,"rel":3891},"https://nitro.unjs.io/deploy/providers/cloudflare",[3870],"Nuxt Cloudflare Preset",[3894,3895,3896],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .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 .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 .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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":630,"searchDepth":673,"depth":673,"links":3898},[3899,3900,3904,3912,3916,3921,3926,3930,3937,3941,3942],{"id":461,"depth":673,"text":462},{"id":511,"depth":673,"text":5,"children":3901},[3902,3903],{"id":518,"depth":690,"text":519},{"id":549,"depth":690,"text":550},{"id":619,"depth":673,"text":478,"children":3905},[3906,3907,3908,3909,3910,3911],{"id":622,"depth":690,"text":623},{"id":658,"depth":690,"text":659},{"id":740,"depth":690,"text":741},{"id":834,"depth":690,"text":835},{"id":1062,"depth":690,"text":1063},{"id":1320,"depth":690,"text":1321},{"id":1469,"depth":673,"text":484,"children":3913},[3914,3915],{"id":1472,"depth":690,"text":1473},{"id":1516,"depth":690,"text":1517},{"id":1889,"depth":673,"text":490,"children":3917},[3918,3919,3920],{"id":1892,"depth":690,"text":1893},{"id":1922,"depth":690,"text":1923},{"id":1982,"depth":690,"text":1983},{"id":2017,"depth":673,"text":496,"children":3922},[3923,3924,3925],{"id":2020,"depth":690,"text":2021},{"id":2067,"depth":690,"text":2068},{"id":2298,"depth":690,"text":2299},{"id":2350,"depth":673,"text":502,"children":3927},[3928,3929],{"id":2353,"depth":690,"text":2354},{"id":2389,"depth":690,"text":2390},{"id":3325,"depth":673,"text":508,"children":3931},[3932,3933,3934,3935,3936],{"id":3328,"depth":690,"text":3329},{"id":3362,"depth":690,"text":3363},{"id":3425,"depth":690,"text":3426},{"id":3452,"depth":690,"text":3453},{"id":3479,"depth":690,"text":3480},{"id":3590,"depth":673,"text":3591,"children":3938},[3939,3940],{"id":3594,"depth":690,"text":3595},{"id":3739,"depth":690,"text":3740},{"id":3849,"depth":673,"text":3850},{"id":3860,"depth":673,"text":3861},"md",null,{},{"title":259,"description":457},"M-zfFF1lqiljMAKhjTjmMDGz3thy_EDyrEuV9r5Y_bY",[3949,3950],{"title":255,"path":256,"stem":257,"description":630,"children":-1},{"title":263,"path":264,"stem":265,"description":3951,"children":-1},"This guide walks you through migrating your Nuxt Auto API application from local SQLite to Cloudflare D1 for edge deployment.",1772977478085]