[{"data":1,"prerenderedAt":2093},["ShallowReactive",2],{"navigation-landing-en":3,"navigation-nuxt-auto-en":180,"navigation-nuxt-protokit-en":338,"/docs/nuxt-auto/auto-api/getting-started-en":444,"/docs/nuxt-auto/auto-api/getting-started-surround-en":2088},[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":2084},{"id":446,"title":185,"body":447,"description":457,"extension":2083,"links":2084,"meta":2085,"navigation":2084,"ogImage":2084,"path":208,"seo":2086,"stem":209,"__hash__":2087},"nuxt_auto/0.docs/3.nuxt-auto/2.auto-api/1.getting-started.md",{"type":448,"value":449,"toc":2069},"minimark",[450,454,458,463,537,540,565,569,577,716,720,1042,1046,1241,1247,1251,1541,1545,1548,1556,1560,1563,2005,2011,2015,2065],[451,452,185],"h1",{"id":453},"getting-started",[455,456,457],"p",{},"Nuxt Auto API automatically generates type-safe REST APIs from your Drizzle ORM schemas with built-in authorization, validation, and multi-tenancy support.",[459,460,462],"h2",{"id":461},"features","Features",[464,465,466,474,480,486,492,497,508,513,519,525,531],"ul",{},[467,468,469,473],"li",{},[470,471,472],"strong",{},"Automatic CRUD endpoints"," from Drizzle schemas",[467,475,476,479],{},[470,477,478],{},"Plugin system"," for extending the request pipeline",[467,481,482,485],{},[470,483,484],{},"Multi-database support"," (SQLite, Postgres, MySQL, D1, Turso, PlanetScale)",[467,487,488,491],{},[470,489,490],{},"Multi-tier authorization"," (operation, SQL-level list filter, object-level, field-level)",[467,493,494,496],{},[470,495,239],{}," with Zod and drizzle-zod",[467,498,499,502,503,507],{},[470,500,501],{},"Custom endpoints"," with ",[504,505,506],"code",{},"createEndpoint()"," and standalone helpers",[467,509,510],{},[470,511,512],{},"Cursor & offset pagination",[467,514,515,518],{},[470,516,517],{},"Soft delete"," support (auto-detected)",[467,520,521,524],{},[470,522,523],{},"Multi-tenancy"," with flexible configuration",[467,526,527,530],{},[470,528,529],{},"M2M relationships"," with auto-detection",[467,532,533,536],{},[470,534,535],{},"Type-safe frontend"," with TanStack Query integration",[459,538,194],{"id":539},"installation",[541,542,547],"pre",{"className":543,"code":544,"language":545,"meta":546,"style":546},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm install @websideproject/nuxt-auto-api\n","bash","",[504,548,549],{"__ignoreMap":546},[550,551,554,558,562],"span",{"class":552,"line":553},"line",1,[550,555,557],{"class":556},"sBMFI","npm",[550,559,561],{"class":560},"sfazB"," install",[550,563,564],{"class":560}," @websideproject/nuxt-auto-api\n",[459,566,568],{"id":567},"basic-setup","Basic Setup",[570,571,573,574],"h3",{"id":572},"_1-add-the-module-to-nuxtconfigts","1. Add the module to ",[504,575,576],{},"nuxt.config.ts",[541,578,582],{"className":579,"code":580,"language":581,"meta":546,"style":546},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export default defineNuxtConfig({\n  modules: ['@websideproject/nuxt-auto-api'],\n\n  autoApi: {\n    prefix: '/api',\n    database: {\n      client: 'better-sqlite3',\n    },\n  },\n})\n","typescript",[504,583,584,605,632,639,650,668,678,695,701,707],{"__ignoreMap":546},[550,585,586,590,593,597,601],{"class":552,"line":553},[550,587,589],{"class":588},"s7zQu","export",[550,591,592],{"class":588}," default",[550,594,596],{"class":595},"s2Zo4"," defineNuxtConfig",[550,598,600],{"class":599},"sTEyZ","(",[550,602,604],{"class":603},"sMK4o","{\n",[550,606,608,612,615,618,621,624,626,629],{"class":552,"line":607},2,[550,609,611],{"class":610},"swJcz","  modules",[550,613,614],{"class":603},":",[550,616,617],{"class":599}," [",[550,619,620],{"class":603},"'",[550,622,623],{"class":560},"@websideproject/nuxt-auto-api",[550,625,620],{"class":603},[550,627,628],{"class":599},"]",[550,630,631],{"class":603},",\n",[550,633,635],{"class":552,"line":634},3,[550,636,638],{"emptyLinePlaceholder":637},true,"\n",[550,640,642,645,647],{"class":552,"line":641},4,[550,643,644],{"class":610},"  autoApi",[550,646,614],{"class":603},[550,648,649],{"class":603}," {\n",[550,651,653,656,658,661,664,666],{"class":552,"line":652},5,[550,654,655],{"class":610},"    prefix",[550,657,614],{"class":603},[550,659,660],{"class":603}," '",[550,662,663],{"class":560},"/api",[550,665,620],{"class":603},[550,667,631],{"class":603},[550,669,671,674,676],{"class":552,"line":670},6,[550,672,673],{"class":610},"    database",[550,675,614],{"class":603},[550,677,649],{"class":603},[550,679,681,684,686,688,691,693],{"class":552,"line":680},7,[550,682,683],{"class":610},"      client",[550,685,614],{"class":603},[550,687,660],{"class":603},[550,689,690],{"class":560},"better-sqlite3",[550,692,620],{"class":603},[550,694,631],{"class":603},[550,696,698],{"class":552,"line":697},8,[550,699,700],{"class":603},"    },\n",[550,702,704],{"class":552,"line":703},9,[550,705,706],{"class":603},"  },\n",[550,708,710,713],{"class":552,"line":709},10,[550,711,712],{"class":603},"}",[550,714,715],{"class":599},")\n",[570,717,719],{"id":718},"_2-create-your-drizzle-schema","2. Create your Drizzle schema",[541,721,723],{"className":579,"code":722,"language":581,"meta":546,"style":546},"// server/database/schema.ts\nimport { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core'\n\nexport const users = sqliteTable('users', {\n  id: integer('id').primaryKey({ autoIncrement: true }),\n  email: text('email').notNull().unique(),\n  name: text('name'),\n  role: text('role', { enum: ['user', 'admin'] }).default('user'),\n  createdAt: integer('created_at', { mode: 'timestamp' }).$defaultFn(() => new Date()),\n})\n",[504,724,725,731,767,771,800,847,884,906,975,1036],{"__ignoreMap":546},[550,726,727],{"class":552,"line":553},[550,728,730],{"class":729},"sHwdD","// server/database/schema.ts\n",[550,732,733,736,739,742,745,748,750,753,756,759,761,764],{"class":552,"line":607},[550,734,735],{"class":588},"import",[550,737,738],{"class":603}," {",[550,740,741],{"class":599}," sqliteTable",[550,743,744],{"class":603},",",[550,746,747],{"class":599}," text",[550,749,744],{"class":603},[550,751,752],{"class":599}," integer",[550,754,755],{"class":603}," }",[550,757,758],{"class":588}," from",[550,760,660],{"class":603},[550,762,763],{"class":560},"drizzle-orm/sqlite-core",[550,765,766],{"class":603},"'\n",[550,768,769],{"class":552,"line":634},[550,770,638],{"emptyLinePlaceholder":637},[550,772,773,775,779,782,785,787,789,791,794,796,798],{"class":552,"line":641},[550,774,589],{"class":588},[550,776,778],{"class":777},"spNyl"," const",[550,780,781],{"class":599}," users ",[550,783,784],{"class":603},"=",[550,786,741],{"class":595},[550,788,600],{"class":599},[550,790,620],{"class":603},[550,792,793],{"class":560},"users",[550,795,620],{"class":603},[550,797,744],{"class":603},[550,799,649],{"class":603},[550,801,802,805,807,809,811,813,816,818,821,824,827,829,832,835,837,841,843,845],{"class":552,"line":652},[550,803,804],{"class":610},"  id",[550,806,614],{"class":603},[550,808,752],{"class":595},[550,810,600],{"class":599},[550,812,620],{"class":603},[550,814,815],{"class":560},"id",[550,817,620],{"class":603},[550,819,820],{"class":599},")",[550,822,823],{"class":603},".",[550,825,826],{"class":595},"primaryKey",[550,828,600],{"class":599},[550,830,831],{"class":603},"{",[550,833,834],{"class":610}," autoIncrement",[550,836,614],{"class":603},[550,838,840],{"class":839},"sfNiH"," true",[550,842,755],{"class":603},[550,844,820],{"class":599},[550,846,631],{"class":603},[550,848,849,852,854,856,858,860,863,865,867,869,872,875,877,880,882],{"class":552,"line":670},[550,850,851],{"class":610},"  email",[550,853,614],{"class":603},[550,855,747],{"class":595},[550,857,600],{"class":599},[550,859,620],{"class":603},[550,861,862],{"class":560},"email",[550,864,620],{"class":603},[550,866,820],{"class":599},[550,868,823],{"class":603},[550,870,871],{"class":595},"notNull",[550,873,874],{"class":599},"()",[550,876,823],{"class":603},[550,878,879],{"class":595},"unique",[550,881,874],{"class":599},[550,883,631],{"class":603},[550,885,886,889,891,893,895,897,900,902,904],{"class":552,"line":680},[550,887,888],{"class":610},"  name",[550,890,614],{"class":603},[550,892,747],{"class":595},[550,894,600],{"class":599},[550,896,620],{"class":603},[550,898,899],{"class":560},"name",[550,901,620],{"class":603},[550,903,820],{"class":599},[550,905,631],{"class":603},[550,907,908,911,913,915,917,919,922,924,926,928,931,933,935,937,940,942,944,946,949,951,954,956,958,960,963,965,967,969,971,973],{"class":552,"line":697},[550,909,910],{"class":610},"  role",[550,912,614],{"class":603},[550,914,747],{"class":595},[550,916,600],{"class":599},[550,918,620],{"class":603},[550,920,921],{"class":560},"role",[550,923,620],{"class":603},[550,925,744],{"class":603},[550,927,738],{"class":603},[550,929,930],{"class":610}," enum",[550,932,614],{"class":603},[550,934,617],{"class":599},[550,936,620],{"class":603},[550,938,939],{"class":560},"user",[550,941,620],{"class":603},[550,943,744],{"class":603},[550,945,660],{"class":603},[550,947,948],{"class":560},"admin",[550,950,620],{"class":603},[550,952,953],{"class":599},"] ",[550,955,712],{"class":603},[550,957,820],{"class":599},[550,959,823],{"class":603},[550,961,962],{"class":595},"default",[550,964,600],{"class":599},[550,966,620],{"class":603},[550,968,939],{"class":560},[550,970,620],{"class":603},[550,972,820],{"class":599},[550,974,631],{"class":603},[550,976,977,980,982,984,986,988,991,993,995,997,1000,1002,1004,1007,1009,1011,1013,1015,1018,1020,1022,1025,1028,1031,1034],{"class":552,"line":703},[550,978,979],{"class":610},"  createdAt",[550,981,614],{"class":603},[550,983,752],{"class":595},[550,985,600],{"class":599},[550,987,620],{"class":603},[550,989,990],{"class":560},"created_at",[550,992,620],{"class":603},[550,994,744],{"class":603},[550,996,738],{"class":603},[550,998,999],{"class":610}," mode",[550,1001,614],{"class":603},[550,1003,660],{"class":603},[550,1005,1006],{"class":560},"timestamp",[550,1008,620],{"class":603},[550,1010,755],{"class":603},[550,1012,820],{"class":599},[550,1014,823],{"class":603},[550,1016,1017],{"class":595},"$defaultFn",[550,1019,600],{"class":599},[550,1021,874],{"class":603},[550,1023,1024],{"class":777}," =>",[550,1026,1027],{"class":603}," new",[550,1029,1030],{"class":595}," Date",[550,1032,1033],{"class":599},"())",[550,1035,631],{"class":603},[550,1037,1038,1040],{"class":552,"line":709},[550,1039,712],{"class":603},[550,1041,715],{"class":599},[570,1043,1045],{"id":1044},"_3-initialize-the-database","3. Initialize the database",[541,1047,1049],{"className":579,"code":1048,"language":581,"meta":546,"style":546},"// server/plugins/database.ts\nimport { drizzle } from 'drizzle-orm/better-sqlite3'\nimport Database from 'better-sqlite3'\nimport { initializeDatabase } from '@websideproject/nuxt-auto-api/database'\nimport * as schema from '../database/schema'\n\nexport default defineNitroPlugin(() => {\n  const sqlite = new Database('sqlite.db')\n  const db = drizzle(sqlite, { schema })\n\n  initializeDatabase(db, 'better-sqlite3')\n})\n",[504,1050,1051,1056,1076,1092,1112,1134,1138,1155,1182,1209,1213,1234],{"__ignoreMap":546},[550,1052,1053],{"class":552,"line":553},[550,1054,1055],{"class":729},"// server/plugins/database.ts\n",[550,1057,1058,1060,1062,1065,1067,1069,1071,1074],{"class":552,"line":607},[550,1059,735],{"class":588},[550,1061,738],{"class":603},[550,1063,1064],{"class":599}," drizzle",[550,1066,755],{"class":603},[550,1068,758],{"class":588},[550,1070,660],{"class":603},[550,1072,1073],{"class":560},"drizzle-orm/better-sqlite3",[550,1075,766],{"class":603},[550,1077,1078,1080,1083,1086,1088,1090],{"class":552,"line":634},[550,1079,735],{"class":588},[550,1081,1082],{"class":599}," Database ",[550,1084,1085],{"class":588},"from",[550,1087,660],{"class":603},[550,1089,690],{"class":560},[550,1091,766],{"class":603},[550,1093,1094,1096,1098,1101,1103,1105,1107,1110],{"class":552,"line":641},[550,1095,735],{"class":588},[550,1097,738],{"class":603},[550,1099,1100],{"class":599}," initializeDatabase",[550,1102,755],{"class":603},[550,1104,758],{"class":588},[550,1106,660],{"class":603},[550,1108,1109],{"class":560},"@websideproject/nuxt-auto-api/database",[550,1111,766],{"class":603},[550,1113,1114,1116,1119,1122,1125,1127,1129,1132],{"class":552,"line":652},[550,1115,735],{"class":588},[550,1117,1118],{"class":603}," *",[550,1120,1121],{"class":588}," as",[550,1123,1124],{"class":599}," schema ",[550,1126,1085],{"class":588},[550,1128,660],{"class":603},[550,1130,1131],{"class":560},"../database/schema",[550,1133,766],{"class":603},[550,1135,1136],{"class":552,"line":670},[550,1137,638],{"emptyLinePlaceholder":637},[550,1139,1140,1142,1144,1147,1149,1151,1153],{"class":552,"line":680},[550,1141,589],{"class":588},[550,1143,592],{"class":588},[550,1145,1146],{"class":595}," defineNitroPlugin",[550,1148,600],{"class":599},[550,1150,874],{"class":603},[550,1152,1024],{"class":777},[550,1154,649],{"class":603},[550,1156,1157,1160,1163,1166,1168,1171,1173,1175,1178,1180],{"class":552,"line":697},[550,1158,1159],{"class":777},"  const",[550,1161,1162],{"class":599}," sqlite",[550,1164,1165],{"class":603}," =",[550,1167,1027],{"class":603},[550,1169,1170],{"class":595}," Database",[550,1172,600],{"class":610},[550,1174,620],{"class":603},[550,1176,1177],{"class":560},"sqlite.db",[550,1179,620],{"class":603},[550,1181,715],{"class":610},[550,1183,1184,1186,1189,1191,1193,1195,1198,1200,1202,1205,1207],{"class":552,"line":703},[550,1185,1159],{"class":777},[550,1187,1188],{"class":599}," db",[550,1190,1165],{"class":603},[550,1192,1064],{"class":595},[550,1194,600],{"class":610},[550,1196,1197],{"class":599},"sqlite",[550,1199,744],{"class":603},[550,1201,738],{"class":603},[550,1203,1204],{"class":599}," schema",[550,1206,755],{"class":603},[550,1208,715],{"class":610},[550,1210,1211],{"class":552,"line":709},[550,1212,638],{"emptyLinePlaceholder":637},[550,1214,1216,1219,1221,1224,1226,1228,1230,1232],{"class":552,"line":1215},11,[550,1217,1218],{"class":595},"  initializeDatabase",[550,1220,600],{"class":610},[550,1222,1223],{"class":599},"db",[550,1225,744],{"class":603},[550,1227,660],{"class":603},[550,1229,690],{"class":560},[550,1231,620],{"class":603},[550,1233,715],{"class":610},[550,1235,1237,1239],{"class":552,"line":1236},12,[550,1238,712],{"class":603},[550,1240,715],{"class":599},[455,1242,1243,1244,823],{},"For other databases, see ",[1245,1246,227],"a",{"href":228},[570,1248,1250],{"id":1249},"_4-register-resources-via-module","4. Register resources via module",[541,1252,1254],{"className":579,"code":1253,"language":581,"meta":546,"style":546},"// modules/base/index.ts\nimport { defineNuxtModule, createResolver } from '@nuxt/kit'\nimport { createModuleImport } from '@websideproject/nuxt-auto-api'\n\nexport default defineNuxtModule({\n  meta: {\n    name: 'base',\n  },\n  setup(_options, nuxt) {\n    const resolver = createResolver(import.meta.url)\n\n    nuxt.hook('autoApi:registerSchema', (registry) => {\n      registry.register('users', {\n        schema: createModuleImport(\n          resolver.resolve('../../server/database/schema'),\n          'users'\n        ),\n      })\n    })\n  },\n})\n",[504,1255,1256,1261,1286,1305,1309,1321,1330,1346,1350,1370,1398,1402,1435,1458,1471,1495,1505,1513,1521,1529,1534],{"__ignoreMap":546},[550,1257,1258],{"class":552,"line":553},[550,1259,1260],{"class":729},"// modules/base/index.ts\n",[550,1262,1263,1265,1267,1270,1272,1275,1277,1279,1281,1284],{"class":552,"line":607},[550,1264,735],{"class":588},[550,1266,738],{"class":603},[550,1268,1269],{"class":599}," defineNuxtModule",[550,1271,744],{"class":603},[550,1273,1274],{"class":599}," createResolver",[550,1276,755],{"class":603},[550,1278,758],{"class":588},[550,1280,660],{"class":603},[550,1282,1283],{"class":560},"@nuxt/kit",[550,1285,766],{"class":603},[550,1287,1288,1290,1292,1295,1297,1299,1301,1303],{"class":552,"line":634},[550,1289,735],{"class":588},[550,1291,738],{"class":603},[550,1293,1294],{"class":599}," createModuleImport",[550,1296,755],{"class":603},[550,1298,758],{"class":588},[550,1300,660],{"class":603},[550,1302,623],{"class":560},[550,1304,766],{"class":603},[550,1306,1307],{"class":552,"line":641},[550,1308,638],{"emptyLinePlaceholder":637},[550,1310,1311,1313,1315,1317,1319],{"class":552,"line":652},[550,1312,589],{"class":588},[550,1314,592],{"class":588},[550,1316,1269],{"class":595},[550,1318,600],{"class":599},[550,1320,604],{"class":603},[550,1322,1323,1326,1328],{"class":552,"line":670},[550,1324,1325],{"class":610},"  meta",[550,1327,614],{"class":603},[550,1329,649],{"class":603},[550,1331,1332,1335,1337,1339,1342,1344],{"class":552,"line":680},[550,1333,1334],{"class":610},"    name",[550,1336,614],{"class":603},[550,1338,660],{"class":603},[550,1340,1341],{"class":560},"base",[550,1343,620],{"class":603},[550,1345,631],{"class":603},[550,1347,1348],{"class":552,"line":697},[550,1349,706],{"class":603},[550,1351,1352,1355,1357,1361,1363,1366,1368],{"class":552,"line":703},[550,1353,1354],{"class":610},"  setup",[550,1356,600],{"class":603},[550,1358,1360],{"class":1359},"sHdIc","_options",[550,1362,744],{"class":603},[550,1364,1365],{"class":1359}," nuxt",[550,1367,820],{"class":603},[550,1369,649],{"class":603},[550,1371,1372,1375,1378,1380,1382,1384,1386,1388,1391,1393,1396],{"class":552,"line":709},[550,1373,1374],{"class":777},"    const",[550,1376,1377],{"class":599}," resolver",[550,1379,1165],{"class":603},[550,1381,1274],{"class":595},[550,1383,600],{"class":610},[550,1385,735],{"class":588},[550,1387,823],{"class":603},[550,1389,1390],{"class":599},"meta",[550,1392,823],{"class":603},[550,1394,1395],{"class":599},"url",[550,1397,715],{"class":610},[550,1399,1400],{"class":552,"line":1215},[550,1401,638],{"emptyLinePlaceholder":637},[550,1403,1404,1407,1409,1412,1414,1416,1419,1421,1423,1426,1429,1431,1433],{"class":552,"line":1236},[550,1405,1406],{"class":599},"    nuxt",[550,1408,823],{"class":603},[550,1410,1411],{"class":595},"hook",[550,1413,600],{"class":610},[550,1415,620],{"class":603},[550,1417,1418],{"class":560},"autoApi:registerSchema",[550,1420,620],{"class":603},[550,1422,744],{"class":603},[550,1424,1425],{"class":603}," (",[550,1427,1428],{"class":1359},"registry",[550,1430,820],{"class":603},[550,1432,1024],{"class":777},[550,1434,649],{"class":603},[550,1436,1438,1441,1443,1446,1448,1450,1452,1454,1456],{"class":552,"line":1437},13,[550,1439,1440],{"class":599},"      registry",[550,1442,823],{"class":603},[550,1444,1445],{"class":595},"register",[550,1447,600],{"class":610},[550,1449,620],{"class":603},[550,1451,793],{"class":560},[550,1453,620],{"class":603},[550,1455,744],{"class":603},[550,1457,649],{"class":603},[550,1459,1461,1464,1466,1468],{"class":552,"line":1460},14,[550,1462,1463],{"class":610},"        schema",[550,1465,614],{"class":603},[550,1467,1294],{"class":595},[550,1469,1470],{"class":610},"(\n",[550,1472,1474,1477,1479,1482,1484,1486,1489,1491,1493],{"class":552,"line":1473},15,[550,1475,1476],{"class":599},"          resolver",[550,1478,823],{"class":603},[550,1480,1481],{"class":595},"resolve",[550,1483,600],{"class":610},[550,1485,620],{"class":603},[550,1487,1488],{"class":560},"../../server/database/schema",[550,1490,620],{"class":603},[550,1492,820],{"class":610},[550,1494,631],{"class":603},[550,1496,1498,1501,1503],{"class":552,"line":1497},16,[550,1499,1500],{"class":603},"          '",[550,1502,793],{"class":560},[550,1504,766],{"class":603},[550,1506,1508,1511],{"class":552,"line":1507},17,[550,1509,1510],{"class":610},"        )",[550,1512,631],{"class":603},[550,1514,1516,1519],{"class":552,"line":1515},18,[550,1517,1518],{"class":603},"      }",[550,1520,715],{"class":610},[550,1522,1524,1527],{"class":552,"line":1523},19,[550,1525,1526],{"class":603},"    }",[550,1528,715],{"class":610},[550,1530,1532],{"class":552,"line":1531},20,[550,1533,706],{"class":603},[550,1535,1537,1539],{"class":552,"line":1536},21,[550,1538,712],{"class":603},[550,1540,715],{"class":599},[570,1542,1544],{"id":1543},"_5-start-using-your-api","5. Start using your API",[455,1546,1547],{},"The following endpoints are automatically generated:",[541,1549,1554],{"className":1550,"code":1552,"language":1553},[1551],"language-text","GET    /api/users          # List users\nGET    /api/users/:id      # Get user by ID\nPOST   /api/users          # Create user\nPATCH  /api/users/:id      # Update user\nDELETE /api/users/:id      # Delete user\n","text",[504,1555,1552],{"__ignoreMap":546},[459,1557,1559],{"id":1558},"frontend-usage","Frontend Usage",[455,1561,1562],{},"Use the auto-generated composables with TanStack Query:",[541,1564,1568],{"className":1565,"code":1566,"language":1567,"meta":546,"style":546},"language-vue shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript setup lang=\"ts\">\n// Fetch list of users\nconst { data: users, isLoading } = useAutoApiList('users', {\n  filter: { role: 'admin' },\n  sort: '-createdAt',\n  limit: 10,\n})\n\n// Create mutation\nconst { mutateAsync: createUser } = useAutoApiMutation('users', 'create', {\n  toast: {\n    success: { title: 'User created!' },\n    error: { title: 'Failed to create user' }\n  }\n})\n\n// Update mutation\nconst { mutateAsync: updateUser } = useAutoApiMutation('users', 'update')\n\n// Delete mutation\nconst { mutateAsync: deleteUser } = useAutoApiMutation('users', 'delete')\n\nconst handleCreate = async () => {\n  await createUser({\n    email: 'user@example.com',\n    name: 'John Doe',\n  })\n}\n\u003C/script>\n","vue",[504,1569,1570,1597,1602,1641,1664,1680,1693,1699,1703,1708,1750,1759,1782,1805,1810,1816,1820,1825,1863,1867,1872,1910,1915,1935,1948,1965,1981,1989,1995],{"__ignoreMap":546},[550,1571,1572,1575,1578,1581,1584,1586,1589,1592,1594],{"class":552,"line":553},[550,1573,1574],{"class":603},"\u003C",[550,1576,1577],{"class":610},"script",[550,1579,1580],{"class":777}," setup",[550,1582,1583],{"class":777}," lang",[550,1585,784],{"class":603},[550,1587,1588],{"class":603},"\"",[550,1590,1591],{"class":560},"ts",[550,1593,1588],{"class":603},[550,1595,1596],{"class":603},">\n",[550,1598,1599],{"class":552,"line":607},[550,1600,1601],{"class":729},"// Fetch list of users\n",[550,1603,1604,1607,1609,1612,1614,1617,1619,1622,1624,1626,1629,1631,1633,1635,1637,1639],{"class":552,"line":634},[550,1605,1606],{"class":777},"const",[550,1608,738],{"class":603},[550,1610,1611],{"class":610}," data",[550,1613,614],{"class":603},[550,1615,1616],{"class":599}," users",[550,1618,744],{"class":603},[550,1620,1621],{"class":599}," isLoading ",[550,1623,712],{"class":603},[550,1625,1165],{"class":603},[550,1627,1628],{"class":595}," useAutoApiList",[550,1630,600],{"class":599},[550,1632,620],{"class":603},[550,1634,793],{"class":560},[550,1636,620],{"class":603},[550,1638,744],{"class":603},[550,1640,649],{"class":603},[550,1642,1643,1646,1648,1650,1653,1655,1657,1659,1661],{"class":552,"line":641},[550,1644,1645],{"class":610},"  filter",[550,1647,614],{"class":603},[550,1649,738],{"class":603},[550,1651,1652],{"class":610}," role",[550,1654,614],{"class":603},[550,1656,660],{"class":603},[550,1658,948],{"class":560},[550,1660,620],{"class":603},[550,1662,1663],{"class":603}," },\n",[550,1665,1666,1669,1671,1673,1676,1678],{"class":552,"line":652},[550,1667,1668],{"class":610},"  sort",[550,1670,614],{"class":603},[550,1672,660],{"class":603},[550,1674,1675],{"class":560},"-createdAt",[550,1677,620],{"class":603},[550,1679,631],{"class":603},[550,1681,1682,1685,1687,1691],{"class":552,"line":670},[550,1683,1684],{"class":610},"  limit",[550,1686,614],{"class":603},[550,1688,1690],{"class":1689},"sbssI"," 10",[550,1692,631],{"class":603},[550,1694,1695,1697],{"class":552,"line":680},[550,1696,712],{"class":603},[550,1698,715],{"class":599},[550,1700,1701],{"class":552,"line":697},[550,1702,638],{"emptyLinePlaceholder":637},[550,1704,1705],{"class":552,"line":703},[550,1706,1707],{"class":729},"// Create mutation\n",[550,1709,1710,1712,1714,1717,1719,1722,1724,1726,1729,1731,1733,1735,1737,1739,1741,1744,1746,1748],{"class":552,"line":709},[550,1711,1606],{"class":777},[550,1713,738],{"class":603},[550,1715,1716],{"class":610}," mutateAsync",[550,1718,614],{"class":603},[550,1720,1721],{"class":599}," createUser ",[550,1723,712],{"class":603},[550,1725,1165],{"class":603},[550,1727,1728],{"class":595}," useAutoApiMutation",[550,1730,600],{"class":599},[550,1732,620],{"class":603},[550,1734,793],{"class":560},[550,1736,620],{"class":603},[550,1738,744],{"class":603},[550,1740,660],{"class":603},[550,1742,1743],{"class":560},"create",[550,1745,620],{"class":603},[550,1747,744],{"class":603},[550,1749,649],{"class":603},[550,1751,1752,1755,1757],{"class":552,"line":1215},[550,1753,1754],{"class":610},"  toast",[550,1756,614],{"class":603},[550,1758,649],{"class":603},[550,1760,1761,1764,1766,1768,1771,1773,1775,1778,1780],{"class":552,"line":1236},[550,1762,1763],{"class":610},"    success",[550,1765,614],{"class":603},[550,1767,738],{"class":603},[550,1769,1770],{"class":610}," title",[550,1772,614],{"class":603},[550,1774,660],{"class":603},[550,1776,1777],{"class":560},"User created!",[550,1779,620],{"class":603},[550,1781,1663],{"class":603},[550,1783,1784,1787,1789,1791,1793,1795,1797,1800,1802],{"class":552,"line":1437},[550,1785,1786],{"class":610},"    error",[550,1788,614],{"class":603},[550,1790,738],{"class":603},[550,1792,1770],{"class":610},[550,1794,614],{"class":603},[550,1796,660],{"class":603},[550,1798,1799],{"class":560},"Failed to create user",[550,1801,620],{"class":603},[550,1803,1804],{"class":603}," }\n",[550,1806,1807],{"class":552,"line":1460},[550,1808,1809],{"class":603},"  }\n",[550,1811,1812,1814],{"class":552,"line":1473},[550,1813,712],{"class":603},[550,1815,715],{"class":599},[550,1817,1818],{"class":552,"line":1497},[550,1819,638],{"emptyLinePlaceholder":637},[550,1821,1822],{"class":552,"line":1507},[550,1823,1824],{"class":729},"// Update mutation\n",[550,1826,1827,1829,1831,1833,1835,1838,1840,1842,1844,1846,1848,1850,1852,1854,1856,1859,1861],{"class":552,"line":1515},[550,1828,1606],{"class":777},[550,1830,738],{"class":603},[550,1832,1716],{"class":610},[550,1834,614],{"class":603},[550,1836,1837],{"class":599}," updateUser ",[550,1839,712],{"class":603},[550,1841,1165],{"class":603},[550,1843,1728],{"class":595},[550,1845,600],{"class":599},[550,1847,620],{"class":603},[550,1849,793],{"class":560},[550,1851,620],{"class":603},[550,1853,744],{"class":603},[550,1855,660],{"class":603},[550,1857,1858],{"class":560},"update",[550,1860,620],{"class":603},[550,1862,715],{"class":599},[550,1864,1865],{"class":552,"line":1523},[550,1866,638],{"emptyLinePlaceholder":637},[550,1868,1869],{"class":552,"line":1531},[550,1870,1871],{"class":729},"// Delete mutation\n",[550,1873,1874,1876,1878,1880,1882,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1906,1908],{"class":552,"line":1536},[550,1875,1606],{"class":777},[550,1877,738],{"class":603},[550,1879,1716],{"class":610},[550,1881,614],{"class":603},[550,1883,1884],{"class":599}," deleteUser ",[550,1886,712],{"class":603},[550,1888,1165],{"class":603},[550,1890,1728],{"class":595},[550,1892,600],{"class":599},[550,1894,620],{"class":603},[550,1896,793],{"class":560},[550,1898,620],{"class":603},[550,1900,744],{"class":603},[550,1902,660],{"class":603},[550,1904,1905],{"class":560},"delete",[550,1907,620],{"class":603},[550,1909,715],{"class":599},[550,1911,1913],{"class":552,"line":1912},22,[550,1914,638],{"emptyLinePlaceholder":637},[550,1916,1918,1920,1923,1925,1928,1931,1933],{"class":552,"line":1917},23,[550,1919,1606],{"class":777},[550,1921,1922],{"class":599}," handleCreate ",[550,1924,784],{"class":603},[550,1926,1927],{"class":777}," async",[550,1929,1930],{"class":603}," ()",[550,1932,1024],{"class":777},[550,1934,649],{"class":603},[550,1936,1938,1941,1944,1946],{"class":552,"line":1937},24,[550,1939,1940],{"class":588},"  await",[550,1942,1943],{"class":595}," createUser",[550,1945,600],{"class":610},[550,1947,604],{"class":603},[550,1949,1951,1954,1956,1958,1961,1963],{"class":552,"line":1950},25,[550,1952,1953],{"class":610},"    email",[550,1955,614],{"class":603},[550,1957,660],{"class":603},[550,1959,1960],{"class":560},"user@example.com",[550,1962,620],{"class":603},[550,1964,631],{"class":603},[550,1966,1968,1970,1972,1974,1977,1979],{"class":552,"line":1967},26,[550,1969,1334],{"class":610},[550,1971,614],{"class":603},[550,1973,660],{"class":603},[550,1975,1976],{"class":560},"John Doe",[550,1978,620],{"class":603},[550,1980,631],{"class":603},[550,1982,1984,1987],{"class":552,"line":1983},27,[550,1985,1986],{"class":603},"  }",[550,1988,715],{"class":610},[550,1990,1992],{"class":552,"line":1991},28,[550,1993,1994],{"class":603},"}\n",[550,1996,1998,2001,2003],{"class":552,"line":1997},29,[550,1999,2000],{"class":603},"\u003C/",[550,2002,1577],{"class":610},[550,2004,1596],{"class":603},[455,2006,2007,2008,823],{},"For detailed frontend documentation, see the ",[1245,2009,2010],{"href":268},"Composables Guide",[459,2012,2014],{"id":2013},"next-steps","Next Steps",[464,2016,2017,2022,2029,2034,2039,2044,2049,2054,2059],{},[467,2018,2019,2021],{},[1245,2020,239],{"href":240}," - Add custom validation rules",[467,2023,2024,2026,2027,507],{},[1245,2025,231],{"href":232}," - ",[504,2028,506],{},[467,2030,2031,2033],{},[1245,2032,275],{"href":276}," - Cursor and offset pagination",[467,2035,2036,2038],{},[1245,2037,279],{"href":280}," - Soft delete support",[467,2040,2041,2043],{},[1245,2042,235],{"href":236}," - Multi-tenant applications",[467,2045,2046,2048],{},[1245,2047,287],{"href":288}," - Authentication setup",[467,2050,2051,2053],{},[1245,2052,223],{"href":224}," - Extend the request pipeline",[467,2055,2056,2058],{},[1245,2057,227],{"href":228}," - Multi-engine support",[467,2060,2061,2064],{},[1245,2062,327],{"href":2063},"./m2m-relationships"," - Many-to-many relations",[2066,2067,2068],"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 .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .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 .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":546,"searchDepth":607,"depth":607,"links":2070},[2071,2072,2073,2081,2082],{"id":461,"depth":607,"text":462},{"id":539,"depth":607,"text":194},{"id":567,"depth":607,"text":568,"children":2074},[2075,2077,2078,2079,2080],{"id":572,"depth":634,"text":2076},"1. Add the module to nuxt.config.ts",{"id":718,"depth":634,"text":719},{"id":1044,"depth":634,"text":1045},{"id":1249,"depth":634,"text":1250},{"id":1543,"depth":634,"text":1544},{"id":1558,"depth":607,"text":1559},{"id":2013,"depth":607,"text":2014},"md",null,{},{"title":185,"description":457},"JHORgxS8mklGuk5I3tID17734w0-_3JJMf6oU9ZfHGM",[2089,2091],{"title":198,"path":199,"stem":200,"description":2090,"children":-1},"This guide will walk you through creating your first API and admin panel with Nuxt Auto in under 10 minutes.",{"title":211,"path":212,"stem":213,"description":2092,"children":-1},"Nuxt Auto API provides powerful aggregation capabilities for analyzing your data, including simple aggregates on list endpoints and complex grouped aggregations.",1772977477936]