[{"data":1,"prerenderedAt":1579},["ShallowReactive",2],{"navigation":3,"\u002Fintegrations\u002Fdatabase\u002Fsea-orm":335,"\u002Fintegrations\u002Fdatabase\u002Fsea-orm-surround":1574},[4,27,73,95,121,135,305,331],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"MSRV","\u002Fgetting-started\u002Fmsrv","1.getting-started\u002F9.msrv",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Schemas","i-lucide-shapes","\u002Fschemas","2.schemas",[33,37,41,45,49,53,57,61,65,69],{"title":34,"path":35,"stem":36},"Strings","\u002Fschemas\u002Fstrings","2.schemas\u002F1.strings",{"title":38,"path":39,"stem":40},"Custom rules","\u002Fschemas\u002Frules","2.schemas\u002F10.rules",{"title":42,"path":43,"stem":44},"Numbers","\u002Fschemas\u002Fnumbers","2.schemas\u002F2.numbers",{"title":46,"path":47,"stem":48},"Booleans, literals and enums","\u002Fschemas\u002Fprimitives","2.schemas\u002F3.primitives",{"title":50,"path":51,"stem":52},"Dates and times","\u002Fschemas\u002Fdates","2.schemas\u002F4.dates",{"title":54,"path":55,"stem":56},"Collections","\u002Fschemas\u002Fcollections","2.schemas\u002F5.collections",{"title":58,"path":59,"stem":60},"Dynamic objects","\u002Fschemas\u002Fobjects","2.schemas\u002F6.objects",{"title":62,"path":63,"stem":64},"Modifiers","\u002Fschemas\u002Fmodifiers","2.schemas\u002F7.modifiers",{"title":66,"path":67,"stem":68},"Combinators","\u002Fschemas\u002Fcombinators","2.schemas\u002F8.combinators",{"title":70,"path":71,"stem":72},"Other types","\u002Fschemas\u002Fspecial-types","2.schemas\u002F9.special-types",{"title":74,"icon":75,"path":76,"stem":77,"children":78,"page":26},"Structs","i-lucide-braces","\u002Fstructs","3.structs",[79,83,87,91],{"title":80,"path":81,"stem":82},"schema! macro","\u002Fstructs\u002Fschema-macro","3.structs\u002F1.schema-macro",{"title":84,"path":85,"stem":86},"#[derive(Validate)]","\u002Fstructs\u002Fderive","3.structs\u002F2.derive",{"title":88,"path":89,"stem":90},"Parse vs validate","\u002Fstructs\u002Fparse-vs-validate","3.structs\u002F3.parse-vs-validate",{"title":92,"path":93,"stem":94},"Lenient parsing","\u002Fstructs\u002Flenient","3.structs\u002F4.lenient",{"title":96,"icon":97,"path":98,"stem":99,"children":100,"page":26},"Errors","i-lucide-triangle-alert","\u002Ferrors","4.errors",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Error model","\u002Ferrors\u002Foverview","4.errors\u002F1.overview",{"title":106,"path":107,"stem":108},"Issue codes","\u002Ferrors\u002Fissue-codes","4.errors\u002F2.issue-codes",{"title":110,"path":111,"stem":112},"Formatting","\u002Ferrors\u002Fformatting","4.errors\u002F3.formatting",{"title":114,"path":115,"stem":116},"Custom messages","\u002Ferrors\u002Fcustom-messages","4.errors\u002F4.custom-messages",{"title":118,"path":119,"stem":120},"Translations","\u002Ferrors\u002Fi18n","4.errors\u002F5.i18n",{"title":122,"icon":123,"path":124,"stem":125,"children":126,"page":26},"OpenAPI","i-lucide-file-json","\u002Fopenapi","5.openapi",[127,131],{"title":128,"path":129,"stem":130},"JSON Schema and OpenAPI","\u002Fopenapi\u002Fjson-schema","5.openapi\u002F1.json-schema",{"title":132,"path":133,"stem":134},"Schema diff","\u002Fopenapi\u002Fdiff","5.openapi\u002F2.diff",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":26},"Integrations","i-lucide-plug","\u002Fintegrations","6.integrations",[141,191,209,223,245,259,273,291],{"title":142,"icon":143,"path":144,"stem":145,"children":146,"page":26},"Web frameworks","i-lucide-globe","\u002Fintegrations\u002Fweb","6.integrations\u002F1.web",[147,151,155,159,163,167,171,175,179,183,187],{"title":148,"path":149,"stem":150},"Web adapters overview","\u002Fintegrations\u002Fweb\u002Foverview","6.integrations\u002F1.web\u002F01.overview",{"title":152,"path":153,"stem":154},"vld-axum","\u002Fintegrations\u002Fweb\u002Faxum","6.integrations\u002F1.web\u002F02.axum",{"title":156,"path":157,"stem":158},"vld-actix","\u002Fintegrations\u002Fweb\u002Factix","6.integrations\u002F1.web\u002F03.actix",{"title":160,"path":161,"stem":162},"vld-ntex","\u002Fintegrations\u002Fweb\u002Fntex","6.integrations\u002F1.web\u002F04.ntex",{"title":164,"path":165,"stem":166},"vld-poem","\u002Fintegrations\u002Fweb\u002Fpoem","6.integrations\u002F1.web\u002F05.poem",{"title":168,"path":169,"stem":170},"vld-rama","\u002Fintegrations\u002Fweb\u002Frama","6.integrations\u002F1.web\u002F06.rama",{"title":172,"path":173,"stem":174},"vld-rocket","\u002Fintegrations\u002Fweb\u002Frocket","6.integrations\u002F1.web\u002F07.rocket",{"title":176,"path":177,"stem":178},"vld-salvo","\u002Fintegrations\u002Fweb\u002Fsalvo","6.integrations\u002F1.web\u002F08.salvo",{"title":180,"path":181,"stem":182},"vld-tower","\u002Fintegrations\u002Fweb\u002Ftower","6.integrations\u002F1.web\u002F09.tower",{"title":184,"path":185,"stem":186},"vld-warp","\u002Fintegrations\u002Fweb\u002Fwarp","6.integrations\u002F1.web\u002F10.warp",{"title":188,"path":189,"stem":190},"vld-tonic","\u002Fintegrations\u002Fweb\u002Ftonic","6.integrations\u002F1.web\u002F11.tonic",{"title":192,"icon":193,"path":194,"stem":195,"children":196,"page":26},"OpenAPI and JSON Schema","i-lucide-file-code","\u002Fintegrations\u002Fopenapi","6.integrations\u002F2.openapi",[197,201,205],{"title":198,"path":199,"stem":200},"vld-utoipa","\u002Fintegrations\u002Fopenapi\u002Futoipa","6.integrations\u002F2.openapi\u002F1.utoipa",{"title":202,"path":203,"stem":204},"vld-schemars","\u002Fintegrations\u002Fopenapi\u002Fschemars","6.integrations\u002F2.openapi\u002F2.schemars",{"title":206,"path":207,"stem":208},"vld-aide","\u002Fintegrations\u002Fopenapi\u002Faide","6.integrations\u002F2.openapi\u002F3.aide",{"title":210,"icon":211,"path":212,"stem":213,"children":214,"page":26},"Codegen and test data","i-lucide-wand","\u002Fintegrations\u002Fcodegen","6.integrations\u002F3.codegen",[215,219],{"title":216,"path":217,"stem":218},"vld-ts","\u002Fintegrations\u002Fcodegen\u002Fts","6.integrations\u002F3.codegen\u002F1.ts",{"title":220,"path":221,"stem":222},"vld-fake","\u002Fintegrations\u002Fcodegen\u002Ffake","6.integrations\u002F3.codegen\u002F2.fake",{"title":224,"icon":225,"path":226,"stem":227,"children":228,"page":26},"Databases","i-lucide-database","\u002Fintegrations\u002Fdatabase","6.integrations\u002F4.database",[229,233,237,241],{"title":230,"path":231,"stem":232},"vld-sqlx","\u002Fintegrations\u002Fdatabase\u002Fsqlx","6.integrations\u002F4.database\u002F1.sqlx",{"title":234,"path":235,"stem":236},"vld-diesel","\u002Fintegrations\u002Fdatabase\u002Fdiesel","6.integrations\u002F4.database\u002F2.diesel",{"title":238,"path":239,"stem":240},"vld-sea","\u002Fintegrations\u002Fdatabase\u002Fsea-orm","6.integrations\u002F4.database\u002F3.sea-orm",{"title":242,"path":243,"stem":244},"vld-surrealdb","\u002Fintegrations\u002Fdatabase\u002Fsurrealdb","6.integrations\u002F4.database\u002F4.surrealdb",{"title":246,"icon":247,"path":248,"stem":249,"children":250,"page":26},"Messaging","i-lucide-mail","\u002Fintegrations\u002Fmessaging","6.integrations\u002F5.messaging",[251,255],{"title":252,"path":253,"stem":254},"vld-redis","\u002Fintegrations\u002Fmessaging\u002Fredis","6.integrations\u002F5.messaging\u002F1.redis",{"title":256,"path":257,"stem":258},"vld-lapin","\u002Fintegrations\u002Fmessaging\u002Flapin","6.integrations\u002F5.messaging\u002F2.lapin",{"title":260,"icon":261,"path":262,"stem":263,"children":264,"page":26},"Config and CLI","i-lucide-terminal","\u002Fintegrations\u002Fconfig-cli","6.integrations\u002F6.config-cli",[265,269],{"title":266,"path":267,"stem":268},"vld-config","\u002Fintegrations\u002Fconfig-cli\u002Fconfig","6.integrations\u002F6.config-cli\u002F1.config",{"title":270,"path":271,"stem":272},"vld-clap","\u002Fintegrations\u002Fconfig-cli\u002Fclap","6.integrations\u002F6.config-cli\u002F2.clap",{"title":274,"icon":275,"path":276,"stem":277,"children":278,"page":26},"UI frameworks","i-lucide-monitor","\u002Fintegrations\u002Fui","6.integrations\u002F7.ui",[279,283,287],{"title":280,"path":281,"stem":282},"vld-dioxus","\u002Fintegrations\u002Fui\u002Fdioxus","6.integrations\u002F7.ui\u002F1.dioxus",{"title":284,"path":285,"stem":286},"vld-leptos","\u002Fintegrations\u002Fui\u002Fleptos","6.integrations\u002F7.ui\u002F2.leptos",{"title":288,"path":289,"stem":290},"vld-tauri","\u002Fintegrations\u002Fui\u002Ftauri","6.integrations\u002F7.ui\u002F3.tauri",{"title":292,"icon":293,"path":294,"stem":295,"children":296,"page":26},"Shared crates","i-lucide-package","\u002Fintegrations\u002Fshared","6.integrations\u002F8.shared",[297,301],{"title":298,"path":299,"stem":300},"vld-http-common","\u002Fintegrations\u002Fshared\u002Fhttp-common","6.integrations\u002F8.shared\u002F1.http-common",{"title":302,"path":303,"stem":304},"vld-integration-common","\u002Fintegrations\u002Fshared\u002Fintegration-common","6.integrations\u002F8.shared\u002F2.integration-common",{"title":306,"icon":307,"path":308,"stem":309,"children":310,"page":26},"Guides","i-lucide-book-open","\u002Fguides","7.guides",[311,315,319,323,327],{"title":312,"path":313,"stem":314},"Migration","\u002Fguides\u002Fmigration","7.guides\u002F1.migration",{"title":316,"path":317,"stem":318},"Security notes","\u002Fguides\u002Fsecurity","7.guides\u002F2.security",{"title":320,"path":321,"stem":322},"Performance","\u002Fguides\u002Fperformance","7.guides\u002F3.performance",{"title":324,"path":325,"stem":326},"Contributing","\u002Fguides\u002Fcontributing","7.guides\u002F4.contributing",{"title":328,"path":329,"stem":330},"FAQ","\u002Fguides\u002Ffaq","7.guides\u002F5.faq",{"title":332,"path":333,"stem":334},"Changelog","\u002Fchangelog","9.changelog",{"id":336,"title":238,"body":337,"description":1560,"extension":1561,"links":1562,"meta":1571,"navigation":789,"path":239,"seo":1572,"stem":240,"__hash__":1573},"docs\u002F6.integrations\u002F4.database\u002F3.sea-orm.md",{"type":338,"value":339,"toc":1553},"minimark",[340,366,371,501,505,646,661,729,742,746,1344,1348,1473,1477,1549],[341,342,343,346,347,350,351,354,355,358,359,350,362,365],"p",{},[344,345,238],"code",{}," turns the ",[344,348,349],{},"Set"," \u002F ",[344,352,353],{},"Unchanged"," values of a SeaORM ",[344,356,357],{},"ActiveModel"," into a JSON object and validates it against a vld schema, so invalid data never reaches ",[344,360,361],{},"insert()",[344,363,364],{},"update()",".",[367,368,370],"h2",{"id":369},"install","Install",[372,373,379],"pre",{"className":374,"code":375,"filename":376,"language":377,"meta":378,"style":378},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nvld = \"0.5\"\nvld-sea = \"0.5\"  # SeaORM 1 by default\nsea-orm = { version = \"1\", features = [\"macros\", \"sqlx-sqlite\", \"runtime-tokio-rustls\"] }\n","Cargo.toml","toml","",[344,380,381,397,417,436],{"__ignoreMap":378},[382,383,386,390,394],"span",{"class":384,"line":385},"line",1,[382,387,389],{"class":388},"sMK4o","[",[382,391,393],{"class":392},"sBMFI","dependencies",[382,395,396],{"class":388},"]\n",[382,398,400,404,407,410,414],{"class":384,"line":399},2,[382,401,403],{"class":402},"sTEyZ","vld ",[382,405,406],{"class":388},"=",[382,408,409],{"class":388}," \"",[382,411,413],{"class":412},"sfazB","0.5",[382,415,416],{"class":388},"\"\n",[382,418,420,423,425,427,429,432],{"class":384,"line":419},3,[382,421,422],{"class":402},"vld-sea ",[382,424,406],{"class":388},[382,426,409],{"class":388},[382,428,413],{"class":412},[382,430,431],{"class":388},"\"",[382,433,435],{"class":434},"sHwdD","  # SeaORM 1 by default\n",[382,437,439,442,444,447,450,452,454,457,459,462,465,467,470,472,475,477,479,481,484,486,488,490,493,495,498],{"class":384,"line":438},4,[382,440,441],{"class":402},"sea-orm ",[382,443,406],{"class":388},[382,445,446],{"class":388}," {",[382,448,449],{"class":402}," version ",[382,451,406],{"class":388},[382,453,409],{"class":388},[382,455,456],{"class":412},"1",[382,458,431],{"class":388},[382,460,461],{"class":388},",",[382,463,464],{"class":402}," features ",[382,466,406],{"class":388},[382,468,469],{"class":388}," [",[382,471,431],{"class":388},[382,473,474],{"class":412},"macros",[382,476,431],{"class":388},[382,478,461],{"class":388},[382,480,409],{"class":388},[382,482,483],{"class":412},"sqlx-sqlite",[382,485,431],{"class":388},[382,487,461],{"class":388},[382,489,409],{"class":388},[382,491,492],{"class":412},"runtime-tokio-rustls",[382,494,431],{"class":388},[382,496,497],{"class":388},"]",[382,499,500],{"class":388}," }\n",[367,502,504],{"id":503},"features","Features",[506,507,508,524],"table",{},[509,510,511],"thead",{},[512,513,514,518,521],"tr",{},[515,516,517],"th",{},"Feature",[515,519,520],{},"Default",[515,522,523],{},"Effect",[525,526,527,541,553,565,577,593,605,620,634],"tbody",{},[512,528,529,535,538],{},[530,531,532],"td",{},[344,533,534],{},"sea-orm-1",[530,536,537],{},"yes",[530,539,540],{},"Build against SeaORM 1",[512,542,543,548,550],{},[530,544,545],{},[344,546,547],{},"sea-orm-2",[530,549],{},[530,551,552],{},"Build against SeaORM 2 (Rust 1.94+)",[512,554,555,560,562],{},[530,556,557],{},[344,558,559],{},"with-json",[530,561],{},[530,563,564],{},"Map JSON columns",[512,566,567,572,574],{},[530,568,569],{},[344,570,571],{},"with-chrono",[530,573],{},[530,575,576],{},"Map chrono date \u002F time \u002F datetime columns",[512,578,579,584,586],{},[530,580,581],{},[344,582,583],{},"with-time",[530,585],{},[530,587,588,589,592],{},"Map ",[344,590,591],{},"time"," date \u002F time \u002F datetime columns",[512,594,595,600,602],{},[530,596,597],{},[344,598,599],{},"with-uuid",[530,601],{},[530,603,604],{},"Map UUID columns",[512,606,607,612,614],{},[530,608,609],{},[344,610,611],{},"with-rust_decimal",[530,613],{},[530,615,588,616,619],{},[344,617,618],{},"rust_decimal"," columns",[512,621,622,627,629],{},[530,623,624],{},[344,625,626],{},"with-bigdecimal",[530,628],{},[530,630,588,631,619],{},[344,632,633],{},"bigdecimal",[512,635,636,641,643],{},[530,637,638],{},[344,639,640],{},"postgres-array",[530,642],{},[530,644,645],{},"Map Postgres array columns",[341,647,648,649,350,651,653,654,657,658,365],{},"Exactly one of ",[344,650,534],{},[344,652,547],{}," must be enabled. Each ",[344,655,656],{},"with-*"," feature also enables the SeaORM feature of the same name. Without it, columns of that type are passed to the schema as ",[344,659,660],{},"null",[372,662,664],{"className":374,"code":663,"language":377,"meta":378,"style":378},"vld-sea = { version = \"0.5\", default-features = false, features = [\"sea-orm-2\", \"with-chrono\", \"with-uuid\"] }\n",[344,665,666],{"__ignoreMap":378},[382,667,668,670,672,674,676,678,680,682,684,686,689,691,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727],{"class":384,"line":385},[382,669,422],{"class":402},[382,671,406],{"class":388},[382,673,446],{"class":388},[382,675,449],{"class":402},[382,677,406],{"class":388},[382,679,409],{"class":388},[382,681,413],{"class":412},[382,683,431],{"class":388},[382,685,461],{"class":388},[382,687,688],{"class":402}," default-features ",[382,690,406],{"class":388},[382,692,694],{"class":693},"sfNiH"," false",[382,696,461],{"class":388},[382,698,464],{"class":402},[382,700,406],{"class":388},[382,702,469],{"class":388},[382,704,431],{"class":388},[382,706,547],{"class":412},[382,708,431],{"class":388},[382,710,461],{"class":388},[382,712,409],{"class":388},[382,714,571],{"class":412},[382,716,431],{"class":388},[382,718,461],{"class":388},[382,720,409],{"class":388},[382,722,599],{"class":412},[382,724,431],{"class":388},[382,726,497],{"class":388},[382,728,500],{"class":388},[341,730,731,732,734,735,737,738,741],{},"MSRV: 1.85 with ",[344,733,534],{},", 1.94 with ",[344,736,547],{}," (see ",[739,740,23],"a",{"href":24},").",[367,743,745],{"id":744},"example","Example",[372,747,751],{"className":748,"code":749,"language":750,"meta":378,"style":378},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use sea_orm::Set;\nuse vld_sea::prelude::*;\n\nvld::schema! {\n    #[derive(Debug, Clone)]\n    pub struct UserInput {\n        pub name: String  => vld::string().min(1).max(100),\n        pub email: String => vld::string().email(),\n    }\n}\n\nmod user {\n    use sea_orm::entity::prelude::*;\n\n    #[derive(Clone, Debug, PartialEq, DeriveEntityModel)]\n    #[sea_orm(table_name = \"users\")]\n    pub struct Model {\n        #[sea_orm(primary_key)]\n        pub id: i32,\n        pub name: String,\n        pub email: String,\n    }\n\n    #[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]\n    pub enum Relation {}\n\n    \u002F\u002F Validate on every insert \u002F update:\n    vld_sea::impl_vld_before_save!(ActiveModel, super::UserInput);\n}\n\nfn check() {\n    let am = user::ActiveModel {\n        id: Set(1),\n        name: Set(\"\".to_owned()),\n        email: Set(\"not-an-email\".to_owned()),\n    };\n    assert!(validate_active::\u003CUserInput, _>(&am).is_err());\n}\n","rust",[344,752,753,770,785,791,805,828,843,892,921,927,933,938,949,968,973,1002,1026,1038,1053,1069,1082,1095,1100,1105,1137,1151,1156,1162,1190,1195,1200,1214,1233,1250,1273,1298,1304,1339],{"__ignoreMap":378},[382,754,755,759,762,765,767],{"class":384,"line":385},[382,756,758],{"class":757},"sbssI","use",[382,760,761],{"class":392}," sea_orm",[382,763,764],{"class":388},"::",[382,766,349],{"class":392},[382,768,769],{"class":388},";\n",[382,771,772,774,777,779,782],{"class":384,"line":399},[382,773,758],{"class":757},[382,775,776],{"class":392}," vld_sea",[382,778,764],{"class":388},[382,780,781],{"class":392},"prelude",[382,783,784],{"class":388},"::*;\n",[382,786,787],{"class":384,"line":419},[382,788,790],{"emptyLinePlaceholder":789},true,"\n",[382,792,793,796,798,802],{"class":384,"line":438},[382,794,795],{"class":392},"vld",[382,797,764],{"class":388},[382,799,801],{"class":800},"s2Zo4","schema!",[382,803,804],{"class":388}," {\n",[382,806,808,811,814,817,820,822,825],{"class":384,"line":807},5,[382,809,810],{"class":388},"    #[",[382,812,813],{"class":402},"derive",[382,815,816],{"class":388},"(",[382,818,819],{"class":392},"Debug",[382,821,461],{"class":388},[382,823,824],{"class":392}," Clone",[382,826,827],{"class":388},")]\n",[382,829,831,835,838,841],{"class":384,"line":830},6,[382,832,834],{"class":833},"spNyl","    pub",[382,836,837],{"class":833}," struct",[382,839,840],{"class":392}," UserInput",[382,842,804],{"class":388},[382,844,846,849,852,855,858,861,864,866,869,872,875,877,879,881,884,886,889],{"class":384,"line":845},7,[382,847,848],{"class":833},"        pub",[382,850,851],{"class":402}," name",[382,853,854],{"class":388},":",[382,856,857],{"class":392}," String",[382,859,860],{"class":388},"  =>",[382,862,863],{"class":392}," vld",[382,865,764],{"class":388},[382,867,868],{"class":800},"string",[382,870,871],{"class":388},"().",[382,873,874],{"class":800},"min",[382,876,816],{"class":388},[382,878,456],{"class":757},[382,880,741],{"class":388},[382,882,883],{"class":800},"max",[382,885,816],{"class":388},[382,887,888],{"class":757},"100",[382,890,891],{"class":388},"),\n",[382,893,895,897,900,902,904,907,909,911,913,915,918],{"class":384,"line":894},8,[382,896,848],{"class":833},[382,898,899],{"class":402}," email",[382,901,854],{"class":388},[382,903,857],{"class":392},[382,905,906],{"class":388}," =>",[382,908,863],{"class":392},[382,910,764],{"class":388},[382,912,868],{"class":800},[382,914,871],{"class":388},[382,916,917],{"class":800},"email",[382,919,920],{"class":388},"(),\n",[382,922,924],{"class":384,"line":923},9,[382,925,926],{"class":388},"    }\n",[382,928,930],{"class":384,"line":929},10,[382,931,932],{"class":388},"}\n",[382,934,936],{"class":384,"line":935},11,[382,937,790],{"emptyLinePlaceholder":789},[382,939,941,944,947],{"class":384,"line":940},12,[382,942,943],{"class":833},"mod",[382,945,946],{"class":392}," user",[382,948,804],{"class":388},[382,950,952,955,957,959,962,964,966],{"class":384,"line":951},13,[382,953,954],{"class":757},"    use",[382,956,761],{"class":392},[382,958,764],{"class":388},[382,960,961],{"class":392},"entity",[382,963,764],{"class":388},[382,965,781],{"class":392},[382,967,784],{"class":388},[382,969,971],{"class":384,"line":970},14,[382,972,790],{"emptyLinePlaceholder":789},[382,974,976,978,980,982,985,987,990,992,995,997,1000],{"class":384,"line":975},15,[382,977,810],{"class":388},[382,979,813],{"class":402},[382,981,816],{"class":388},[382,983,984],{"class":392},"Clone",[382,986,461],{"class":388},[382,988,989],{"class":392}," Debug",[382,991,461],{"class":388},[382,993,994],{"class":392}," PartialEq",[382,996,461],{"class":388},[382,998,999],{"class":392}," DeriveEntityModel",[382,1001,827],{"class":388},[382,1003,1005,1007,1010,1012,1015,1017,1019,1022,1024],{"class":384,"line":1004},16,[382,1006,810],{"class":388},[382,1008,1009],{"class":402},"sea_orm",[382,1011,816],{"class":388},[382,1013,1014],{"class":402},"table_name ",[382,1016,406],{"class":388},[382,1018,409],{"class":388},[382,1020,1021],{"class":412},"users",[382,1023,431],{"class":388},[382,1025,827],{"class":388},[382,1027,1029,1031,1033,1036],{"class":384,"line":1028},17,[382,1030,834],{"class":833},[382,1032,837],{"class":833},[382,1034,1035],{"class":392}," Model",[382,1037,804],{"class":388},[382,1039,1041,1044,1046,1048,1051],{"class":384,"line":1040},18,[382,1042,1043],{"class":388},"        #[",[382,1045,1009],{"class":402},[382,1047,816],{"class":388},[382,1049,1050],{"class":402},"primary_key",[382,1052,827],{"class":388},[382,1054,1056,1058,1061,1063,1066],{"class":384,"line":1055},19,[382,1057,848],{"class":833},[382,1059,1060],{"class":402}," id",[382,1062,854],{"class":388},[382,1064,1065],{"class":392}," i32",[382,1067,1068],{"class":388},",\n",[382,1070,1072,1074,1076,1078,1080],{"class":384,"line":1071},20,[382,1073,848],{"class":833},[382,1075,851],{"class":402},[382,1077,854],{"class":388},[382,1079,857],{"class":392},[382,1081,1068],{"class":388},[382,1083,1085,1087,1089,1091,1093],{"class":384,"line":1084},21,[382,1086,848],{"class":833},[382,1088,899],{"class":402},[382,1090,854],{"class":388},[382,1092,857],{"class":392},[382,1094,1068],{"class":388},[382,1096,1098],{"class":384,"line":1097},22,[382,1099,926],{"class":388},[382,1101,1103],{"class":384,"line":1102},23,[382,1104,790],{"emptyLinePlaceholder":789},[382,1106,1108,1110,1112,1114,1117,1119,1121,1123,1125,1127,1130,1132,1135],{"class":384,"line":1107},24,[382,1109,810],{"class":388},[382,1111,813],{"class":402},[382,1113,816],{"class":388},[382,1115,1116],{"class":392},"Copy",[382,1118,461],{"class":388},[382,1120,824],{"class":392},[382,1122,461],{"class":388},[382,1124,989],{"class":392},[382,1126,461],{"class":388},[382,1128,1129],{"class":392}," EnumIter",[382,1131,461],{"class":388},[382,1133,1134],{"class":392}," DeriveRelation",[382,1136,827],{"class":388},[382,1138,1140,1142,1145,1148],{"class":384,"line":1139},25,[382,1141,834],{"class":833},[382,1143,1144],{"class":833}," enum",[382,1146,1147],{"class":392}," Relation",[382,1149,1150],{"class":388}," {}\n",[382,1152,1154],{"class":384,"line":1153},26,[382,1155,790],{"emptyLinePlaceholder":789},[382,1157,1159],{"class":384,"line":1158},27,[382,1160,1161],{"class":434},"    \u002F\u002F Validate on every insert \u002F update:\n",[382,1163,1165,1168,1170,1173,1175,1177,1179,1182,1184,1187],{"class":384,"line":1164},28,[382,1166,1167],{"class":392},"    vld_sea",[382,1169,764],{"class":388},[382,1171,1172],{"class":800},"impl_vld_before_save!",[382,1174,816],{"class":388},[382,1176,357],{"class":392},[382,1178,461],{"class":388},[382,1180,1181],{"class":402}," super",[382,1183,764],{"class":388},[382,1185,1186],{"class":392},"UserInput",[382,1188,1189],{"class":388},");\n",[382,1191,1193],{"class":384,"line":1192},29,[382,1194,932],{"class":388},[382,1196,1198],{"class":384,"line":1197},30,[382,1199,790],{"emptyLinePlaceholder":789},[382,1201,1203,1206,1209,1212],{"class":384,"line":1202},31,[382,1204,1205],{"class":757},"fn",[382,1207,1208],{"class":800}," check",[382,1210,1211],{"class":388},"()",[382,1213,804],{"class":388},[382,1215,1217,1220,1223,1225,1227,1229,1231],{"class":384,"line":1216},32,[382,1218,1219],{"class":833},"    let",[382,1221,1222],{"class":402}," am ",[382,1224,406],{"class":388},[382,1226,946],{"class":392},[382,1228,764],{"class":388},[382,1230,357],{"class":392},[382,1232,804],{"class":388},[382,1234,1236,1239,1241,1244,1246,1248],{"class":384,"line":1235},33,[382,1237,1238],{"class":402},"        id",[382,1240,854],{"class":388},[382,1242,1243],{"class":800}," Set",[382,1245,816],{"class":388},[382,1247,456],{"class":757},[382,1249,891],{"class":388},[382,1251,1253,1256,1258,1260,1262,1265,1267,1270],{"class":384,"line":1252},34,[382,1254,1255],{"class":402},"        name",[382,1257,854],{"class":388},[382,1259,1243],{"class":800},[382,1261,816],{"class":388},[382,1263,1264],{"class":388},"\"\"",[382,1266,365],{"class":388},[382,1268,1269],{"class":800},"to_owned",[382,1271,1272],{"class":388},"()),\n",[382,1274,1276,1279,1281,1283,1285,1287,1290,1292,1294,1296],{"class":384,"line":1275},35,[382,1277,1278],{"class":402},"        email",[382,1280,854],{"class":388},[382,1282,1243],{"class":800},[382,1284,816],{"class":388},[382,1286,431],{"class":388},[382,1288,1289],{"class":412},"not-an-email",[382,1291,431],{"class":388},[382,1293,365],{"class":388},[382,1295,1269],{"class":800},[382,1297,1272],{"class":388},[382,1299,1301],{"class":384,"line":1300},36,[382,1302,1303],{"class":388},"    };\n",[382,1305,1307,1310,1312,1315,1318,1320,1322,1325,1328,1331,1333,1336],{"class":384,"line":1306},37,[382,1308,1309],{"class":800},"    assert!",[382,1311,816],{"class":388},[382,1313,1314],{"class":800},"validate_active",[382,1316,1317],{"class":388},"::\u003C",[382,1319,1186],{"class":392},[382,1321,461],{"class":388},[382,1323,1324],{"class":402}," _",[382,1326,1327],{"class":388},">(&",[382,1329,1330],{"class":402},"am",[382,1332,741],{"class":388},[382,1334,1335],{"class":800},"is_err",[382,1337,1338],{"class":388},"());\n",[382,1340,1342],{"class":384,"line":1341},38,[382,1343,932],{"class":388},[367,1345,1347],{"id":1346},"api","API",[1349,1350,1351,1366,1382,1391,1407,1423,1429,1450,1467],"ul",{},[1352,1353,1354,1357,1358,350,1360,1362,1363,365],"li",{},[344,1355,1356],{},"validate_active::\u003CS, A>(&active_model)"," — validate the ",[344,1359,349],{},[344,1361,353],{}," fields; returns the parsed ",[344,1364,1365],{},"S",[1352,1367,1368,1371,1372,1375,1376,1379,1380,365],{},[344,1369,1370],{},"validate_model::\u003CS, T>(&value)"," — validate any ",[344,1373,1374],{},"Serialize"," value (a ",[344,1377,1378],{},"Model",", an input DTO); returns ",[344,1381,1365],{},[1352,1383,1384,1387,1388,365],{},[344,1385,1386],{},"validate_json::\u003CS>(&json)"," — validate a raw ",[344,1389,1390],{},"serde_json::Value",[1352,1392,1393,1396,1397,1399,1400,1403,1404,365],{},[344,1394,1395],{},"before_save::\u003CS, A>(&active_model)"," — like ",[344,1398,1314],{},", but returns ",[344,1401,1402],{},"Result\u003C(), DbErr>"," for use inside ",[344,1405,1406],{},"ActiveModelBehavior::before_save",[1352,1408,1409,350,1412,1415,1416,1419,1420,365],{},[344,1410,1411],{},"impl_vld_before_save!(ActiveModel, Schema)",[344,1413,1414],{},"impl_vld_before_save!(ActiveModel, insert: A, update: B)"," — implement ",[344,1417,1418],{},"ActiveModelBehavior"," with validation in ",[344,1421,1422],{},"before_save",[1352,1424,1425,1428],{},[344,1426,1427],{},"active_model_to_json(&active_model)"," — the JSON object the schema sees.",[1352,1430,1431,1434,1435,1438,1439,1438,1442,1438,1445,1438,1448,741],{},[344,1432,1433],{},"Validated\u003CS, T>"," — validated wrapper (",[344,1436,1437],{},"new",", ",[344,1440,1441],{},"inner",[344,1443,1444],{},"into_inner",[344,1446,1447],{},"Deref",[344,1449,1374],{},[1352,1451,1452,1455,1456,1459,1460,1463,1464,365],{},[344,1453,1454],{},"VldSeaError"," — ",[344,1457,1458],{},"Validation(VldError)"," or ",[344,1461,1462],{},"Serialization(String)","; converts into ",[344,1465,1466],{},"DbErr::Custom",[1352,1468,1469,1472],{},[344,1470,1471],{},"vld_sea::sea_orm"," — the selected SeaORM crate, re-exported.",[367,1474,1476],{"id":1475},"gotchas","Gotchas",[1349,1478,1479,1503,1510,1537],{},[1352,1480,1481,1488,1489,1492,1493,350,1496,1499,1500,1502],{},[1482,1483,1484,1487],"strong",{},[344,1485,1486],{},"NotSet"," fields are omitted."," For partial updates, use a schema whose fields are ",[344,1490,1491],{},".optional()",", or the ",[344,1494,1495],{},"insert:",[344,1497,1498],{},"update:"," form of ",[344,1501,1172],{}," with a separate update schema.",[1352,1504,1505,1506,1509],{},"Column names are the entity's column names (",[344,1507,1508],{},"Column::as_str()","), not Rust field names, if the two differ.",[1352,1511,1512,1513,1516,1517,1520,1521,1524,1525,1528,1529,1532,1533,1536],{},"Values map like ",[344,1514,1515],{},"serde_json::to_value"," of the Rust type: ",[344,1518,1519],{},"Bytes"," as an array of ",[344,1522,1523],{},"u8",", chrono \u002F time dates as ",[344,1526,1527],{},"YYYY-MM-DD",", zoned datetimes as RFC 3339, UUIDs and decimals as strings, ",[344,1530,1531],{},"f32"," through its decimal form. On SeaORM 2, ",[344,1534,1535],{},"ActiveEnum"," values map to their string value.",[1352,1538,1539,1540,1542,1543,1546,1547,365],{},"A column type whose ",[344,1541,656],{}," feature is off, and a ",[344,1544,1545],{},"None"," value, become ",[344,1548,660],{},[1550,1551,1552],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}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 .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 .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 .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":378,"searchDepth":399,"depth":419,"links":1554},[1555,1556,1557,1558,1559],{"id":369,"depth":399,"text":370},{"id":503,"depth":399,"text":504},{"id":744,"depth":399,"text":745},{"id":1346,"depth":399,"text":1347},{"id":1475,"depth":399,"text":1476},"Validate SeaORM ActiveModels before insert and update, manually or in before_save.","md",[1563,1568],{"label":1564,"icon":1565,"to":1566,"target":1567},"crates.io","i-simple-icons-rust","https:\u002F\u002Fcrates.io\u002Fcrates\u002Fvld-sea","_blank",{"label":1569,"icon":307,"to":1570,"target":1567},"docs.rs","https:\u002F\u002Fdocs.rs\u002Fvld-sea",{},{"title":238,"description":1560},"FEzFcqRWCI62DTiAE-AdvZnxFAGURWfeFdW6Y8-yylM",[1575,1577],{"title":234,"path":235,"stem":236,"description":1576,"children":-1},"Validate Insertable structs before insert and use validated column types in Diesel models and filters.",{"title":242,"path":243,"stem":244,"description":1578,"children":-1},"Validate JSON documents before create, insert and merge, and after select — with any SurrealDB SDK.",1794036362425]