[{"data":1,"prerenderedAt":2590},["ShallowReactive",2],{"navigation_docs":3,"-drizzle-orm-drizzle-overview":195,"-drizzle-orm-drizzle-overview-surround":2585},[4,27,61,75,100,126,147,177],{"title":5,"icon":6,"redirect":7,"path":8,"stem":9,"children":10,"page":26},"Introduction","icon-park-outline:home","\u002Fintroduction\u002Fabout-mion","\u002Fintroduction","1.introduction",[11,14,18,22],{"title":12,"path":7,"stem":13},"About mion","1.introduction\u002F1.about-mion",{"title":15,"path":16,"stem":17},"Quick Start","\u002Fintroduction\u002Fquick-start","1.introduction\u002F2.quick-start",{"title":19,"path":20,"stem":21},"Manual Install","\u002Fintroduction\u002Fmanual-install","1.introduction\u002F3.manual-install",{"title":23,"path":24,"stem":25},"What's Next","\u002Fintroduction\u002Fwhat-is-next","1.introduction\u002F4.what-is-next",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Server","icon-park-outline:server","\u002Fserver","20.server",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Router Overview","\u002Fserver\u002Foverview","20.server\u002F0.overview",{"title":38,"path":39,"stem":40},"Routes","\u002Fserver\u002Froutes","20.server\u002F1.routes",{"title":42,"path":43,"stem":44},"Middleware","\u002Fserver\u002Fmiddle-fns","20.server\u002F2.middle-fns",{"title":46,"path":47,"stem":48},"Request & Response","\u002Fserver\u002Frequest-and-response","20.server\u002F5.request-and-response",{"title":50,"path":51,"stem":52},"Error Handling","\u002Fserver\u002Ferror-handling","20.server\u002F6.error-handling",{"title":54,"path":55,"stem":56},"Validation","\u002Fserver\u002Fvalidation","20.server\u002F7.validation",{"title":58,"path":59,"stem":60},"Serialization","\u002Fserver\u002Fserialization","20.server\u002F8.serialization",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"Drizzle ORM","i-lineicons-drizzle","\u002Fdrizzle-orm","21.drizzle-orm",[67,71],{"title":68,"path":69,"stem":70},"Drizzle Overview","\u002Fdrizzle-orm\u002Fdrizzle-overview","21.drizzle-orm\u002F0.drizzle-overview",{"title":72,"path":73,"stem":74},"Column Mapping","\u002Fdrizzle-orm\u002Fcolumn-mapping","21.drizzle-orm\u002F1.column-mapping",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":26},"Client","icon-park-outline:computer","\u002Fclient","3.client",[81,85,88,92,96],{"title":82,"path":83,"stem":84},"Client Overview","\u002Fclient\u002Fclient-overview","3.client\u002F0.client-overview",{"title":50,"path":86,"stem":87},"\u002Fclient\u002Ferror-handling","3.client\u002F1.error-handling",{"title":89,"path":90,"stem":91},"Validation Errors","\u002Fclient\u002Fvalidation-errors","3.client\u002F2.validation-errors",{"title":93,"path":94,"stem":95},"Routes Flow","\u002Fclient\u002Fclient-flow","3.client\u002F3.client-flow",{"title":97,"path":98,"stem":99},"Cancellation & Timeouts","\u002Fclient\u002Fcancellation-timeouts","3.client\u002F4.cancellation-timeouts",{"title":101,"icon":102,"redirect":103,"path":104,"stem":105,"children":106,"page":26},"RunTypes","i-lucide-scan-text","\u002Frun-types\u002Foverview","\u002Frun-types","4.run-types",[107,110,114,118,122],{"title":108,"path":103,"stem":109},"RunTypes Overview","4.run-types\u002F0.overview",{"title":111,"path":112,"stem":113},"Supported Types","\u002Frun-types\u002Ffeatures","4.run-types\u002F1.features",{"title":115,"path":116,"stem":117},"Type Formats","\u002Frun-types\u002Ftype-formats","4.run-types\u002F2.type-formats",{"title":119,"path":120,"stem":121},"Built-in Formats","\u002Frun-types\u002Fbuilt-in-formats","4.run-types\u002F3.built-in-formats",{"title":123,"path":124,"stem":125},"Caveats","\u002Frun-types\u002Fcaveats","4.run-types\u002F4.caveats",{"title":127,"path":128,"stem":129,"children":130,"page":26},"Devtools","\u002Fdevtools","5.devtools",[131,135,139,143],{"title":132,"path":133,"stem":134},"AOT Compilation","\u002Fdevtools\u002Faot-compilation","5.devtools\u002F0.aot-compilation",{"title":136,"path":137,"stem":138},"Pure Functions","\u002Fdevtools\u002Fpure-functions","5.devtools\u002F1.pure-functions",{"title":140,"path":141,"stem":142},"ESLint Rules","\u002Fdevtools\u002Feslint-rules","5.devtools\u002F2.eslint-rules",{"title":144,"path":145,"stem":146},"Vite Configuration","\u002Fdevtools\u002Fvite-config","5.devtools\u002F3.vite-config",{"title":148,"redirect":149,"icon":150,"path":151,"stem":152,"children":153,"page":26},"Platforms","\u002Fplatforms\u002Fnode-js","icon-park-outline:play","\u002Fplatforms","6.platforms",[154,157,161,165,169,173],{"title":155,"path":149,"stem":156},"Node.js","6.platforms\u002F1.node-js",{"title":158,"path":159,"stem":160},"Bun","\u002Fplatforms\u002Fbun","6.platforms\u002F2.bun",{"title":162,"path":163,"stem":164},"AWS Lambda","\u002Fplatforms\u002Faws-lambda","6.platforms\u002F3.aws-lambda",{"title":166,"path":167,"stem":168},"Google Cloud Functions","\u002Fplatforms\u002Fgoogle-cloud-functions","6.platforms\u002F4.google-cloud-functions",{"title":170,"path":171,"stem":172},"Cloudflare Workers","\u002Fplatforms\u002Fcloudflare","6.platforms\u002F5.cloudflare",{"title":174,"path":175,"stem":176},"Vercel","\u002Fplatforms\u002Fvercel","6.platforms\u002F6.vercel",{"title":178,"icon":179,"redirect":180,"path":181,"stem":182,"children":183,"page":26},"Benchmarks","icon-park-outline:chart-line","\u002Fbenchmarks\u002Fhello-world","\u002Fbenchmarks","7.benchmarks",[184,187,191],{"title":185,"path":180,"stem":186},"Hello World","7.benchmarks\u002F1.hello-world",{"title":188,"path":189,"stem":190},"Light Validation","\u002Fbenchmarks\u002Flight-validation","7.benchmarks\u002F2.light-validation",{"title":192,"path":193,"stem":194},"Heavy Validation","\u002Fbenchmarks\u002Fheavy-validation","7.benchmarks\u002F3.heavy-validation",{"id":196,"title":68,"body":197,"description":2579,"extension":2580,"links":2581,"meta":2582,"navigation":461,"path":69,"seo":2583,"stem":70,"__hash__":2584},"docs\u002F21.drizzle-orm\u002F0.drizzle-overview.md",{"type":198,"value":199},"minimark",[200,218,241,255,260,325,1443,1447,1452,1455,1965,1970,1974,1989,2010,2185,2189,2192,2324,2328,2332,2347,2417,2421,2424,2575],[201,202,203,204,208,209,212,213,217],"p",{},"The package ",[205,206,207],"code",{},"@mionjs\u002Fdrizzle"," auto generates Drizzle ORM table schemas directly from TypeScript types.\nUnlike ",[205,210,211],{},"drizzle-zod"," or other drizzle plugins that generates Zod schemas FROM drizzle tables, this package works in the ",[214,215,216],"strong",{},"opposite direction",": it auto-generates drizzle table configurations FROM TypeScript types while allowing optional overrides.",[219,220,221,222,229,230,233,234,233,237,240],"note",{},"Column types are derived from Typescript types and ",[223,224,226],"a",{"href":225},"..\u002Frun-types\u002Ftype-formats",[205,227,228],{},"@mionjs\u002Ftype-formats"," - when you use format types like ",[205,231,232],{},"FormatUUIDv7",", ",[205,235,236],{},"FormatEmail",[205,238,239],{},"FormatInteger",", etc., the package automatically selects the most appropriate database column type for each database.",[242,243,244,247,248,254],"tip",{},[214,245,246],{},"Quick Tip:","\nThis package is designed to work with ",[249,250,253],"span",{"className":251},[252],"text-highlighted","flat types that reflect the columnar structure of a database table",", not deeply nested JavaScript objects with relationships.\nUse foreign key IDs instead of embedded entity references. Nested objects are stored as JSON columns.",[256,257,259],"h2",{"id":258},"supported-databases","Supported Databases",[261,262,263,279],"table",{},[264,265,266],"thead",{},[267,268,269,273,276],"tr",{},[270,271,272],"th",{},"Database",[270,274,275],{},"Function",[270,277,278],{},"Import",[280,281,282,297,311],"tbody",{},[267,283,284,288,293],{},[285,286,287],"td",{},"PostgreSQL",[285,289,290],{},[205,291,292],{},"toDrizzlePGTable\u003CT>(name, config?)",[285,294,295],{},[205,296,207],{},[267,298,299,302,307],{},[285,300,301],{},"MySQL",[285,303,304],{},[205,305,306],{},"toDrizzleMySqlTable\u003CT>(name, config?)",[285,308,309],{},[205,310,207],{},[267,312,313,316,321],{},[285,314,315],{},"SQLite",[285,317,318],{},[205,319,320],{},"toDrizzleSqliteTable\u003CT>(name, config?)",[285,322,323],{},[205,324,207],{},[326,327,328,755,1100],"code-group",{},[329,330,335],"pre",{"className":331,"code":332,"filename":287,"language":333,"meta":334,"style":334},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import {toDrizzlePGTable} from '@mionjs\u002Fdrizzle';\nimport {uuid, timestamp} from 'drizzle-orm\u002Fpg-core';\n\u002F\u002F Note: Must use regular import (not `import type`) for reflection to work\nimport {FormatUUIDv7, FormatEmail} from '@mionjs\u002Ftype-formats\u002FStringFormats';\nimport {FormatInteger} from '@mionjs\u002Ftype-formats\u002FNumberFormats';\n\n\u002F** User entity with format types for intelligent column mapping *\u002F\ninterface User {\n    id: FormatUUIDv7;\n    email: FormatEmail;\n    name: string;\n    bio?: string; \u002F\u002F Optional = nullable column\n    age: FormatInteger;\n    tags: string[]; \u002F\u002F Array = jsonb column\n    settings: {theme: string; notifications: boolean}; \u002F\u002F Nested object = jsonb\n    createdAt: Date;\n}\n\n\u002F\u002F we should always configure primary and foreign keys\nexport const usersAutoGenerated = toDrizzlePGTable\u003CUser>('users', {\n    id: uuid('id').primaryKey(),\n    createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n","ts","",[205,336,337,371,400,407,434,456,463,469,483,498,510,523,540,553,571,604,617,623,628,634,676,710,746],{"__ignoreMap":334},[249,338,341,345,349,353,356,359,362,365,368],{"class":339,"line":340},"line",1,[249,342,344],{"class":343},"s7zQu","import",[249,346,348],{"class":347},"sMK4o"," {",[249,350,352],{"class":351},"sTEyZ","toDrizzlePGTable",[249,354,355],{"class":347},"}",[249,357,358],{"class":343}," from",[249,360,361],{"class":347}," '",[249,363,207],{"class":364},"sfazB",[249,366,367],{"class":347},"'",[249,369,370],{"class":347},";\n",[249,372,374,376,378,381,384,387,389,391,393,396,398],{"class":339,"line":373},2,[249,375,344],{"class":343},[249,377,348],{"class":347},[249,379,380],{"class":351},"uuid",[249,382,383],{"class":347},",",[249,385,386],{"class":351}," timestamp",[249,388,355],{"class":347},[249,390,358],{"class":343},[249,392,361],{"class":347},[249,394,395],{"class":364},"drizzle-orm\u002Fpg-core",[249,397,367],{"class":347},[249,399,370],{"class":347},[249,401,403],{"class":339,"line":402},3,[249,404,406],{"class":405},"sHwdD","\u002F\u002F Note: Must use regular import (not `import type`) for reflection to work\n",[249,408,410,412,414,416,418,421,423,425,427,430,432],{"class":339,"line":409},4,[249,411,344],{"class":343},[249,413,348],{"class":347},[249,415,232],{"class":351},[249,417,383],{"class":347},[249,419,420],{"class":351}," FormatEmail",[249,422,355],{"class":347},[249,424,358],{"class":343},[249,426,361],{"class":347},[249,428,429],{"class":364},"@mionjs\u002Ftype-formats\u002FStringFormats",[249,431,367],{"class":347},[249,433,370],{"class":347},[249,435,437,439,441,443,445,447,449,452,454],{"class":339,"line":436},5,[249,438,344],{"class":343},[249,440,348],{"class":347},[249,442,239],{"class":351},[249,444,355],{"class":347},[249,446,358],{"class":343},[249,448,361],{"class":347},[249,450,451],{"class":364},"@mionjs\u002Ftype-formats\u002FNumberFormats",[249,453,367],{"class":347},[249,455,370],{"class":347},[249,457,459],{"class":339,"line":458},6,[249,460,462],{"emptyLinePlaceholder":461},true,"\n",[249,464,466],{"class":339,"line":465},7,[249,467,468],{"class":405},"\u002F** User entity with format types for intelligent column mapping *\u002F\n",[249,470,472,476,480],{"class":339,"line":471},8,[249,473,475],{"class":474},"spNyl","interface",[249,477,479],{"class":478},"sBMFI"," User",[249,481,482],{"class":347}," {\n",[249,484,486,490,493,496],{"class":339,"line":485},9,[249,487,489],{"class":488},"swJcz","    id",[249,491,492],{"class":347},":",[249,494,495],{"class":478}," FormatUUIDv7",[249,497,370],{"class":347},[249,499,501,504,506,508],{"class":339,"line":500},10,[249,502,503],{"class":488},"    email",[249,505,492],{"class":347},[249,507,420],{"class":478},[249,509,370],{"class":347},[249,511,513,516,518,521],{"class":339,"line":512},11,[249,514,515],{"class":488},"    name",[249,517,492],{"class":347},[249,519,520],{"class":478}," string",[249,522,370],{"class":347},[249,524,526,529,532,534,537],{"class":339,"line":525},12,[249,527,528],{"class":488},"    bio",[249,530,531],{"class":347},"?:",[249,533,520],{"class":478},[249,535,536],{"class":347},";",[249,538,539],{"class":405}," \u002F\u002F Optional = nullable column\n",[249,541,543,546,548,551],{"class":339,"line":542},13,[249,544,545],{"class":488},"    age",[249,547,492],{"class":347},[249,549,550],{"class":478}," FormatInteger",[249,552,370],{"class":347},[249,554,556,559,561,563,566,568],{"class":339,"line":555},14,[249,557,558],{"class":488},"    tags",[249,560,492],{"class":347},[249,562,520],{"class":478},[249,564,565],{"class":351},"[]",[249,567,536],{"class":347},[249,569,570],{"class":405}," \u002F\u002F Array = jsonb column\n",[249,572,574,577,579,581,584,586,588,590,593,595,598,601],{"class":339,"line":573},15,[249,575,576],{"class":488},"    settings",[249,578,492],{"class":347},[249,580,348],{"class":347},[249,582,583],{"class":488},"theme",[249,585,492],{"class":347},[249,587,520],{"class":478},[249,589,536],{"class":347},[249,591,592],{"class":488}," notifications",[249,594,492],{"class":347},[249,596,597],{"class":478}," boolean",[249,599,600],{"class":347},"};",[249,602,603],{"class":405}," \u002F\u002F Nested object = jsonb\n",[249,605,607,610,612,615],{"class":339,"line":606},16,[249,608,609],{"class":488},"    createdAt",[249,611,492],{"class":347},[249,613,614],{"class":478}," Date",[249,616,370],{"class":347},[249,618,620],{"class":339,"line":619},17,[249,621,622],{"class":347},"}\n",[249,624,626],{"class":339,"line":625},18,[249,627,462],{"emptyLinePlaceholder":461},[249,629,631],{"class":339,"line":630},19,[249,632,633],{"class":405},"\u002F\u002F we should always configure primary and foreign keys\n",[249,635,637,640,643,646,649,653,656,659,662,665,667,670,672,674],{"class":339,"line":636},20,[249,638,639],{"class":343},"export",[249,641,642],{"class":474}," const",[249,644,645],{"class":351}," usersAutoGenerated ",[249,647,648],{"class":347},"=",[249,650,652],{"class":651},"s2Zo4"," toDrizzlePGTable",[249,654,655],{"class":347},"\u003C",[249,657,658],{"class":478},"User",[249,660,661],{"class":347},">",[249,663,664],{"class":351},"(",[249,666,367],{"class":347},[249,668,669],{"class":364},"users",[249,671,367],{"class":347},[249,673,383],{"class":347},[249,675,482],{"class":347},[249,677,679,681,683,686,688,690,693,695,698,701,704,707],{"class":339,"line":678},21,[249,680,489],{"class":488},[249,682,492],{"class":347},[249,684,685],{"class":651}," uuid",[249,687,664],{"class":351},[249,689,367],{"class":347},[249,691,692],{"class":364},"id",[249,694,367],{"class":347},[249,696,697],{"class":351},")",[249,699,700],{"class":347},".",[249,702,703],{"class":651},"primaryKey",[249,705,706],{"class":351},"()",[249,708,709],{"class":347},",\n",[249,711,713,715,717,719,721,723,726,728,730,732,735,737,739,742,744],{"class":339,"line":712},22,[249,714,609],{"class":488},[249,716,492],{"class":347},[249,718,386],{"class":651},[249,720,664],{"class":351},[249,722,367],{"class":347},[249,724,725],{"class":364},"created_at",[249,727,367],{"class":347},[249,729,697],{"class":351},[249,731,700],{"class":347},[249,733,734],{"class":651},"defaultNow",[249,736,706],{"class":351},[249,738,700],{"class":347},[249,740,741],{"class":651},"notNull",[249,743,706],{"class":351},[249,745,709],{"class":347},[249,747,749,751,753],{"class":339,"line":748},23,[249,750,355],{"class":347},[249,752,697],{"class":351},[249,754,370],{"class":347},[329,756,758],{"className":331,"code":757,"filename":301,"language":333,"meta":334,"style":334},"import {toDrizzleMySqlTable} from '@mionjs\u002Fdrizzle';\nimport {varchar, timestamp} from 'drizzle-orm\u002Fmysql-core';\n\u002F\u002F Note: Must use regular import (not `import type`) for reflection to work\nimport {FormatUUIDv7, FormatEmail} from '@mionjs\u002Ftype-formats\u002FStringFormats';\nimport {FormatInteger} from '@mionjs\u002Ftype-formats\u002FNumberFormats';\n\n\u002F** User entity with format types for intelligent column mapping *\u002F\ninterface User {\n    id: FormatUUIDv7;\n    email: FormatEmail;\n    name: string;\n    bio?: string; \u002F\u002F Optional = nullable column\n    age: FormatInteger;\n    tags: string[]; \u002F\u002F Array = json column\n    settings: {theme: string; notifications: boolean}; \u002F\u002F Nested object = json\n    createdAt: Date;\n}\n\n\u002F\u002F we should always configure primary and foreign keys\nexport const usersAutoGenerated = toDrizzleMySqlTable\u003CUser>('users', {\n    id: varchar('id', {length: 36}).primaryKey(),\n    createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n",[205,759,760,781,807,811,835,855,859,863,871,881,891,901,913,923,938,965,975,979,983,987,1018,1060,1092],{"__ignoreMap":334},[249,761,762,764,766,769,771,773,775,777,779],{"class":339,"line":340},[249,763,344],{"class":343},[249,765,348],{"class":347},[249,767,768],{"class":351},"toDrizzleMySqlTable",[249,770,355],{"class":347},[249,772,358],{"class":343},[249,774,361],{"class":347},[249,776,207],{"class":364},[249,778,367],{"class":347},[249,780,370],{"class":347},[249,782,783,785,787,790,792,794,796,798,800,803,805],{"class":339,"line":373},[249,784,344],{"class":343},[249,786,348],{"class":347},[249,788,789],{"class":351},"varchar",[249,791,383],{"class":347},[249,793,386],{"class":351},[249,795,355],{"class":347},[249,797,358],{"class":343},[249,799,361],{"class":347},[249,801,802],{"class":364},"drizzle-orm\u002Fmysql-core",[249,804,367],{"class":347},[249,806,370],{"class":347},[249,808,809],{"class":339,"line":402},[249,810,406],{"class":405},[249,812,813,815,817,819,821,823,825,827,829,831,833],{"class":339,"line":409},[249,814,344],{"class":343},[249,816,348],{"class":347},[249,818,232],{"class":351},[249,820,383],{"class":347},[249,822,420],{"class":351},[249,824,355],{"class":347},[249,826,358],{"class":343},[249,828,361],{"class":347},[249,830,429],{"class":364},[249,832,367],{"class":347},[249,834,370],{"class":347},[249,836,837,839,841,843,845,847,849,851,853],{"class":339,"line":436},[249,838,344],{"class":343},[249,840,348],{"class":347},[249,842,239],{"class":351},[249,844,355],{"class":347},[249,846,358],{"class":343},[249,848,361],{"class":347},[249,850,451],{"class":364},[249,852,367],{"class":347},[249,854,370],{"class":347},[249,856,857],{"class":339,"line":458},[249,858,462],{"emptyLinePlaceholder":461},[249,860,861],{"class":339,"line":465},[249,862,468],{"class":405},[249,864,865,867,869],{"class":339,"line":471},[249,866,475],{"class":474},[249,868,479],{"class":478},[249,870,482],{"class":347},[249,872,873,875,877,879],{"class":339,"line":485},[249,874,489],{"class":488},[249,876,492],{"class":347},[249,878,495],{"class":478},[249,880,370],{"class":347},[249,882,883,885,887,889],{"class":339,"line":500},[249,884,503],{"class":488},[249,886,492],{"class":347},[249,888,420],{"class":478},[249,890,370],{"class":347},[249,892,893,895,897,899],{"class":339,"line":512},[249,894,515],{"class":488},[249,896,492],{"class":347},[249,898,520],{"class":478},[249,900,370],{"class":347},[249,902,903,905,907,909,911],{"class":339,"line":525},[249,904,528],{"class":488},[249,906,531],{"class":347},[249,908,520],{"class":478},[249,910,536],{"class":347},[249,912,539],{"class":405},[249,914,915,917,919,921],{"class":339,"line":542},[249,916,545],{"class":488},[249,918,492],{"class":347},[249,920,550],{"class":478},[249,922,370],{"class":347},[249,924,925,927,929,931,933,935],{"class":339,"line":555},[249,926,558],{"class":488},[249,928,492],{"class":347},[249,930,520],{"class":478},[249,932,565],{"class":351},[249,934,536],{"class":347},[249,936,937],{"class":405}," \u002F\u002F Array = json column\n",[249,939,940,942,944,946,948,950,952,954,956,958,960,962],{"class":339,"line":573},[249,941,576],{"class":488},[249,943,492],{"class":347},[249,945,348],{"class":347},[249,947,583],{"class":488},[249,949,492],{"class":347},[249,951,520],{"class":478},[249,953,536],{"class":347},[249,955,592],{"class":488},[249,957,492],{"class":347},[249,959,597],{"class":478},[249,961,600],{"class":347},[249,963,964],{"class":405}," \u002F\u002F Nested object = json\n",[249,966,967,969,971,973],{"class":339,"line":606},[249,968,609],{"class":488},[249,970,492],{"class":347},[249,972,614],{"class":478},[249,974,370],{"class":347},[249,976,977],{"class":339,"line":619},[249,978,622],{"class":347},[249,980,981],{"class":339,"line":625},[249,982,462],{"emptyLinePlaceholder":461},[249,984,985],{"class":339,"line":630},[249,986,633],{"class":405},[249,988,989,991,993,995,997,1000,1002,1004,1006,1008,1010,1012,1014,1016],{"class":339,"line":636},[249,990,639],{"class":343},[249,992,642],{"class":474},[249,994,645],{"class":351},[249,996,648],{"class":347},[249,998,999],{"class":651}," toDrizzleMySqlTable",[249,1001,655],{"class":347},[249,1003,658],{"class":478},[249,1005,661],{"class":347},[249,1007,664],{"class":351},[249,1009,367],{"class":347},[249,1011,669],{"class":364},[249,1013,367],{"class":347},[249,1015,383],{"class":347},[249,1017,482],{"class":347},[249,1019,1020,1022,1024,1027,1029,1031,1033,1035,1037,1039,1042,1044,1048,1050,1052,1054,1056,1058],{"class":339,"line":678},[249,1021,489],{"class":488},[249,1023,492],{"class":347},[249,1025,1026],{"class":651}," varchar",[249,1028,664],{"class":351},[249,1030,367],{"class":347},[249,1032,692],{"class":364},[249,1034,367],{"class":347},[249,1036,383],{"class":347},[249,1038,348],{"class":347},[249,1040,1041],{"class":488},"length",[249,1043,492],{"class":347},[249,1045,1047],{"class":1046},"sbssI"," 36",[249,1049,355],{"class":347},[249,1051,697],{"class":351},[249,1053,700],{"class":347},[249,1055,703],{"class":651},[249,1057,706],{"class":351},[249,1059,709],{"class":347},[249,1061,1062,1064,1066,1068,1070,1072,1074,1076,1078,1080,1082,1084,1086,1088,1090],{"class":339,"line":712},[249,1063,609],{"class":488},[249,1065,492],{"class":347},[249,1067,386],{"class":651},[249,1069,664],{"class":351},[249,1071,367],{"class":347},[249,1073,725],{"class":364},[249,1075,367],{"class":347},[249,1077,697],{"class":351},[249,1079,700],{"class":347},[249,1081,734],{"class":651},[249,1083,706],{"class":351},[249,1085,700],{"class":347},[249,1087,741],{"class":651},[249,1089,706],{"class":351},[249,1091,709],{"class":347},[249,1093,1094,1096,1098],{"class":339,"line":748},[249,1095,355],{"class":347},[249,1097,697],{"class":351},[249,1099,370],{"class":347},[329,1101,1103],{"className":331,"code":1102,"filename":315,"language":333,"meta":334,"style":334},"import {toDrizzleSqliteTable} from '@mionjs\u002Fdrizzle';\nimport {text, integer} from 'drizzle-orm\u002Fsqlite-core';\n\u002F\u002F Note: Must use regular import (not `import type`) for reflection to work\nimport {FormatUUIDv7, FormatEmail} from '@mionjs\u002Ftype-formats\u002FStringFormats';\nimport {FormatInteger} from '@mionjs\u002Ftype-formats\u002FNumberFormats';\n\n\u002F** User entity with format types for intelligent column mapping *\u002F\ninterface User {\n    id: FormatUUIDv7;\n    email: FormatEmail;\n    name: string;\n    bio?: string; \u002F\u002F Optional = nullable column\n    age: FormatInteger;\n    tags: string[]; \u002F\u002F Array = text({mode: 'json'}) column\n    settings: {theme: string; notifications: boolean}; \u002F\u002F Nested object = text({mode: 'json'})\n    createdAt: Date;\n}\n\n\u002F\u002F we should always configure primary and foreign keys\nexport const usersAutoGenerated = toDrizzleSqliteTable\u003CUser>('users', {\n    id: text('id').primaryKey(),\n    createdAt: integer('created_at', {mode: 'timestamp'}).notNull(),\n});\n",[205,1104,1105,1126,1153,1157,1181,1201,1205,1209,1217,1227,1237,1247,1259,1269,1284,1311,1321,1325,1329,1333,1364,1391,1435],{"__ignoreMap":334},[249,1106,1107,1109,1111,1114,1116,1118,1120,1122,1124],{"class":339,"line":340},[249,1108,344],{"class":343},[249,1110,348],{"class":347},[249,1112,1113],{"class":351},"toDrizzleSqliteTable",[249,1115,355],{"class":347},[249,1117,358],{"class":343},[249,1119,361],{"class":347},[249,1121,207],{"class":364},[249,1123,367],{"class":347},[249,1125,370],{"class":347},[249,1127,1128,1130,1132,1135,1137,1140,1142,1144,1146,1149,1151],{"class":339,"line":373},[249,1129,344],{"class":343},[249,1131,348],{"class":347},[249,1133,1134],{"class":351},"text",[249,1136,383],{"class":347},[249,1138,1139],{"class":351}," integer",[249,1141,355],{"class":347},[249,1143,358],{"class":343},[249,1145,361],{"class":347},[249,1147,1148],{"class":364},"drizzle-orm\u002Fsqlite-core",[249,1150,367],{"class":347},[249,1152,370],{"class":347},[249,1154,1155],{"class":339,"line":402},[249,1156,406],{"class":405},[249,1158,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179],{"class":339,"line":409},[249,1160,344],{"class":343},[249,1162,348],{"class":347},[249,1164,232],{"class":351},[249,1166,383],{"class":347},[249,1168,420],{"class":351},[249,1170,355],{"class":347},[249,1172,358],{"class":343},[249,1174,361],{"class":347},[249,1176,429],{"class":364},[249,1178,367],{"class":347},[249,1180,370],{"class":347},[249,1182,1183,1185,1187,1189,1191,1193,1195,1197,1199],{"class":339,"line":436},[249,1184,344],{"class":343},[249,1186,348],{"class":347},[249,1188,239],{"class":351},[249,1190,355],{"class":347},[249,1192,358],{"class":343},[249,1194,361],{"class":347},[249,1196,451],{"class":364},[249,1198,367],{"class":347},[249,1200,370],{"class":347},[249,1202,1203],{"class":339,"line":458},[249,1204,462],{"emptyLinePlaceholder":461},[249,1206,1207],{"class":339,"line":465},[249,1208,468],{"class":405},[249,1210,1211,1213,1215],{"class":339,"line":471},[249,1212,475],{"class":474},[249,1214,479],{"class":478},[249,1216,482],{"class":347},[249,1218,1219,1221,1223,1225],{"class":339,"line":485},[249,1220,489],{"class":488},[249,1222,492],{"class":347},[249,1224,495],{"class":478},[249,1226,370],{"class":347},[249,1228,1229,1231,1233,1235],{"class":339,"line":500},[249,1230,503],{"class":488},[249,1232,492],{"class":347},[249,1234,420],{"class":478},[249,1236,370],{"class":347},[249,1238,1239,1241,1243,1245],{"class":339,"line":512},[249,1240,515],{"class":488},[249,1242,492],{"class":347},[249,1244,520],{"class":478},[249,1246,370],{"class":347},[249,1248,1249,1251,1253,1255,1257],{"class":339,"line":525},[249,1250,528],{"class":488},[249,1252,531],{"class":347},[249,1254,520],{"class":478},[249,1256,536],{"class":347},[249,1258,539],{"class":405},[249,1260,1261,1263,1265,1267],{"class":339,"line":542},[249,1262,545],{"class":488},[249,1264,492],{"class":347},[249,1266,550],{"class":478},[249,1268,370],{"class":347},[249,1270,1271,1273,1275,1277,1279,1281],{"class":339,"line":555},[249,1272,558],{"class":488},[249,1274,492],{"class":347},[249,1276,520],{"class":478},[249,1278,565],{"class":351},[249,1280,536],{"class":347},[249,1282,1283],{"class":405}," \u002F\u002F Array = text({mode: 'json'}) column\n",[249,1285,1286,1288,1290,1292,1294,1296,1298,1300,1302,1304,1306,1308],{"class":339,"line":573},[249,1287,576],{"class":488},[249,1289,492],{"class":347},[249,1291,348],{"class":347},[249,1293,583],{"class":488},[249,1295,492],{"class":347},[249,1297,520],{"class":478},[249,1299,536],{"class":347},[249,1301,592],{"class":488},[249,1303,492],{"class":347},[249,1305,597],{"class":478},[249,1307,600],{"class":347},[249,1309,1310],{"class":405}," \u002F\u002F Nested object = text({mode: 'json'})\n",[249,1312,1313,1315,1317,1319],{"class":339,"line":606},[249,1314,609],{"class":488},[249,1316,492],{"class":347},[249,1318,614],{"class":478},[249,1320,370],{"class":347},[249,1322,1323],{"class":339,"line":619},[249,1324,622],{"class":347},[249,1326,1327],{"class":339,"line":625},[249,1328,462],{"emptyLinePlaceholder":461},[249,1330,1331],{"class":339,"line":630},[249,1332,633],{"class":405},[249,1334,1335,1337,1339,1341,1343,1346,1348,1350,1352,1354,1356,1358,1360,1362],{"class":339,"line":636},[249,1336,639],{"class":343},[249,1338,642],{"class":474},[249,1340,645],{"class":351},[249,1342,648],{"class":347},[249,1344,1345],{"class":651}," toDrizzleSqliteTable",[249,1347,655],{"class":347},[249,1349,658],{"class":478},[249,1351,661],{"class":347},[249,1353,664],{"class":351},[249,1355,367],{"class":347},[249,1357,669],{"class":364},[249,1359,367],{"class":347},[249,1361,383],{"class":347},[249,1363,482],{"class":347},[249,1365,1366,1368,1370,1373,1375,1377,1379,1381,1383,1385,1387,1389],{"class":339,"line":678},[249,1367,489],{"class":488},[249,1369,492],{"class":347},[249,1371,1372],{"class":651}," text",[249,1374,664],{"class":351},[249,1376,367],{"class":347},[249,1378,692],{"class":364},[249,1380,367],{"class":347},[249,1382,697],{"class":351},[249,1384,700],{"class":347},[249,1386,703],{"class":651},[249,1388,706],{"class":351},[249,1390,709],{"class":347},[249,1392,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1414,1416,1418,1421,1423,1425,1427,1429,1431,1433],{"class":339,"line":712},[249,1394,609],{"class":488},[249,1396,492],{"class":347},[249,1398,1139],{"class":651},[249,1400,664],{"class":351},[249,1402,367],{"class":347},[249,1404,725],{"class":364},[249,1406,367],{"class":347},[249,1408,383],{"class":347},[249,1410,348],{"class":347},[249,1412,1413],{"class":488},"mode",[249,1415,492],{"class":347},[249,1417,361],{"class":347},[249,1419,1420],{"class":364},"timestamp",[249,1422,367],{"class":347},[249,1424,355],{"class":347},[249,1426,697],{"class":351},[249,1428,700],{"class":347},[249,1430,741],{"class":651},[249,1432,706],{"class":351},[249,1434,709],{"class":347},[249,1436,1437,1439,1441],{"class":339,"line":748},[249,1438,355],{"class":347},[249,1440,697],{"class":351},[249,1442,370],{"class":347},[256,1444,1446],{"id":1445},"how-to-use","How To Use",[1448,1449,1451],"h4",{"id":1450},"primary-and-foreign-keys","Primary and Foreign Keys",[201,1453,1454],{},"Primary keys and foreign keys should always be defined in the tableConfig. This gives you full control over key constraints and relationships:",[329,1456,1458],{"className":331,"code":1457,"language":333,"meta":334,"style":334},"import {toDrizzlePGTable} from '@mionjs\u002Fdrizzle';\nimport {uuid, timestamp} from 'drizzle-orm\u002Fpg-core';\n\u002F\u002F Note: Must use regular import (not `import type`) for reflection to work\nimport {FormatUUIDv7} from '@mionjs\u002Ftype-formats\u002FStringFormats';\n\n\u002F** User entity *\u002F\ninterface User {\n    id: FormatUUIDv7;\n    name: string;\n    createdAt: Date;\n}\n\n\u002F** Post entity with foreign key reference *\u002F\ninterface Post {\n    id: FormatUUIDv7;\n    title: string;\n    content: string;\n    authorId: FormatUUIDv7; \u002F\u002F Foreign key - just a string type\n    createdAt: Date;\n}\n\n\u002F\u002F Primary keys should be defined in the tableConfig override\nexport const users = toDrizzlePGTable\u003CUser>('users', {\n    id: uuid('id').primaryKey(), \u002F\u002F Primary key defined here\n    createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n\n\u002F\u002F Foreign keys should also be defined in the tableConfig override\nexport const posts = toDrizzlePGTable\u003CPost>('posts', {\n    id: uuid('id').primaryKey(), \u002F\u002F Primary key\n    authorId: uuid('author_id') \u002F\u002F Foreign key with reference\n        .references(() => users.id, {onDelete: 'cascade'})\n        .notNull(),\n    createdAt: timestamp('created_at').defaultNow().notNull(),\n});\n",[205,1459,1460,1480,1504,1508,1528,1532,1537,1545,1555,1565,1575,1579,1583,1588,1597,1607,1618,1629,1643,1653,1657,1661,1666,1697,1727,1760,1769,1774,1780,1814,1844,1868,1912,1923,1956],{"__ignoreMap":334},[249,1461,1462,1464,1466,1468,1470,1472,1474,1476,1478],{"class":339,"line":340},[249,1463,344],{"class":343},[249,1465,348],{"class":347},[249,1467,352],{"class":351},[249,1469,355],{"class":347},[249,1471,358],{"class":343},[249,1473,361],{"class":347},[249,1475,207],{"class":364},[249,1477,367],{"class":347},[249,1479,370],{"class":347},[249,1481,1482,1484,1486,1488,1490,1492,1494,1496,1498,1500,1502],{"class":339,"line":373},[249,1483,344],{"class":343},[249,1485,348],{"class":347},[249,1487,380],{"class":351},[249,1489,383],{"class":347},[249,1491,386],{"class":351},[249,1493,355],{"class":347},[249,1495,358],{"class":343},[249,1497,361],{"class":347},[249,1499,395],{"class":364},[249,1501,367],{"class":347},[249,1503,370],{"class":347},[249,1505,1506],{"class":339,"line":402},[249,1507,406],{"class":405},[249,1509,1510,1512,1514,1516,1518,1520,1522,1524,1526],{"class":339,"line":409},[249,1511,344],{"class":343},[249,1513,348],{"class":347},[249,1515,232],{"class":351},[249,1517,355],{"class":347},[249,1519,358],{"class":343},[249,1521,361],{"class":347},[249,1523,429],{"class":364},[249,1525,367],{"class":347},[249,1527,370],{"class":347},[249,1529,1530],{"class":339,"line":436},[249,1531,462],{"emptyLinePlaceholder":461},[249,1533,1534],{"class":339,"line":458},[249,1535,1536],{"class":405},"\u002F** User entity *\u002F\n",[249,1538,1539,1541,1543],{"class":339,"line":465},[249,1540,475],{"class":474},[249,1542,479],{"class":478},[249,1544,482],{"class":347},[249,1546,1547,1549,1551,1553],{"class":339,"line":471},[249,1548,489],{"class":488},[249,1550,492],{"class":347},[249,1552,495],{"class":478},[249,1554,370],{"class":347},[249,1556,1557,1559,1561,1563],{"class":339,"line":485},[249,1558,515],{"class":488},[249,1560,492],{"class":347},[249,1562,520],{"class":478},[249,1564,370],{"class":347},[249,1566,1567,1569,1571,1573],{"class":339,"line":500},[249,1568,609],{"class":488},[249,1570,492],{"class":347},[249,1572,614],{"class":478},[249,1574,370],{"class":347},[249,1576,1577],{"class":339,"line":512},[249,1578,622],{"class":347},[249,1580,1581],{"class":339,"line":525},[249,1582,462],{"emptyLinePlaceholder":461},[249,1584,1585],{"class":339,"line":542},[249,1586,1587],{"class":405},"\u002F** Post entity with foreign key reference *\u002F\n",[249,1589,1590,1592,1595],{"class":339,"line":555},[249,1591,475],{"class":474},[249,1593,1594],{"class":478}," Post",[249,1596,482],{"class":347},[249,1598,1599,1601,1603,1605],{"class":339,"line":573},[249,1600,489],{"class":488},[249,1602,492],{"class":347},[249,1604,495],{"class":478},[249,1606,370],{"class":347},[249,1608,1609,1612,1614,1616],{"class":339,"line":606},[249,1610,1611],{"class":488},"    title",[249,1613,492],{"class":347},[249,1615,520],{"class":478},[249,1617,370],{"class":347},[249,1619,1620,1623,1625,1627],{"class":339,"line":619},[249,1621,1622],{"class":488},"    content",[249,1624,492],{"class":347},[249,1626,520],{"class":478},[249,1628,370],{"class":347},[249,1630,1631,1634,1636,1638,1640],{"class":339,"line":625},[249,1632,1633],{"class":488},"    authorId",[249,1635,492],{"class":347},[249,1637,495],{"class":478},[249,1639,536],{"class":347},[249,1641,1642],{"class":405}," \u002F\u002F Foreign key - just a string type\n",[249,1644,1645,1647,1649,1651],{"class":339,"line":630},[249,1646,609],{"class":488},[249,1648,492],{"class":347},[249,1650,614],{"class":478},[249,1652,370],{"class":347},[249,1654,1655],{"class":339,"line":636},[249,1656,622],{"class":347},[249,1658,1659],{"class":339,"line":678},[249,1660,462],{"emptyLinePlaceholder":461},[249,1662,1663],{"class":339,"line":712},[249,1664,1665],{"class":405},"\u002F\u002F Primary keys should be defined in the tableConfig override\n",[249,1667,1668,1670,1672,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695],{"class":339,"line":748},[249,1669,639],{"class":343},[249,1671,642],{"class":474},[249,1673,1674],{"class":351}," users ",[249,1676,648],{"class":347},[249,1678,652],{"class":651},[249,1680,655],{"class":347},[249,1682,658],{"class":478},[249,1684,661],{"class":347},[249,1686,664],{"class":351},[249,1688,367],{"class":347},[249,1690,669],{"class":364},[249,1692,367],{"class":347},[249,1694,383],{"class":347},[249,1696,482],{"class":347},[249,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716,1718,1720,1722,1724],{"class":339,"line":1699},24,[249,1701,489],{"class":488},[249,1703,492],{"class":347},[249,1705,685],{"class":651},[249,1707,664],{"class":351},[249,1709,367],{"class":347},[249,1711,692],{"class":364},[249,1713,367],{"class":347},[249,1715,697],{"class":351},[249,1717,700],{"class":347},[249,1719,703],{"class":651},[249,1721,706],{"class":351},[249,1723,383],{"class":347},[249,1725,1726],{"class":405}," \u002F\u002F Primary key defined here\n",[249,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1752,1754,1756,1758],{"class":339,"line":1729},25,[249,1731,609],{"class":488},[249,1733,492],{"class":347},[249,1735,386],{"class":651},[249,1737,664],{"class":351},[249,1739,367],{"class":347},[249,1741,725],{"class":364},[249,1743,367],{"class":347},[249,1745,697],{"class":351},[249,1747,700],{"class":347},[249,1749,734],{"class":651},[249,1751,706],{"class":351},[249,1753,700],{"class":347},[249,1755,741],{"class":651},[249,1757,706],{"class":351},[249,1759,709],{"class":347},[249,1761,1763,1765,1767],{"class":339,"line":1762},26,[249,1764,355],{"class":347},[249,1766,697],{"class":351},[249,1768,370],{"class":347},[249,1770,1772],{"class":339,"line":1771},27,[249,1773,462],{"emptyLinePlaceholder":461},[249,1775,1777],{"class":339,"line":1776},28,[249,1778,1779],{"class":405},"\u002F\u002F Foreign keys should also be defined in the tableConfig override\n",[249,1781,1783,1785,1787,1790,1792,1794,1796,1799,1801,1803,1805,1808,1810,1812],{"class":339,"line":1782},29,[249,1784,639],{"class":343},[249,1786,642],{"class":474},[249,1788,1789],{"class":351}," posts ",[249,1791,648],{"class":347},[249,1793,652],{"class":651},[249,1795,655],{"class":347},[249,1797,1798],{"class":478},"Post",[249,1800,661],{"class":347},[249,1802,664],{"class":351},[249,1804,367],{"class":347},[249,1806,1807],{"class":364},"posts",[249,1809,367],{"class":347},[249,1811,383],{"class":347},[249,1813,482],{"class":347},[249,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841],{"class":339,"line":1816},30,[249,1818,489],{"class":488},[249,1820,492],{"class":347},[249,1822,685],{"class":651},[249,1824,664],{"class":351},[249,1826,367],{"class":347},[249,1828,692],{"class":364},[249,1830,367],{"class":347},[249,1832,697],{"class":351},[249,1834,700],{"class":347},[249,1836,703],{"class":651},[249,1838,706],{"class":351},[249,1840,383],{"class":347},[249,1842,1843],{"class":405}," \u002F\u002F Primary key\n",[249,1845,1847,1849,1851,1853,1855,1857,1860,1862,1865],{"class":339,"line":1846},31,[249,1848,1633],{"class":488},[249,1850,492],{"class":347},[249,1852,685],{"class":651},[249,1854,664],{"class":351},[249,1856,367],{"class":347},[249,1858,1859],{"class":364},"author_id",[249,1861,367],{"class":347},[249,1863,1864],{"class":351},") ",[249,1866,1867],{"class":405},"\u002F\u002F Foreign key with reference\n",[249,1869,1871,1874,1877,1879,1881,1884,1887,1889,1891,1893,1895,1898,1900,1902,1905,1907,1909],{"class":339,"line":1870},32,[249,1872,1873],{"class":347},"        .",[249,1875,1876],{"class":651},"references",[249,1878,664],{"class":351},[249,1880,706],{"class":347},[249,1882,1883],{"class":474}," =>",[249,1885,1886],{"class":351}," users",[249,1888,700],{"class":347},[249,1890,692],{"class":351},[249,1892,383],{"class":347},[249,1894,348],{"class":347},[249,1896,1897],{"class":488},"onDelete",[249,1899,492],{"class":347},[249,1901,361],{"class":347},[249,1903,1904],{"class":364},"cascade",[249,1906,367],{"class":347},[249,1908,355],{"class":347},[249,1910,1911],{"class":351},")\n",[249,1913,1915,1917,1919,1921],{"class":339,"line":1914},33,[249,1916,1873],{"class":347},[249,1918,741],{"class":651},[249,1920,706],{"class":351},[249,1922,709],{"class":347},[249,1924,1926,1928,1930,1932,1934,1936,1938,1940,1942,1944,1946,1948,1950,1952,1954],{"class":339,"line":1925},34,[249,1927,609],{"class":488},[249,1929,492],{"class":347},[249,1931,386],{"class":651},[249,1933,664],{"class":351},[249,1935,367],{"class":347},[249,1937,725],{"class":364},[249,1939,367],{"class":347},[249,1941,697],{"class":351},[249,1943,700],{"class":347},[249,1945,734],{"class":651},[249,1947,706],{"class":351},[249,1949,700],{"class":347},[249,1951,741],{"class":651},[249,1953,706],{"class":351},[249,1955,709],{"class":347},[249,1957,1959,1961,1963],{"class":339,"line":1958},35,[249,1960,355],{"class":347},[249,1962,697],{"class":351},[249,1964,370],{"class":347},[242,1966,1967,1969],{},[214,1968,246],{},"\nTypes should only contain information related to type and format, this will be used for validation and serialization.\nAny columns asn SQL logic like primary, foreign keys, indexes, etc. should be defined in the tableConfig override.",[1448,1971,1973],{"id":1972},"length-buffer","Length Buffer",[201,1975,1976,1977,1980,1981,1984,1985,1988],{},"The ",[205,1978,1979],{},"lengthBuffer"," option multiplies the ",[205,1982,1983],{},"maxLength"," defined in custom string formats (",[205,1986,1987],{},"FormatString",") to provide extra capacity for the database column. This is useful when you want to allow for some flexibility in the data length prevent resizing in the future, but still want to validate the correct length at runtime.",[219,1990,1976,1991,1993,1994,1996,1997,1999,2000,233,2002,2005,2006,2009],{},[205,1992,1979],{}," only applies to custom ",[205,1995,1987],{}," types with a ",[205,1998,1983],{}," constraint. Well-known formats like ",[205,2001,236],{},[205,2003,2004],{},"StrURL",", and ",[205,2007,2008],{},"FormatDomain"," use their standard maximum lengths without any buffer.",[329,2011,2013],{"className":331,"code":2012,"language":333,"meta":334,"style":334},"\u002F\u002F Custom string format with maxLength\ntype Username = FormatString\u003C{maxLength: 50}>;\n\ninterface User {\n    id: FormatUUIDv7;\n    username: Username;\n}\n\n\u002F\u002F Default lengthBuffer is 1.5\nconst users = toDrizzlePGTable\u003CUser>('users');\n\u002F\u002F username with maxLength 50 → varchar(75)\n\n\u002F\u002F Custom lengthBuffer of 2.0\nconst users = toDrizzlePGTable\u003CUser>('users', undefined, {lengthBuffer: 2.0});\n\u002F\u002F username with maxLength 50 → varchar(100)\n",[205,2014,2015,2020,2047,2051,2059,2069,2080,2084,2088,2093,2122,2127,2131,2136,2180],{"__ignoreMap":334},[249,2016,2017],{"class":339,"line":340},[249,2018,2019],{"class":405},"\u002F\u002F Custom string format with maxLength\n",[249,2021,2022,2025,2028,2031,2034,2037,2039,2041,2044],{"class":339,"line":373},[249,2023,2024],{"class":474},"type",[249,2026,2027],{"class":478}," Username",[249,2029,2030],{"class":347}," =",[249,2032,2033],{"class":478}," FormatString",[249,2035,2036],{"class":347},"\u003C{",[249,2038,1983],{"class":488},[249,2040,492],{"class":347},[249,2042,2043],{"class":1046}," 50",[249,2045,2046],{"class":347},"}>;\n",[249,2048,2049],{"class":339,"line":402},[249,2050,462],{"emptyLinePlaceholder":461},[249,2052,2053,2055,2057],{"class":339,"line":409},[249,2054,475],{"class":474},[249,2056,479],{"class":478},[249,2058,482],{"class":347},[249,2060,2061,2063,2065,2067],{"class":339,"line":436},[249,2062,489],{"class":488},[249,2064,492],{"class":347},[249,2066,495],{"class":478},[249,2068,370],{"class":347},[249,2070,2071,2074,2076,2078],{"class":339,"line":458},[249,2072,2073],{"class":488},"    username",[249,2075,492],{"class":347},[249,2077,2027],{"class":478},[249,2079,370],{"class":347},[249,2081,2082],{"class":339,"line":465},[249,2083,622],{"class":347},[249,2085,2086],{"class":339,"line":471},[249,2087,462],{"emptyLinePlaceholder":461},[249,2089,2090],{"class":339,"line":485},[249,2091,2092],{"class":405},"\u002F\u002F Default lengthBuffer is 1.5\n",[249,2094,2095,2098,2100,2102,2104,2106,2108,2110,2112,2114,2116,2118,2120],{"class":339,"line":500},[249,2096,2097],{"class":474},"const",[249,2099,1674],{"class":351},[249,2101,648],{"class":347},[249,2103,652],{"class":651},[249,2105,655],{"class":347},[249,2107,658],{"class":478},[249,2109,661],{"class":347},[249,2111,664],{"class":351},[249,2113,367],{"class":347},[249,2115,669],{"class":364},[249,2117,367],{"class":347},[249,2119,697],{"class":351},[249,2121,370],{"class":347},[249,2123,2124],{"class":339,"line":512},[249,2125,2126],{"class":405},"\u002F\u002F username with maxLength 50 → varchar(75)\n",[249,2128,2129],{"class":339,"line":525},[249,2130,462],{"emptyLinePlaceholder":461},[249,2132,2133],{"class":339,"line":542},[249,2134,2135],{"class":405},"\u002F\u002F Custom lengthBuffer of 2.0\n",[249,2137,2138,2140,2142,2144,2146,2148,2150,2152,2154,2156,2158,2160,2162,2165,2167,2169,2171,2174,2176,2178],{"class":339,"line":555},[249,2139,2097],{"class":474},[249,2141,1674],{"class":351},[249,2143,648],{"class":347},[249,2145,652],{"class":651},[249,2147,655],{"class":347},[249,2149,658],{"class":478},[249,2151,661],{"class":347},[249,2153,664],{"class":351},[249,2155,367],{"class":347},[249,2157,669],{"class":364},[249,2159,367],{"class":347},[249,2161,383],{"class":347},[249,2163,2164],{"class":347}," undefined,",[249,2166,348],{"class":347},[249,2168,1979],{"class":488},[249,2170,492],{"class":347},[249,2172,2173],{"class":1046}," 2.0",[249,2175,355],{"class":347},[249,2177,697],{"class":351},[249,2179,370],{"class":347},[249,2181,2182],{"class":339,"line":573},[249,2183,2184],{"class":405},"\u002F\u002F username with maxLength 50 → varchar(100)\n",[1448,2186,2188],{"id":2187},"table-config-validation","Table Config Validation",[201,2190,2191],{},"The function validates that your tableConfig matches the TypeScript type",[329,2193,2195],{"className":331,"code":2194,"language":333,"meta":334,"style":334},"interface User {\n    id: string;\n    name: string;\n}\n\n\u002F\u002F ❌ Error: Column \"email\" exists in tableConfig but not in type \"User\"\nconst users = toDrizzlePGTable\u003CUser>('users', {\n    id: uuid('id').primaryKey(),\n    email: text('email'), \u002F\u002F This property doesn't exist in User!\n});\n",[205,2196,2197,2205,2215,2225,2229,2233,2238,2266,2292,2316],{"__ignoreMap":334},[249,2198,2199,2201,2203],{"class":339,"line":340},[249,2200,475],{"class":474},[249,2202,479],{"class":478},[249,2204,482],{"class":347},[249,2206,2207,2209,2211,2213],{"class":339,"line":373},[249,2208,489],{"class":488},[249,2210,492],{"class":347},[249,2212,520],{"class":478},[249,2214,370],{"class":347},[249,2216,2217,2219,2221,2223],{"class":339,"line":402},[249,2218,515],{"class":488},[249,2220,492],{"class":347},[249,2222,520],{"class":478},[249,2224,370],{"class":347},[249,2226,2227],{"class":339,"line":409},[249,2228,622],{"class":347},[249,2230,2231],{"class":339,"line":436},[249,2232,462],{"emptyLinePlaceholder":461},[249,2234,2235],{"class":339,"line":458},[249,2236,2237],{"class":405},"\u002F\u002F ❌ Error: Column \"email\" exists in tableConfig but not in type \"User\"\n",[249,2239,2240,2242,2244,2246,2248,2250,2252,2254,2256,2258,2260,2262,2264],{"class":339,"line":465},[249,2241,2097],{"class":474},[249,2243,1674],{"class":351},[249,2245,648],{"class":347},[249,2247,652],{"class":651},[249,2249,655],{"class":347},[249,2251,658],{"class":478},[249,2253,661],{"class":347},[249,2255,664],{"class":351},[249,2257,367],{"class":347},[249,2259,669],{"class":364},[249,2261,367],{"class":347},[249,2263,383],{"class":347},[249,2265,482],{"class":347},[249,2267,2268,2270,2272,2274,2276,2278,2280,2282,2284,2286,2288,2290],{"class":339,"line":471},[249,2269,489],{"class":488},[249,2271,492],{"class":347},[249,2273,685],{"class":651},[249,2275,664],{"class":351},[249,2277,367],{"class":347},[249,2279,692],{"class":364},[249,2281,367],{"class":347},[249,2283,697],{"class":351},[249,2285,700],{"class":347},[249,2287,703],{"class":651},[249,2289,706],{"class":351},[249,2291,709],{"class":347},[249,2293,2294,2296,2298,2300,2302,2304,2307,2309,2311,2313],{"class":339,"line":485},[249,2295,503],{"class":488},[249,2297,492],{"class":347},[249,2299,1372],{"class":651},[249,2301,664],{"class":351},[249,2303,367],{"class":347},[249,2305,2306],{"class":364},"email",[249,2308,367],{"class":347},[249,2310,697],{"class":351},[249,2312,383],{"class":347},[249,2314,2315],{"class":405}," \u002F\u002F This property doesn't exist in User!\n",[249,2317,2318,2320,2322],{"class":339,"line":500},[249,2319,355],{"class":347},[249,2321,697],{"class":351},[249,2323,370],{"class":347},[256,2325,2327],{"id":2326},"important-notes","Important Notes",[1448,2329,2331],{"id":2330},"import-format-types-correctly","Import Format Types Correctly",[2333,2334,2335,2336,2338,2339,2342,2343,2346],"info",{},"When using format types from ",[205,2337,228],{},", you must use ",[214,2340,2341],{},"regular imports"," (not ",[205,2344,2345],{},"import type",") for the runtime type metadata to be preserved.",[329,2348,2350],{"className":331,"code":2349,"language":333,"meta":334,"style":334},"\u002F\u002F ✅ Correct - regular import preserves metadata\nimport {FormatUUIDv7, FormatEmail} from '@mionjs\u002Ftype-formats\u002FStringFormats';\n\n\u002F\u002F ❌ Wrong - type import strips metadata\nimport type {FormatUUIDv7, FormatEmail} from '@mionjs\u002Ftype-formats';\n",[205,2351,2352,2357,2381,2385,2390],{"__ignoreMap":334},[249,2353,2354],{"class":339,"line":340},[249,2355,2356],{"class":405},"\u002F\u002F ✅ Correct - regular import preserves metadata\n",[249,2358,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379],{"class":339,"line":373},[249,2360,344],{"class":343},[249,2362,348],{"class":347},[249,2364,232],{"class":351},[249,2366,383],{"class":347},[249,2368,420],{"class":351},[249,2370,355],{"class":347},[249,2372,358],{"class":343},[249,2374,361],{"class":347},[249,2376,429],{"class":364},[249,2378,367],{"class":347},[249,2380,370],{"class":347},[249,2382,2383],{"class":339,"line":402},[249,2384,462],{"emptyLinePlaceholder":461},[249,2386,2387],{"class":339,"line":409},[249,2388,2389],{"class":405},"\u002F\u002F ❌ Wrong - type import strips metadata\n",[249,2391,2392,2394,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415],{"class":339,"line":436},[249,2393,344],{"class":343},[249,2395,2396],{"class":343}," type",[249,2398,348],{"class":347},[249,2400,232],{"class":351},[249,2402,383],{"class":347},[249,2404,420],{"class":351},[249,2406,355],{"class":347},[249,2408,358],{"class":343},[249,2410,361],{"class":347},[249,2412,228],{"class":364},[249,2414,367],{"class":347},[249,2416,370],{"class":347},[1448,2418,2420],{"id":2419},"nested-objects-vs-foreign-keys","Nested Objects vs Foreign Keys",[201,2422,2423],{},"Nested objects are stored as JSON. Use foreign key IDs for entity references:",[329,2425,2427],{"className":331,"code":2426,"language":333,"meta":334,"style":334},"\u002F\u002F ✅ Good: Profile is a value object - stored as JSON\ninterface User {\n    id: string;\n    profile: {bio: string; avatar: string};\n}\n\n\u002F\u002F ❌ Bad: Don't embed entire entities\ninterface Book {\n    id: string;\n    owner: User; \u002F\u002F This stores the entire User as JSON!\n}\n\n\u002F\u002F ✅ Good: Use foreign key ID instead\ninterface Book {\n    id: string;\n    ownerId: string; \u002F\u002F Reference by ID\n}\n",[205,2428,2429,2434,2442,2452,2480,2484,2488,2493,2502,2512,2526,2530,2534,2539,2547,2557,2571],{"__ignoreMap":334},[249,2430,2431],{"class":339,"line":340},[249,2432,2433],{"class":405},"\u002F\u002F ✅ Good: Profile is a value object - stored as JSON\n",[249,2435,2436,2438,2440],{"class":339,"line":373},[249,2437,475],{"class":474},[249,2439,479],{"class":478},[249,2441,482],{"class":347},[249,2443,2444,2446,2448,2450],{"class":339,"line":402},[249,2445,489],{"class":488},[249,2447,492],{"class":347},[249,2449,520],{"class":478},[249,2451,370],{"class":347},[249,2453,2454,2457,2459,2461,2464,2466,2468,2470,2473,2475,2477],{"class":339,"line":409},[249,2455,2456],{"class":488},"    profile",[249,2458,492],{"class":347},[249,2460,348],{"class":347},[249,2462,2463],{"class":488},"bio",[249,2465,492],{"class":347},[249,2467,520],{"class":478},[249,2469,536],{"class":347},[249,2471,2472],{"class":488}," avatar",[249,2474,492],{"class":347},[249,2476,520],{"class":478},[249,2478,2479],{"class":347},"};\n",[249,2481,2482],{"class":339,"line":436},[249,2483,622],{"class":347},[249,2485,2486],{"class":339,"line":458},[249,2487,462],{"emptyLinePlaceholder":461},[249,2489,2490],{"class":339,"line":465},[249,2491,2492],{"class":405},"\u002F\u002F ❌ Bad: Don't embed entire entities\n",[249,2494,2495,2497,2500],{"class":339,"line":471},[249,2496,475],{"class":474},[249,2498,2499],{"class":478}," Book",[249,2501,482],{"class":347},[249,2503,2504,2506,2508,2510],{"class":339,"line":485},[249,2505,489],{"class":488},[249,2507,492],{"class":347},[249,2509,520],{"class":478},[249,2511,370],{"class":347},[249,2513,2514,2517,2519,2521,2523],{"class":339,"line":500},[249,2515,2516],{"class":488},"    owner",[249,2518,492],{"class":347},[249,2520,479],{"class":478},[249,2522,536],{"class":347},[249,2524,2525],{"class":405}," \u002F\u002F This stores the entire User as JSON!\n",[249,2527,2528],{"class":339,"line":512},[249,2529,622],{"class":347},[249,2531,2532],{"class":339,"line":525},[249,2533,462],{"emptyLinePlaceholder":461},[249,2535,2536],{"class":339,"line":542},[249,2537,2538],{"class":405},"\u002F\u002F ✅ Good: Use foreign key ID instead\n",[249,2540,2541,2543,2545],{"class":339,"line":555},[249,2542,475],{"class":474},[249,2544,2499],{"class":478},[249,2546,482],{"class":347},[249,2548,2549,2551,2553,2555],{"class":339,"line":573},[249,2550,489],{"class":488},[249,2552,492],{"class":347},[249,2554,520],{"class":478},[249,2556,370],{"class":347},[249,2558,2559,2562,2564,2566,2568],{"class":339,"line":606},[249,2560,2561],{"class":488},"    ownerId",[249,2563,492],{"class":347},[249,2565,520],{"class":478},[249,2567,536],{"class":347},[249,2569,2570],{"class":405}," \u002F\u002F Reference by ID\n",[249,2572,2573],{"class":339,"line":619},[249,2574,622],{"class":347},[2576,2577,2578],"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 .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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}","Auto-generate Drizzle ORM table schemas from TypeScript types and mion Type Formats.","md",null,{"toc":26},{"title":68,"description":2579},"hZj5fpt5Quy8elhkWDqgCiwKncRIlMu7dMnlt2GOMFY",[2586,2588],{"title":58,"path":59,"stem":60,"description":2587,"children":-1},"Automatic serialization in mion using RunTypes.",{"title":72,"path":73,"stem":74,"description":2589,"children":-1},"How types are mapped to database columns when using mion Drizzle ORM package.",1778674524008]