[{"data":1,"prerenderedAt":1635},["ShallowReactive",2],{"navigation_docs":3,"-runtypes-drizzle-orm-relations":399},[4,162,346],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":24},"RPC","icon-park-outline:lightning","\u002Frpc","01.rpc",[10,25,63,77,102,136],{"title":11,"icon":12,"redirect":7,"path":13,"stem":14,"children":15,"page":24},"Introduction","icon-park-outline:home","\u002Frpc\u002Fintroduction","01.rpc\u002F01.introduction",[16,20],{"title":17,"path":18,"stem":19},"Quick Start","\u002Frpc\u002Fintroduction\u002Fquick-start","01.rpc\u002F01.introduction\u002F02.quick-start",{"title":21,"path":22,"stem":23},"Manual Install","\u002Frpc\u002Fintroduction\u002Fmanual-install","01.rpc\u002F01.introduction\u002F03.manual-install",false,{"title":26,"icon":27,"path":28,"stem":29,"children":30,"page":24},"Server","icon-park-outline:server","\u002Frpc\u002Fserver","01.rpc\u002F02.server",[31,35,39,43,47,51,55,59],{"title":32,"path":33,"stem":34},"Routes","\u002Frpc\u002Fserver\u002Froutes","01.rpc\u002F02.server\u002F01.routes",{"title":36,"path":37,"stem":38},"Middleware","\u002Frpc\u002Fserver\u002Fmiddleware","01.rpc\u002F02.server\u002F02.middleware",{"title":40,"path":41,"stem":42},"Call Context","\u002Frpc\u002Fserver\u002Fcall-context","01.rpc\u002F02.server\u002F03.call-context",{"title":44,"path":45,"stem":46},"Headers","\u002Frpc\u002Fserver\u002Fheaders","01.rpc\u002F02.server\u002F04.headers",{"title":48,"path":49,"stem":50},"Error Handling","\u002Frpc\u002Fserver\u002Ferror-handling","01.rpc\u002F02.server\u002F05.error-handling",{"title":52,"path":53,"stem":54},"Validation","\u002Frpc\u002Fserver\u002Fvalidation","01.rpc\u002F02.server\u002F06.validation",{"title":56,"path":57,"stem":58},"JSON Round Trip","\u002Frpc\u002Fserver\u002Fjson-round-trip","01.rpc\u002F02.server\u002F07.json-round-trip",{"title":60,"path":61,"stem":62},"Drizzle Tables","\u002Frpc\u002Fserver\u002Fdrizzle-tables","01.rpc\u002F02.server\u002F08.drizzle-tables",{"title":64,"icon":65,"path":66,"stem":67,"children":68,"page":24},"Middlewares","icon-park-outline:link-one","\u002Frpc\u002Fmiddlewares","01.rpc\u002F03.middlewares",[69,73],{"title":70,"path":71,"stem":72},"fetchMetadata","\u002Frpc\u002Fmiddlewares\u002Ffetch-metadata","01.rpc\u002F03.middlewares\u002F01.fetch-metadata",{"title":74,"path":75,"stem":76},"syncRoutes","\u002Frpc\u002Fmiddlewares\u002Fsync-routes","01.rpc\u002F03.middlewares\u002F02.sync-routes",{"title":78,"icon":79,"path":80,"stem":81,"children":82,"page":24},"Client","icon-park-outline:computer","\u002Frpc\u002Fclient","01.rpc\u002F04.client",[83,87,91,94,98],{"title":84,"path":85,"stem":86},"Client Overview","\u002Frpc\u002Fclient\u002Fclient-overview","01.rpc\u002F04.client\u002F00.client-overview",{"title":88,"path":89,"stem":90},"Client Middleware","\u002Frpc\u002Fclient\u002Fclient-middleware","01.rpc\u002F04.client\u002F01.client-middleware",{"title":48,"path":92,"stem":93},"\u002Frpc\u002Fclient\u002Ferror-handling","01.rpc\u002F04.client\u002F02.error-handling",{"title":95,"path":96,"stem":97},"Batch Requests","\u002Frpc\u002Fclient\u002Fbatch","01.rpc\u002F04.client\u002F03.batch",{"title":99,"path":100,"stem":101},"Cancellation & Timeouts","\u002Frpc\u002Fclient\u002Fcancellation-timeouts","01.rpc\u002F04.client\u002F04.cancellation-timeouts",{"title":103,"redirect":104,"icon":105,"path":106,"stem":107,"children":108,"page":24},"Platforms","\u002Frpc\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Frpc\u002Fplatforms","01.rpc\u002F06.platforms",[109,112,116,120,124,128,132],{"title":110,"path":104,"stem":111},"Node.js","01.rpc\u002F06.platforms\u002F01.node-js",{"title":113,"path":114,"stem":115},"Bun","\u002Frpc\u002Fplatforms\u002Fbun","01.rpc\u002F06.platforms\u002F02.bun",{"title":117,"path":118,"stem":119},"AWS Lambda","\u002Frpc\u002Fplatforms\u002Faws-lambda","01.rpc\u002F06.platforms\u002F03.aws-lambda",{"title":121,"path":122,"stem":123},"Google Cloud Functions","\u002Frpc\u002Fplatforms\u002Fgoogle-cloud-functions","01.rpc\u002F06.platforms\u002F04.google-cloud-functions",{"title":125,"path":126,"stem":127},"Cloudflare Workers","\u002Frpc\u002Fplatforms\u002Fcloudflare","01.rpc\u002F06.platforms\u002F05.cloudflare",{"title":129,"path":130,"stem":131},"Vercel","\u002Frpc\u002Fplatforms\u002Fvercel","01.rpc\u002F06.platforms\u002F06.vercel",{"title":133,"path":134,"stem":135},"uWebSockets.js","\u002Frpc\u002Fplatforms\u002Fuwebsockets","01.rpc\u002F06.platforms\u002F07.uwebsockets",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":24},"Devtools","icon-park-outline:tool","\u002Frpc\u002Fdevtools","01.rpc\u002F07.devtools",[142,146,150,154,158],{"title":143,"path":144,"stem":145},"Linter","\u002Frpc\u002Fdevtools\u002Flinter","01.rpc\u002F07.devtools\u002F01.linter",{"title":147,"path":148,"stem":149},"Vite","\u002Frpc\u002Fdevtools\u002Fvite","01.rpc\u002F07.devtools\u002F02.vite",{"title":151,"path":152,"stem":153},"Next.js","\u002Frpc\u002Fdevtools\u002Fnextjs","01.rpc\u002F07.devtools\u002F03.nextjs",{"title":155,"path":156,"stem":157},"CLI","\u002Frpc\u002Fdevtools\u002Fcli","01.rpc\u002F07.devtools\u002F04.cli",{"title":159,"path":160,"stem":161},"API Types","\u002Frpc\u002Fdevtools\u002Fapi-types","01.rpc\u002F07.devtools\u002F05.api-types",{"title":163,"icon":164,"path":165,"stem":166,"children":167,"page":24},"RunTypes","i-lucide-braces","\u002Fruntypes","02.runtypes",[168,184,224,254,268,290,332],{"title":11,"icon":169,"redirect":165,"path":170,"stem":171,"children":172,"page":24},"i-lucide-rocket","\u002Fruntypes\u002Fintroduction","02.runtypes\u002F01.introduction",[173,177,180],{"title":174,"path":175,"stem":176},"Built on typescript-go","\u002Fruntypes\u002Fintroduction\u002Fbuilt-on-typescript-go","02.runtypes\u002F01.introduction\u002F02.built-on-typescript-go",{"title":17,"path":178,"stem":179},"\u002Fruntypes\u002Fintroduction\u002Fquick-start","02.runtypes\u002F01.introduction\u002F03.quick-start",{"title":181,"path":182,"stem":183},"Configuration","\u002Fruntypes\u002Fintroduction\u002Fconfiguration","02.runtypes\u002F01.introduction\u002F04.configuration",{"title":185,"icon":186,"redirect":187,"path":188,"stem":189,"children":190,"page":24},"Guide","i-lucide-book-open","\u002Fruntypes\u002Fguide\u002Ftype-builders","\u002Fruntypes\u002Fguide","02.runtypes\u002F02.guide",[191,194,198,201,204,208,212,216,220],{"title":192,"path":187,"stem":193},"Types vs Type Builders","02.runtypes\u002F02.guide\u002F01.type-builders",{"title":195,"path":196,"stem":197},"Reflection","\u002Fruntypes\u002Fguide\u002Freflection","02.runtypes\u002F02.guide\u002F02.reflection",{"title":52,"path":199,"stem":200},"\u002Fruntypes\u002Fguide\u002Fvalidation","02.runtypes\u002F02.guide\u002F03.validation",{"title":56,"path":202,"stem":203},"\u002Fruntypes\u002Fguide\u002Fjson-round-trip","02.runtypes\u002F02.guide\u002F04.json-round-trip",{"title":205,"path":206,"stem":207},"Data Mocking","\u002Fruntypes\u002Fguide\u002Fmocking","02.runtypes\u002F02.guide\u002F07.mocking",{"title":209,"path":210,"stem":211},"JSON Schemas","\u002Fruntypes\u002Fguide\u002Fjson-schemas","02.runtypes\u002F02.guide\u002F08.json-schemas",{"title":213,"path":214,"stem":215},"Pure Functions","\u002Fruntypes\u002Fguide\u002Fpure-functions","02.runtypes\u002F02.guide\u002F09.pure-functions",{"title":217,"path":218,"stem":219},"Compiler Markers","\u002Fruntypes\u002Fguide\u002Fcompiler-markers","02.runtypes\u002F02.guide\u002F10.compiler-markers",{"title":221,"path":222,"stem":223},"All Compiled Functions","\u002Fruntypes\u002Fguide\u002Fall-compiled-functions","02.runtypes\u002F02.guide\u002F11.all-compiled-functions",{"title":225,"icon":226,"redirect":227,"path":228,"stem":229,"children":230,"page":24},"Type Formats","i-lucide-shapes","\u002Fruntypes\u002Ftype-formats\u002Foverview","\u002Fruntypes\u002Ftype-formats","02.runtypes\u002F03.type-formats",[231,234,238,242,246,250],{"title":232,"path":227,"stem":233},"Overview","02.runtypes\u002F03.type-formats\u002F01.overview",{"title":235,"path":236,"stem":237},"String Formats","\u002Fruntypes\u002Ftype-formats\u002Fstring","02.runtypes\u002F03.type-formats\u002F02.string",{"title":239,"path":240,"stem":241},"Number Formats","\u002Fruntypes\u002Ftype-formats\u002Fnumber","02.runtypes\u002F03.type-formats\u002F03.number",{"title":243,"path":244,"stem":245},"BigInt Formats","\u002Fruntypes\u002Ftype-formats\u002Fbigint","02.runtypes\u002F03.type-formats\u002F04.bigint",{"title":247,"path":248,"stem":249},"Date and Time Formats","\u002Fruntypes\u002Ftype-formats\u002Fdate-time","02.runtypes\u002F03.type-formats\u002F05.date-time",{"title":251,"path":252,"stem":253},"Collection Formats","\u002Fruntypes\u002Ftype-formats\u002Fcollections","02.runtypes\u002F03.type-formats\u002F06.collections",{"title":255,"icon":256,"redirect":257,"path":258,"stem":259,"children":260,"page":24},"Tooling","i-lucide-wrench","\u002Fruntypes\u002Ftooling\u002Flinting","\u002Fruntypes\u002Ftooling","02.runtypes\u002F04.tooling",[261,264],{"title":262,"path":257,"stem":263},"Linting","02.runtypes\u002F04.tooling\u002F01.linting",{"title":265,"path":266,"stem":267},"Source Conversion","\u002Fruntypes\u002Ftooling\u002Fsource-conversion","02.runtypes\u002F04.tooling\u002F02.source-conversion",{"title":269,"icon":270,"redirect":271,"path":272,"stem":273,"children":274,"page":24},"AI Integration","i-lucide-sparkles","\u002Fruntypes\u002Fai-integration\u002Fworkflow-and-commands","\u002Fruntypes\u002Fai-integration","02.runtypes\u002F05.ai-integration",[275,278,282,286],{"title":276,"path":271,"stem":277},"AI Workflow","02.runtypes\u002F05.ai-integration\u002F01.workflow-and-commands",{"title":279,"path":280,"stem":281},"FriendlyText","\u002Fruntypes\u002Fai-integration\u002Ffriendly-text","02.runtypes\u002F05.ai-integration\u002F02.friendly-text",{"title":283,"path":284,"stem":285},"MockData","\u002Fruntypes\u002Fai-integration\u002Fmock-data","02.runtypes\u002F05.ai-integration\u002F03.mock-data",{"title":287,"path":288,"stem":289},"Translations (i18n)","\u002Fruntypes\u002Fai-integration\u002Fi18n","02.runtypes\u002F05.ai-integration\u002F04.i18n",{"title":291,"icon":292,"redirect":293,"path":294,"stem":295,"children":296,"page":24},"Drizzle ORM","i-lineicons-drizzle","\u002Fruntypes\u002Fdrizzle-orm\u002Fdrizzle-overview","\u002Fruntypes\u002Fdrizzle-orm","02.runtypes\u002F06.drizzle-orm",[297,300,304,308,312,316,320,324,328],{"title":298,"path":293,"stem":299},"Drizzle Overview","02.runtypes\u002F06.drizzle-orm\u002F00.drizzle-overview",{"title":301,"path":302,"stem":303},"Column Formats","\u002Fruntypes\u002Fdrizzle-orm\u002Fcolumn-formats","02.runtypes\u002F06.drizzle-orm\u002F01.column-formats",{"title":305,"path":306,"stem":307},"Views","\u002Fruntypes\u002Fdrizzle-orm\u002Fviews","02.runtypes\u002F06.drizzle-orm\u002F02.views",{"title":309,"path":310,"stem":311},"Indexes and Constraints","\u002Fruntypes\u002Fdrizzle-orm\u002Fconstraints","02.runtypes\u002F06.drizzle-orm\u002F03.constraints",{"title":313,"path":314,"stem":315},"Row Level Security","\u002Fruntypes\u002Fdrizzle-orm\u002Frow-level-security","02.runtypes\u002F06.drizzle-orm\u002F04.row-level-security",{"title":317,"path":318,"stem":319},"Relations","\u002Fruntypes\u002Fdrizzle-orm\u002Frelations","02.runtypes\u002F06.drizzle-orm\u002F05.relations",{"title":321,"path":322,"stem":323},"The Schema File","\u002Fruntypes\u002Fdrizzle-orm\u002Fschema-file","02.runtypes\u002F06.drizzle-orm\u002F06.schema-file",{"title":325,"path":326,"stem":327},"Migrate an Existing Schema","\u002Fruntypes\u002Fdrizzle-orm\u002Fmigrate-an-existing-schema","02.runtypes\u002F06.drizzle-orm\u002F07.migrate-an-existing-schema",{"title":329,"path":330,"stem":331},"Cloudflare D1 and Durable Objects","\u002Fruntypes\u002Fdrizzle-orm\u002Fcloudflare-storage","02.runtypes\u002F06.drizzle-orm\u002F08.cloudflare-storage",{"title":333,"icon":334,"redirect":335,"path":336,"stem":337,"children":338,"page":24},"Diagnostics","i-lucide-triangle-alert","\u002Fruntypes\u002Fdiagnostics\u002Ferror-levels","\u002Fruntypes\u002Fdiagnostics","02.runtypes\u002F08.diagnostics",[339,342],{"title":340,"path":335,"stem":341},"Error Levels","02.runtypes\u002F08.diagnostics\u002F01.error-levels",{"title":343,"path":344,"stem":345},"All Diagnostics","\u002Fruntypes\u002Fdiagnostics\u002Fall-diagnostics","02.runtypes\u002F08.diagnostics\u002F02.all-diagnostics",{"title":347,"icon":348,"path":349,"stem":350,"children":351,"page":24},"Benchmarks","i-lucide-gauge","\u002Fbenchmarks","03.benchmarks",[352,372],{"title":5,"icon":6,"redirect":353,"path":354,"stem":355,"children":356,"page":24},"\u002Fbenchmarks\u002Frpc\u002Fhello-world","\u002Fbenchmarks\u002Frpc","03.benchmarks\u002F02.rpc",[357,360,364,368],{"title":358,"path":353,"stem":359},"Hello World","03.benchmarks\u002F02.rpc\u002F01.hello-world",{"title":361,"path":362,"stem":363},"Light Validation","\u002Fbenchmarks\u002Frpc\u002Flight-validation","03.benchmarks\u002F02.rpc\u002F02.light-validation",{"title":365,"path":366,"stem":367},"Heavy Validation","\u002Fbenchmarks\u002Frpc\u002Fheavy-validation","03.benchmarks\u002F02.rpc\u002F03.heavy-validation",{"title":369,"path":370,"stem":371},"Payload Sizes","\u002Fbenchmarks\u002Frpc\u002Fpayload-sizes","03.benchmarks\u002F02.rpc\u002F04.payload-sizes",{"title":163,"icon":164,"redirect":373,"path":374,"stem":375,"children":376,"page":24},"\u002Fbenchmarks\u002Fruntypes\u002Fis-valid","\u002Fbenchmarks\u002Fruntypes","03.benchmarks\u002F03.runtypes",[377,380,384,388,392,395],{"title":378,"path":373,"stem":379},"Is Valid","03.benchmarks\u002F03.runtypes\u002F01.is-valid",{"title":381,"path":382,"stem":383},"Is Valid Formats","\u002Fbenchmarks\u002Fruntypes\u002Fis-valid-formats","03.benchmarks\u002F03.runtypes\u002F02.is-valid-formats",{"title":385,"path":386,"stem":387},"Get Errors","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors","03.benchmarks\u002F03.runtypes\u002F03.get-errors",{"title":389,"path":390,"stem":391},"Get Errors Formats","\u002Fbenchmarks\u002Fruntypes\u002Fget-errors-formats","03.benchmarks\u002F03.runtypes\u002F04.get-errors-formats",{"title":56,"path":393,"stem":394},"\u002Fbenchmarks\u002Fruntypes\u002Fjson-round-trip","03.benchmarks\u002F03.runtypes\u002F05.json-round-trip",{"title":396,"path":397,"stem":398},"Type Checking","\u002Fbenchmarks\u002Fruntypes\u002Ftype-checking","03.benchmarks\u002F03.runtypes\u002F07.type-checking",{"id":400,"title":317,"body":401,"description":1629,"extension":1630,"links":1631,"meta":1632,"navigation":502,"path":318,"seo":1633,"stem":319,"__hash__":1634},"docs\u002F02.runtypes\u002F06.drizzle-orm\u002F05.relations.md",{"type":402,"value":403,"toc":1624},"minimark",[404,413,1551,1556,1559,1563,1566,1601,1605,1620],[405,406,407,408,412],"p",{},"Declare relations with Drizzle to nest query results; they emit no SQL. Declare your schema with the slim packages, convert it with ",[409,410,411],"code",{},"toDrizzle",", then add relations in your query file.",[414,415,416,1019],"code-group",{},[417,418,424],"pre",{"className":419,"code":420,"filename":421,"language":422,"meta":423,"style":423},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import * as DZ from '@mionjs\u002Fdrizzle-orm-pg-core';\nimport {tableRef, type InferSelectModel} from '@mionjs\u002Fdrizzle-orm';\n\nexport const authors = DZ.pgTable('authors', {\n  id: DZ.uuid('id', {defaultRandom: true, primaryKey: true}),\n  name: DZ.varchar('name', {length: 100, notNull: true}),\n});\n\nexport const posts = DZ.pgTable('posts', {\n  id: DZ.uuid('id', {defaultRandom: true, primaryKey: true}),\n  authorId: DZ.uuid('author_id', {\n    notNull: true,\n    references: [() => tableRef(authors, 'id'), {onDelete: 'cascade'}],\n  }),\n  title: DZ.varchar('title', {length: 200, notNull: true}),\n});\n\n\u002F\u002F route and client models\nexport type Author = InferSelectModel\u003Ctypeof authors>;\nexport type Post = InferSelectModel\u003Ctypeof posts>;\n\n\u002F\u002F start-nested-model\nexport interface AuthorWithPosts extends Author {\n  posts: Post[];\n}\n\u002F\u002F end-nested-model\n","Schema","ts","",[409,425,426,462,497,504,545,601,653,662,667,698,743,770,782,838,848,896,905,910,917,942,963,968,974,992,1007,1013],{"__ignoreMap":423},[427,428,431,435,439,442,446,449,452,456,459],"span",{"class":429,"line":430},"line",1,[427,432,434],{"class":433},"s7zQu","import",[427,436,438],{"class":437},"sMK4o"," *",[427,440,441],{"class":433}," as",[427,443,445],{"class":444},"sTEyZ"," DZ ",[427,447,448],{"class":433},"from",[427,450,451],{"class":437}," '",[427,453,455],{"class":454},"sfazB","@mionjs\u002Fdrizzle-orm-pg-core",[427,457,458],{"class":437},"'",[427,460,461],{"class":437},";\n",[427,463,465,467,470,473,476,479,482,485,488,490,493,495],{"class":429,"line":464},2,[427,466,434],{"class":433},[427,468,469],{"class":437}," {",[427,471,472],{"class":444},"tableRef",[427,474,475],{"class":437},",",[427,477,478],{"class":433}," type",[427,480,481],{"class":444}," InferSelectModel",[427,483,484],{"class":437},"}",[427,486,487],{"class":433}," from",[427,489,451],{"class":437},[427,491,492],{"class":454},"@mionjs\u002Fdrizzle-orm",[427,494,458],{"class":437},[427,496,461],{"class":437},[427,498,500],{"class":429,"line":499},3,[427,501,503],{"emptyLinePlaceholder":502},true,"\n",[427,505,507,510,514,517,520,523,526,530,533,535,538,540,542],{"class":429,"line":506},4,[427,508,509],{"class":433},"export",[427,511,513],{"class":512},"spNyl"," const",[427,515,516],{"class":444}," authors ",[427,518,519],{"class":437},"=",[427,521,522],{"class":444}," DZ",[427,524,525],{"class":437},".",[427,527,529],{"class":528},"s2Zo4","pgTable",[427,531,532],{"class":444},"(",[427,534,458],{"class":437},[427,536,537],{"class":454},"authors",[427,539,458],{"class":437},[427,541,475],{"class":437},[427,543,544],{"class":437}," {\n",[427,546,548,552,555,557,559,562,564,566,569,571,573,575,578,580,584,586,589,591,593,595,598],{"class":429,"line":547},5,[427,549,551],{"class":550},"swJcz","  id",[427,553,554],{"class":437},":",[427,556,522],{"class":444},[427,558,525],{"class":437},[427,560,561],{"class":528},"uuid",[427,563,532],{"class":444},[427,565,458],{"class":437},[427,567,568],{"class":454},"id",[427,570,458],{"class":437},[427,572,475],{"class":437},[427,574,469],{"class":437},[427,576,577],{"class":550},"defaultRandom",[427,579,554],{"class":437},[427,581,583],{"class":582},"sfNiH"," true",[427,585,475],{"class":437},[427,587,588],{"class":550}," primaryKey",[427,590,554],{"class":437},[427,592,583],{"class":582},[427,594,484],{"class":437},[427,596,597],{"class":444},")",[427,599,600],{"class":437},",\n",[427,602,604,607,609,611,613,616,618,620,623,625,627,629,632,634,638,640,643,645,647,649,651],{"class":429,"line":603},6,[427,605,606],{"class":550},"  name",[427,608,554],{"class":437},[427,610,522],{"class":444},[427,612,525],{"class":437},[427,614,615],{"class":528},"varchar",[427,617,532],{"class":444},[427,619,458],{"class":437},[427,621,622],{"class":454},"name",[427,624,458],{"class":437},[427,626,475],{"class":437},[427,628,469],{"class":437},[427,630,631],{"class":550},"length",[427,633,554],{"class":437},[427,635,637],{"class":636},"sbssI"," 100",[427,639,475],{"class":437},[427,641,642],{"class":550}," notNull",[427,644,554],{"class":437},[427,646,583],{"class":582},[427,648,484],{"class":437},[427,650,597],{"class":444},[427,652,600],{"class":437},[427,654,656,658,660],{"class":429,"line":655},7,[427,657,484],{"class":437},[427,659,597],{"class":444},[427,661,461],{"class":437},[427,663,665],{"class":429,"line":664},8,[427,666,503],{"emptyLinePlaceholder":502},[427,668,670,672,674,677,679,681,683,685,687,689,692,694,696],{"class":429,"line":669},9,[427,671,509],{"class":433},[427,673,513],{"class":512},[427,675,676],{"class":444}," posts ",[427,678,519],{"class":437},[427,680,522],{"class":444},[427,682,525],{"class":437},[427,684,529],{"class":528},[427,686,532],{"class":444},[427,688,458],{"class":437},[427,690,691],{"class":454},"posts",[427,693,458],{"class":437},[427,695,475],{"class":437},[427,697,544],{"class":437},[427,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741],{"class":429,"line":700},10,[427,702,551],{"class":550},[427,704,554],{"class":437},[427,706,522],{"class":444},[427,708,525],{"class":437},[427,710,561],{"class":528},[427,712,532],{"class":444},[427,714,458],{"class":437},[427,716,568],{"class":454},[427,718,458],{"class":437},[427,720,475],{"class":437},[427,722,469],{"class":437},[427,724,577],{"class":550},[427,726,554],{"class":437},[427,728,583],{"class":582},[427,730,475],{"class":437},[427,732,588],{"class":550},[427,734,554],{"class":437},[427,736,583],{"class":582},[427,738,484],{"class":437},[427,740,597],{"class":444},[427,742,600],{"class":437},[427,744,746,749,751,753,755,757,759,761,764,766,768],{"class":429,"line":745},11,[427,747,748],{"class":550},"  authorId",[427,750,554],{"class":437},[427,752,522],{"class":444},[427,754,525],{"class":437},[427,756,561],{"class":528},[427,758,532],{"class":444},[427,760,458],{"class":437},[427,762,763],{"class":454},"author_id",[427,765,458],{"class":437},[427,767,475],{"class":437},[427,769,544],{"class":437},[427,771,773,776,778,780],{"class":429,"line":772},12,[427,774,775],{"class":550},"    notNull",[427,777,554],{"class":437},[427,779,583],{"class":582},[427,781,600],{"class":437},[427,783,785,788,790,793,796,799,802,805,807,809,811,813,815,817,819,822,824,826,829,831,833,836],{"class":429,"line":784},13,[427,786,787],{"class":550},"    references",[427,789,554],{"class":437},[427,791,792],{"class":444}," [",[427,794,795],{"class":437},"()",[427,797,798],{"class":512}," =>",[427,800,801],{"class":528}," tableRef",[427,803,804],{"class":444},"(authors",[427,806,475],{"class":437},[427,808,451],{"class":437},[427,810,568],{"class":454},[427,812,458],{"class":437},[427,814,597],{"class":444},[427,816,475],{"class":437},[427,818,469],{"class":437},[427,820,821],{"class":550},"onDelete",[427,823,554],{"class":437},[427,825,451],{"class":437},[427,827,828],{"class":454},"cascade",[427,830,458],{"class":437},[427,832,484],{"class":437},[427,834,835],{"class":444},"]",[427,837,600],{"class":437},[427,839,841,844,846],{"class":429,"line":840},14,[427,842,843],{"class":437},"  }",[427,845,597],{"class":444},[427,847,600],{"class":437},[427,849,851,854,856,858,860,862,864,866,869,871,873,875,877,879,882,884,886,888,890,892,894],{"class":429,"line":850},15,[427,852,853],{"class":550},"  title",[427,855,554],{"class":437},[427,857,522],{"class":444},[427,859,525],{"class":437},[427,861,615],{"class":528},[427,863,532],{"class":444},[427,865,458],{"class":437},[427,867,868],{"class":454},"title",[427,870,458],{"class":437},[427,872,475],{"class":437},[427,874,469],{"class":437},[427,876,631],{"class":550},[427,878,554],{"class":437},[427,880,881],{"class":636}," 200",[427,883,475],{"class":437},[427,885,642],{"class":550},[427,887,554],{"class":437},[427,889,583],{"class":582},[427,891,484],{"class":437},[427,893,597],{"class":444},[427,895,600],{"class":437},[427,897,899,901,903],{"class":429,"line":898},16,[427,900,484],{"class":437},[427,902,597],{"class":444},[427,904,461],{"class":437},[427,906,908],{"class":429,"line":907},17,[427,909,503],{"emptyLinePlaceholder":502},[427,911,913],{"class":429,"line":912},18,[427,914,916],{"class":915},"sHwdD","\u002F\u002F route and client models\n",[427,918,920,922,924,928,931,933,936,939],{"class":429,"line":919},19,[427,921,509],{"class":433},[427,923,478],{"class":512},[427,925,927],{"class":926},"sBMFI"," Author",[427,929,930],{"class":437}," =",[427,932,481],{"class":926},[427,934,935],{"class":437},"\u003Ctypeof",[427,937,938],{"class":444}," authors",[427,940,941],{"class":437},">;\n",[427,943,945,947,949,952,954,956,958,961],{"class":429,"line":944},20,[427,946,509],{"class":433},[427,948,478],{"class":512},[427,950,951],{"class":926}," Post",[427,953,930],{"class":437},[427,955,481],{"class":926},[427,957,935],{"class":437},[427,959,960],{"class":444}," posts",[427,962,941],{"class":437},[427,964,966],{"class":429,"line":965},21,[427,967,503],{"emptyLinePlaceholder":502},[427,969,971],{"class":429,"line":970},22,[427,972,973],{"class":915},"\u002F\u002F start-nested-model\n",[427,975,977,979,982,985,988,990],{"class":429,"line":976},23,[427,978,509],{"class":433},[427,980,981],{"class":512}," interface",[427,983,984],{"class":926}," AuthorWithPosts",[427,986,987],{"class":512}," extends",[427,989,927],{"class":926},[427,991,544],{"class":437},[427,993,995,998,1000,1002,1005],{"class":429,"line":994},24,[427,996,997],{"class":550},"  posts",[427,999,554],{"class":437},[427,1001,951],{"class":926},[427,1003,1004],{"class":444},"[]",[427,1006,461],{"class":437},[427,1008,1010],{"class":429,"line":1009},25,[427,1011,1012],{"class":437},"}\n",[427,1014,1016],{"class":429,"line":1015},26,[427,1017,1018],{"class":915},"\u002F\u002F end-nested-model\n",[417,1020,1023],{"className":419,"code":1021,"filename":1022,"language":422,"meta":423,"style":423},"import {authors, posts} from '.\u002Fdrizzle-relations-schema-example.ts';\nimport {toDrizzle} from '@mionjs\u002Fdrizzle-orm-pg-core\u002Fdrizzle';\nimport {relations} from 'drizzle-orm';\nimport type {ExtractTablesWithRelations} from 'drizzle-orm';\nimport type {PgDatabase, PgQueryResultHKT} from 'drizzle-orm\u002Fpg-core';\n\nconst authorsDb = toDrizzle(authors);\nconst postsDb = toDrizzle(posts);\n\n\u002F\u002F relations need real Drizzle tables\nconst authorsRelations = relations(authorsDb, ({many}) => ({\n  posts: many(postsDb),\n}));\nconst postsRelations = relations(postsDb, ({one}) => ({\n  author: one(authorsDb, {\n    fields: [postsDb.authorId],\n    references: [authorsDb.id],\n  }),\n}));\n\n\u002F\u002F passed to drizzle(client, {schema})\nexport const schema = {\n  authors: authorsDb,\n  posts: postsDb,\n  authorsRelations,\n  postsRelations,\n};\n\ndeclare const db: PgDatabase\u003C\n  PgQueryResultHKT,\n  typeof schema,\n  ExtractTablesWithRelations\u003Ctypeof schema>\n>;\n\n\u002F\u002F nested results\nexport async function authorsWithPosts() {\n  return db.query.authors.findMany({with: {posts: true}});\n}\n","Queries",[409,1024,1025,1050,1071,1093,1116,1145,1149,1167,1183,1187,1192,1227,1241,1250,1279,1295,1312,1328,1336,1344,1348,1353,1366,1378,1389,1396,1403,1409,1414,1433,1441,1452,1465,1470,1475,1481,1499,1546],{"__ignoreMap":423},[427,1026,1027,1029,1031,1033,1035,1037,1039,1041,1043,1046,1048],{"class":429,"line":430},[427,1028,434],{"class":433},[427,1030,469],{"class":437},[427,1032,537],{"class":444},[427,1034,475],{"class":437},[427,1036,960],{"class":444},[427,1038,484],{"class":437},[427,1040,487],{"class":433},[427,1042,451],{"class":437},[427,1044,1045],{"class":454},".\u002Fdrizzle-relations-schema-example.ts",[427,1047,458],{"class":437},[427,1049,461],{"class":437},[427,1051,1052,1054,1056,1058,1060,1062,1064,1067,1069],{"class":429,"line":464},[427,1053,434],{"class":433},[427,1055,469],{"class":437},[427,1057,411],{"class":444},[427,1059,484],{"class":437},[427,1061,487],{"class":433},[427,1063,451],{"class":437},[427,1065,1066],{"class":454},"@mionjs\u002Fdrizzle-orm-pg-core\u002Fdrizzle",[427,1068,458],{"class":437},[427,1070,461],{"class":437},[427,1072,1073,1075,1077,1080,1082,1084,1086,1089,1091],{"class":429,"line":499},[427,1074,434],{"class":433},[427,1076,469],{"class":437},[427,1078,1079],{"class":444},"relations",[427,1081,484],{"class":437},[427,1083,487],{"class":433},[427,1085,451],{"class":437},[427,1087,1088],{"class":454},"drizzle-orm",[427,1090,458],{"class":437},[427,1092,461],{"class":437},[427,1094,1095,1097,1099,1101,1104,1106,1108,1110,1112,1114],{"class":429,"line":506},[427,1096,434],{"class":433},[427,1098,478],{"class":433},[427,1100,469],{"class":437},[427,1102,1103],{"class":444},"ExtractTablesWithRelations",[427,1105,484],{"class":437},[427,1107,487],{"class":433},[427,1109,451],{"class":437},[427,1111,1088],{"class":454},[427,1113,458],{"class":437},[427,1115,461],{"class":437},[427,1117,1118,1120,1122,1124,1127,1129,1132,1134,1136,1138,1141,1143],{"class":429,"line":547},[427,1119,434],{"class":433},[427,1121,478],{"class":433},[427,1123,469],{"class":437},[427,1125,1126],{"class":444},"PgDatabase",[427,1128,475],{"class":437},[427,1130,1131],{"class":444}," PgQueryResultHKT",[427,1133,484],{"class":437},[427,1135,487],{"class":433},[427,1137,451],{"class":437},[427,1139,1140],{"class":454},"drizzle-orm\u002Fpg-core",[427,1142,458],{"class":437},[427,1144,461],{"class":437},[427,1146,1147],{"class":429,"line":603},[427,1148,503],{"emptyLinePlaceholder":502},[427,1150,1151,1154,1157,1159,1162,1165],{"class":429,"line":655},[427,1152,1153],{"class":512},"const",[427,1155,1156],{"class":444}," authorsDb ",[427,1158,519],{"class":437},[427,1160,1161],{"class":528}," toDrizzle",[427,1163,1164],{"class":444},"(authors)",[427,1166,461],{"class":437},[427,1168,1169,1171,1174,1176,1178,1181],{"class":429,"line":664},[427,1170,1153],{"class":512},[427,1172,1173],{"class":444}," postsDb ",[427,1175,519],{"class":437},[427,1177,1161],{"class":528},[427,1179,1180],{"class":444},"(posts)",[427,1182,461],{"class":437},[427,1184,1185],{"class":429,"line":669},[427,1186,503],{"emptyLinePlaceholder":502},[427,1188,1189],{"class":429,"line":700},[427,1190,1191],{"class":915},"\u002F\u002F relations need real Drizzle tables\n",[427,1193,1194,1196,1199,1201,1204,1207,1209,1212,1216,1219,1221,1224],{"class":429,"line":745},[427,1195,1153],{"class":512},[427,1197,1198],{"class":444}," authorsRelations ",[427,1200,519],{"class":437},[427,1202,1203],{"class":528}," relations",[427,1205,1206],{"class":444},"(authorsDb",[427,1208,475],{"class":437},[427,1210,1211],{"class":437}," ({",[427,1213,1215],{"class":1214},"sHdIc","many",[427,1217,1218],{"class":437},"})",[427,1220,798],{"class":512},[427,1222,1223],{"class":444}," (",[427,1225,1226],{"class":437},"{\n",[427,1228,1229,1231,1233,1236,1239],{"class":429,"line":772},[427,1230,997],{"class":550},[427,1232,554],{"class":437},[427,1234,1235],{"class":528}," many",[427,1237,1238],{"class":444},"(postsDb)",[427,1240,600],{"class":437},[427,1242,1243,1245,1248],{"class":429,"line":784},[427,1244,484],{"class":437},[427,1246,1247],{"class":444},"))",[427,1249,461],{"class":437},[427,1251,1252,1254,1257,1259,1261,1264,1266,1268,1271,1273,1275,1277],{"class":429,"line":840},[427,1253,1153],{"class":512},[427,1255,1256],{"class":444}," postsRelations ",[427,1258,519],{"class":437},[427,1260,1203],{"class":528},[427,1262,1263],{"class":444},"(postsDb",[427,1265,475],{"class":437},[427,1267,1211],{"class":437},[427,1269,1270],{"class":1214},"one",[427,1272,1218],{"class":437},[427,1274,798],{"class":512},[427,1276,1223],{"class":444},[427,1278,1226],{"class":437},[427,1280,1281,1284,1286,1289,1291,1293],{"class":429,"line":850},[427,1282,1283],{"class":550},"  author",[427,1285,554],{"class":437},[427,1287,1288],{"class":528}," one",[427,1290,1206],{"class":444},[427,1292,475],{"class":437},[427,1294,544],{"class":437},[427,1296,1297,1300,1302,1305,1307,1310],{"class":429,"line":898},[427,1298,1299],{"class":550},"    fields",[427,1301,554],{"class":437},[427,1303,1304],{"class":444}," [postsDb",[427,1306,525],{"class":437},[427,1308,1309],{"class":444},"authorId]",[427,1311,600],{"class":437},[427,1313,1314,1316,1318,1321,1323,1326],{"class":429,"line":907},[427,1315,787],{"class":550},[427,1317,554],{"class":437},[427,1319,1320],{"class":444}," [authorsDb",[427,1322,525],{"class":437},[427,1324,1325],{"class":444},"id]",[427,1327,600],{"class":437},[427,1329,1330,1332,1334],{"class":429,"line":912},[427,1331,843],{"class":437},[427,1333,597],{"class":444},[427,1335,600],{"class":437},[427,1337,1338,1340,1342],{"class":429,"line":919},[427,1339,484],{"class":437},[427,1341,1247],{"class":444},[427,1343,461],{"class":437},[427,1345,1346],{"class":429,"line":944},[427,1347,503],{"emptyLinePlaceholder":502},[427,1349,1350],{"class":429,"line":965},[427,1351,1352],{"class":915},"\u002F\u002F passed to drizzle(client, {schema})\n",[427,1354,1355,1357,1359,1362,1364],{"class":429,"line":970},[427,1356,509],{"class":433},[427,1358,513],{"class":512},[427,1360,1361],{"class":444}," schema ",[427,1363,519],{"class":437},[427,1365,544],{"class":437},[427,1367,1368,1371,1373,1376],{"class":429,"line":976},[427,1369,1370],{"class":550},"  authors",[427,1372,554],{"class":437},[427,1374,1375],{"class":444}," authorsDb",[427,1377,600],{"class":437},[427,1379,1380,1382,1384,1387],{"class":429,"line":994},[427,1381,997],{"class":550},[427,1383,554],{"class":437},[427,1385,1386],{"class":444}," postsDb",[427,1388,600],{"class":437},[427,1390,1391,1394],{"class":429,"line":1009},[427,1392,1393],{"class":444},"  authorsRelations",[427,1395,600],{"class":437},[427,1397,1398,1401],{"class":429,"line":1015},[427,1399,1400],{"class":444},"  postsRelations",[427,1402,600],{"class":437},[427,1404,1406],{"class":429,"line":1405},27,[427,1407,1408],{"class":437},"};\n",[427,1410,1412],{"class":429,"line":1411},28,[427,1413,503],{"emptyLinePlaceholder":502},[427,1415,1417,1420,1422,1425,1427,1430],{"class":429,"line":1416},29,[427,1418,1419],{"class":512},"declare",[427,1421,513],{"class":512},[427,1423,1424],{"class":444}," db",[427,1426,554],{"class":437},[427,1428,1429],{"class":926}," PgDatabase",[427,1431,1432],{"class":437},"\u003C\n",[427,1434,1436,1439],{"class":429,"line":1435},30,[427,1437,1438],{"class":926},"  PgQueryResultHKT",[427,1440,600],{"class":437},[427,1442,1444,1447,1450],{"class":429,"line":1443},31,[427,1445,1446],{"class":437},"  typeof",[427,1448,1449],{"class":444}," schema",[427,1451,600],{"class":437},[427,1453,1455,1458,1460,1462],{"class":429,"line":1454},32,[427,1456,1457],{"class":926},"  ExtractTablesWithRelations",[427,1459,935],{"class":437},[427,1461,1449],{"class":444},[427,1463,1464],{"class":437},">\n",[427,1466,1468],{"class":429,"line":1467},33,[427,1469,941],{"class":437},[427,1471,1473],{"class":429,"line":1472},34,[427,1474,503],{"emptyLinePlaceholder":502},[427,1476,1478],{"class":429,"line":1477},35,[427,1479,1480],{"class":915},"\u002F\u002F nested results\n",[427,1482,1484,1486,1489,1492,1495,1497],{"class":429,"line":1483},36,[427,1485,509],{"class":433},[427,1487,1488],{"class":512}," async",[427,1490,1491],{"class":512}," function",[427,1493,1494],{"class":528}," authorsWithPosts",[427,1496,795],{"class":437},[427,1498,544],{"class":437},[427,1500,1502,1505,1507,1509,1512,1514,1516,1518,1521,1523,1526,1529,1531,1533,1535,1537,1539,1542,1544],{"class":429,"line":1501},37,[427,1503,1504],{"class":433},"  return",[427,1506,1424],{"class":444},[427,1508,525],{"class":437},[427,1510,1511],{"class":444},"query",[427,1513,525],{"class":437},[427,1515,537],{"class":444},[427,1517,525],{"class":437},[427,1519,1520],{"class":528},"findMany",[427,1522,532],{"class":550},[427,1524,1525],{"class":437},"{",[427,1527,1528],{"class":550},"with",[427,1530,554],{"class":437},[427,1532,469],{"class":437},[427,1534,691],{"class":550},[427,1536,554],{"class":437},[427,1538,583],{"class":582},[427,1540,1541],{"class":437},"}}",[427,1543,597],{"class":550},[427,1545,461],{"class":437},[427,1547,1549],{"class":429,"line":1548},38,[427,1550,1012],{"class":437},[1552,1553,1555],"h2",{"id":1554},"why-relations-stay-in-the-query-file","Why Relations Stay in the Query File",[405,1557,1558],{},"Your schema file stays free of Drizzle types, so a client importing its row types never type-checks or bundles your database code. The query file already loads Drizzle, so relations cost nothing extra there.",[1552,1560,1562],{"id":1561},"nested-results-in-your-api","Nested Results in Your API",[405,1564,1565],{},"Build nested API results from slim models, not Drizzle's inferred query type.\nThis plain data type validates, survives the JSON round trip and reaches your client without loading Drizzle.",[417,1567,1569],{"className":419,"code":1568,"language":422,"meta":423,"style":423},"export interface AuthorWithPosts extends Author {\n  posts: Post[];\n}\n",[409,1570,1571,1585,1597],{"__ignoreMap":423},[427,1572,1573,1575,1577,1579,1581,1583],{"class":429,"line":430},[427,1574,509],{"class":433},[427,1576,981],{"class":512},[427,1578,984],{"class":926},[427,1580,987],{"class":512},[427,1582,927],{"class":926},[427,1584,544],{"class":437},[427,1586,1587,1589,1591,1593,1595],{"class":429,"line":464},[427,1588,997],{"class":550},[427,1590,554],{"class":437},[427,1592,951],{"class":926},[427,1594,1004],{"class":444},[427,1596,461],{"class":437},[427,1598,1599],{"class":429,"line":499},[427,1600,1012],{"class":437},[1552,1602,1604],{"id":1603},"foreign-keys","Foreign Keys",[405,1606,1607,1608,1611,1612,1615,1616,1619],{},"A relation is not a foreign key. For the database to enforce the link, declare it in the schema with the ",[409,1609,1610],{},"references"," setting or ",[409,1613,1614],{},"foreignKey()"," (see ",[1617,1618,309],"a",{"href":310},").",[1621,1622,1623],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}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 .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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}",{"title":423,"searchDepth":464,"depth":464,"links":1625},[1626,1627,1628],{"id":1554,"depth":464,"text":1555},{"id":1561,"depth":464,"text":1562},{"id":1603,"depth":464,"text":1604},"Declare Drizzle relations over your converted tables.","md",null,{},{"title":317,"description":1629},"XGSbmbCesoS3jhW4NBeiePFICwRxY4qNjU7diBz6mug",1793324366383]