[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-appwrite-appwrite-rust":3,"mdc--8zph5z-key":38,"related-org-appwrite-appwrite-rust":3143,"related-repo-appwrite-appwrite-rust":3313},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":28,"repoUrl":29,"updatedAt":30,"license":31,"forks":32,"topics":33,"repo":34,"sourceUrl":36,"mdContent":37},"appwrite-rust","build server-side applications with Appwrite","Appwrite Rust SDK skill. Use when building server-side Rust applications with Appwrite. Covers async client setup with API keys, user management, TablesDB database\u002Ftable\u002Frow operations, file storage, function executions, permissions, queries, and error handling. Uses the crates.io `appwrite` package and Tokio.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"appwrite","Appwrite","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fappwrite.png",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"Auth","auth","tag",{"name":17,"slug":18,"type":15},"File Storage","file-storage",{"name":20,"slug":21,"type":15},"Database","database",{"name":23,"slug":24,"type":15},"Rust","rust",{"name":26,"slug":27,"type":15},"API Development","api-development",23,"https:\u002F\u002Fgithub.com\u002Fappwrite\u002Fskills","2026-07-12T08:45:25.167378",null,0,[],{"repoUrl":29,"stars":28,"forks":32,"topics":35,"description":31},[],"https:\u002F\u002Fgithub.com\u002Fappwrite\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Fappwrite-rust","---\nname: appwrite-rust\ndescription: Appwrite Rust SDK skill. Use when building server-side Rust applications with Appwrite. Covers async client setup with API keys, user management, TablesDB database\u002Ftable\u002Frow operations, file storage, function executions, permissions, queries, and error handling. Uses the crates.io `appwrite` package and Tokio.\n---\n\n\n# Appwrite Rust SDK\n\n## Installation\n\n```bash\ncargo add appwrite\ncargo add tokio --features full\ncargo add serde_json\n```\n\nOr add dependencies manually:\n\n```toml\n[dependencies]\nappwrite = \"0.3.0\"\ntokio = { version = \"1\", features = [\"full\"] }\nserde_json = \"1\"\n```\n\n## Setting Up the Client\n\nThe Rust SDK is async. Use it from a Tokio runtime and authenticate server-side with an API key.\n\n```rust\nuse appwrite::Client;\nuse std::env;\n\nlet client = Client::new()\n    .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n    .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n    .set_key(env::var(\"APPWRITE_API_KEY\")?);\n```\n\n### Complete server skeleton\n\n```rust\nuse appwrite::query::Query;\nuse appwrite::services::Users;\nuse appwrite::Client;\nuse std::env;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let client = Client::new()\n        .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n        .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n        .set_key(env::var(\"APPWRITE_API_KEY\")?);\n\n    let users = Users::new(&client);\n    let _list = users\n        .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n        .await?;\n\n    Ok(())\n}\n```\n\n## Code Examples\n\n### User Management\n\n```rust\nuse appwrite::id::ID;\nuse appwrite::query::Query;\nuse appwrite::services::Users;\n\nlet users = Users::new(&client);\n\n\u002F\u002F Create user\nlet _user = users\n    .create(\n        ID::unique(),\n        Some(\"user@example.com\"),\n        None,\n        Some(\"password123\"),\n        Some(\"User Name\"),\n    )\n    .await?;\n\n\u002F\u002F List users\nlet _list = users\n    .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Get user\nlet _fetched = users.get(\"[USER_ID]\").await?;\n\n\u002F\u002F Delete user\nusers.delete(\"[USER_ID]\").await?;\n```\n\n### Database Operations\n\n> **Note:** Use `TablesDB` for new code. Only use `Databases` if the existing project explicitly depends on the legacy Databases API.\n>\n> **Rust SDK calling convention:** Methods are async, use positional parameters, and represent optional API parameters as `Option\u003CT>`. Pass `None` for optional values you are not setting.\n\n```rust\nuse appwrite::id::ID;\nuse appwrite::permission::Permission;\nuse appwrite::query::Query;\nuse appwrite::role::Role;\nuse appwrite::services::TablesDB;\nuse serde_json::json;\n\nlet tables_db = TablesDB::new(&client);\n\n\u002F\u002F Create database\nlet _database = tables_db\n    .create(ID::unique(), \"My Database\", Some(true))\n    .await?;\n\n\u002F\u002F Create table\nlet _table = tables_db\n    .create_table(\n        \"[DATABASE_ID]\",\n        ID::unique(),\n        \"articles\",\n        Some(vec![\n            Permission::read(Role::any()).to_string(),\n            Permission::create(Role::users(None)).to_string(),\n        ]),\n        Some(true),\n        Some(true),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Create row\nlet _row = tables_db\n    .create_row(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        ID::unique(),\n        json!({\n            \"title\": \"Hello World\",\n            \"done\": false\n        }),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Query rows\nlet _rows = tables_db\n    .list_rows(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        Some(vec![\n            Query::equal(\"done\", false).to_string(),\n            Query::limit(10).to_string(),\n        ]),\n        None,\n        Some(true),\n        None,\n    )\n    .await?;\n\n\u002F\u002F Get row\nlet _row = tables_db\n    .get_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None, None)\n    .await?;\n\n\u002F\u002F Update row\nlet _updated = tables_db\n    .update_row(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"[ROW_ID]\",\n        Some(json!({ \"done\": true })),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Delete row\ntables_db\n    .delete_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None)\n    .await?;\n```\n\n#### String Column Types\n\n> **Note:** The legacy `string` column type is deprecated. Use explicit string column types for new tables.\n\n| Type | Max characters | Indexing | Storage |\n|------|---------------|----------|---------|\n| `varchar` | 16,383 | Full index (if size \u003C= 768) | Inline in row |\n| `text` | 16,383 | Prefix only | Off-page |\n| `mediumtext` | 4,194,303 | Prefix only | Off-page |\n| `longtext` | 1,073,741,823 | Prefix only | Off-page |\n\n- `varchar` is stored inline and counts toward the 64 KB row size limit. Prefer it for short, indexed fields like names, slugs, and identifiers.\n- `text`, `mediumtext`, and `longtext` are stored off-page, so they do not consume the row size budget. `size` is not required for these types.\n\n```rust\nuse appwrite::enums::{OrderBy, TablesDBIndexType};\n\n\u002F\u002F Short, indexed string\nlet _title = tables_db\n    .create_varchar_column(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"title\",\n        255,\n        true,\n        None,\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Off-page longer text\nlet _summary = tables_db\n    .create_text_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"summary\", false, None, None, None)\n    .await?;\n\nlet _body = tables_db\n    .create_mediumtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"body\", false, None, None, None)\n    .await?;\n\nlet _raw_data = tables_db\n    .create_longtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"raw_data\", false, None, None, None)\n    .await?;\n\n\u002F\u002F Index only the varchar column fully.\nlet _index = tables_db\n    .create_index(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"title_idx\",\n        TablesDBIndexType::Key,\n        vec![\"title\"],\n        Some(vec![OrderBy::Asc]),\n        Some(vec![255]),\n    )\n    .await?;\n```\n\n### Query Methods\n\n`TablesDB` methods accept `Option\u003CVec\u003CString>>` for queries. Convert each `Query` to a string.\n\n```rust\nuse appwrite::query::Query;\nuse serde_json::Value;\n\nlet queries = vec![\n    Query::equal(\"status\", \"published\").to_string(),\n    Query::not_equal(\"archived\", true).to_string(),\n    Query::greater_than(\"views\", 100).to_string(),\n    Query::less_than_equal(\"priority\", 5).to_string(),\n    Query::between(\"score\", 1, 100).to_string(),\n    Query::is_not_null(\"publishedAt\").to_string(),\n    Query::search(\"title\", \"rust appwrite\").to_string(),\n    Query::contains(\"tags\", \"rust\").to_string(),\n    Query::order_desc(\"$createdAt\").to_string(),\n    Query::limit(25).to_string(),\n    Query::offset(50).to_string(),\n];\n\nlet multi_value = Query::equal(\n    \"status\",\n    Value::Array(vec![\n        Value::String(\"draft\".to_string()),\n        Value::String(\"published\".to_string()),\n    ]),\n)\n.to_string();\n```\n\n### File Storage\n\n```rust\nuse appwrite::id::ID;\nuse appwrite::input_file::InputFile;\nuse appwrite::permission::Permission;\nuse appwrite::query::Query;\nuse appwrite::role::Role;\nuse appwrite::services::Storage;\n\nlet storage = Storage::new(&client);\n\n\u002F\u002F Create bucket\nlet _bucket = storage\n    .create_bucket(\n        ID::unique(),\n        \"Uploads\",\n        Some(vec![\n            Permission::read(Role::any()).to_string(),\n            Permission::create(Role::users(None)).to_string(),\n        ]),\n        Some(true),\n        Some(true),\n        Some(30_000_000),\n        Some(vec![\"jpg\".to_string(), \"png\".to_string(), \"pdf\".to_string()]),\n        None,\n        Some(true),\n        Some(true),\n        Some(true),\n    )\n    .await?;\n\n\u002F\u002F Upload from disk\nlet input = InputFile::from_path(\"avatar.png\", Some(\"image\u002Fpng\")).await?;\nlet _file = storage\n    .create_file(\n        \"[BUCKET_ID]\",\n        ID::unique(),\n        input,\n        Some(vec![Permission::read(Role::any()).to_string()]),\n    )\n    .await?;\n\n\u002F\u002F Upload from bytes\nlet input = InputFile::from_bytes(b\"hello\".to_vec(), \"hello.txt\", Some(\"text\u002Fplain\"));\nlet _file = storage.create_file(\"[BUCKET_ID]\", ID::unique(), input, None).await?;\n\n\u002F\u002F List files\nlet _files = storage\n    .list_files(\"[BUCKET_ID]\", Some(vec![Query::limit(10).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Download file bytes\nlet _content = storage\n    .get_file_download(\"[BUCKET_ID]\", \"[FILE_ID]\", None)\n    .await?;\n\n\u002F\u002F Delete file\nstorage.delete_file(\"[BUCKET_ID]\", \"[FILE_ID]\").await?;\n```\n\n### Functions\n\n```rust\nuse appwrite::enums::ExecutionMethod;\nuse appwrite::query::Query;\nuse appwrite::services::Functions;\nuse serde_json::json;\n\nlet functions = Functions::new(&client);\n\n\u002F\u002F List functions\nlet _functions = functions\n    .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Execute function\nlet _execution = functions\n    .create_execution(\n        \"[FUNCTION_ID]\",\n        Some(r#\"{\"hello\":\"world\"}\"#),\n        Some(false),\n        Some(\"\u002Fjobs\u002Fsync\"),\n        Some(ExecutionMethod::POST),\n        Some(json!({ \"content-type\": \"application\u002Fjson\" })),\n        None,\n    )\n    .await?;\n\n\u002F\u002F Get execution\nlet _execution = functions\n    .get_execution(\"[FUNCTION_ID]\", \"[EXECUTION_ID]\")\n    .await?;\n```\n\n### Permissions\n\n```rust\nuse appwrite::permission::Permission;\nuse appwrite::role::Role;\n\nlet permissions = vec![\n    Permission::read(Role::any()).to_string(),\n    Permission::create(Role::users(None)).to_string(),\n    Permission::update(Role::user(\"[USER_ID]\", None)).to_string(),\n    Permission::delete(Role::team(\"[TEAM_ID]\", Some(\"owner\"))).to_string(),\n];\n```\n\n### Error Handling\n\n```rust\nmatch users.get(\"[USER_ID]\").await {\n    Ok(user) => {\n        let _user = user;\n    }\n    Err(error) if error.status_code() == 404 => {\n        eprintln!(\"User not found: {}\", error.get_message());\n    }\n    Err(error) => {\n        eprintln!(\"Appwrite error {}: {}\", error.status_code(), error.get_message());\n        return Err(Box::new(error) as Box\u003Cdyn std::error::Error>);\n    }\n}\n```\n\n## Common Pitfalls\n\n- The Rust SDK is currently a server-side SDK. Prefer TypeScript\u002FWeb, Flutter, Apple, Android, or React Native SDKs for browser\u002Fmobile client auth flows.\n- Always `await` service calls.\n- Pass `None` for optional parameters you are not using.\n- Use `TablesDB`, not legacy `Databases`, for new database code.\n- Convert queries with `.to_string()` before passing them to APIs that expect `Option\u003CVec\u003CString>>`.\n- Use `serde_json::json!({...})` for row data and JSON bodies.\n- Use `InputFile::from_path(...).await?` or `InputFile::from_bytes(...)` for uploads.\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,52,59,138,144,186,192,197,265,272,438,444,450,672,678,735,1412,1419,1439,1579,1626,1942,1948,1974,2178,2182,2608,2614,2840,2846,2921,2927,3027,3033,3137],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"appwrite-rust-sdk",[49],{"type":50,"value":51},"text","Appwrite Rust SDK",{"type":44,"tag":53,"props":54,"children":56},"h2",{"id":55},"installation",[57],{"type":50,"value":58},"Installation",{"type":44,"tag":60,"props":61,"children":66},"pre",{"className":62,"code":63,"language":64,"meta":65,"style":65},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","cargo add appwrite\ncargo add tokio --features full\ncargo add serde_json\n","bash","",[67],{"type":44,"tag":68,"props":69,"children":70},"code",{"__ignoreMap":65},[71,94,121],{"type":44,"tag":72,"props":73,"children":76},"span",{"class":74,"line":75},"line",1,[77,83,89],{"type":44,"tag":72,"props":78,"children":80},{"style":79},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[81],{"type":50,"value":82},"cargo",{"type":44,"tag":72,"props":84,"children":86},{"style":85},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[87],{"type":50,"value":88}," add",{"type":44,"tag":72,"props":90,"children":91},{"style":85},[92],{"type":50,"value":93}," appwrite\n",{"type":44,"tag":72,"props":95,"children":97},{"class":74,"line":96},2,[98,102,106,111,116],{"type":44,"tag":72,"props":99,"children":100},{"style":79},[101],{"type":50,"value":82},{"type":44,"tag":72,"props":103,"children":104},{"style":85},[105],{"type":50,"value":88},{"type":44,"tag":72,"props":107,"children":108},{"style":85},[109],{"type":50,"value":110}," tokio",{"type":44,"tag":72,"props":112,"children":113},{"style":85},[114],{"type":50,"value":115}," --features",{"type":44,"tag":72,"props":117,"children":118},{"style":85},[119],{"type":50,"value":120}," full\n",{"type":44,"tag":72,"props":122,"children":124},{"class":74,"line":123},3,[125,129,133],{"type":44,"tag":72,"props":126,"children":127},{"style":79},[128],{"type":50,"value":82},{"type":44,"tag":72,"props":130,"children":131},{"style":85},[132],{"type":50,"value":88},{"type":44,"tag":72,"props":134,"children":135},{"style":85},[136],{"type":50,"value":137}," serde_json\n",{"type":44,"tag":139,"props":140,"children":141},"p",{},[142],{"type":50,"value":143},"Or add dependencies manually:",{"type":44,"tag":60,"props":145,"children":149},{"className":146,"code":147,"language":148,"meta":65,"style":65},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[dependencies]\nappwrite = \"0.3.0\"\ntokio = { version = \"1\", features = [\"full\"] }\nserde_json = \"1\"\n","toml",[150],{"type":44,"tag":68,"props":151,"children":152},{"__ignoreMap":65},[153,161,169,177],{"type":44,"tag":72,"props":154,"children":155},{"class":74,"line":75},[156],{"type":44,"tag":72,"props":157,"children":158},{},[159],{"type":50,"value":160},"[dependencies]\n",{"type":44,"tag":72,"props":162,"children":163},{"class":74,"line":96},[164],{"type":44,"tag":72,"props":165,"children":166},{},[167],{"type":50,"value":168},"appwrite = \"0.3.0\"\n",{"type":44,"tag":72,"props":170,"children":171},{"class":74,"line":123},[172],{"type":44,"tag":72,"props":173,"children":174},{},[175],{"type":50,"value":176},"tokio = { version = \"1\", features = [\"full\"] }\n",{"type":44,"tag":72,"props":178,"children":180},{"class":74,"line":179},4,[181],{"type":44,"tag":72,"props":182,"children":183},{},[184],{"type":50,"value":185},"serde_json = \"1\"\n",{"type":44,"tag":53,"props":187,"children":189},{"id":188},"setting-up-the-client",[190],{"type":50,"value":191},"Setting Up the Client",{"type":44,"tag":139,"props":193,"children":194},{},[195],{"type":50,"value":196},"The Rust SDK is async. Use it from a Tokio runtime and authenticate server-side with an API key.",{"type":44,"tag":60,"props":198,"children":201},{"className":199,"code":200,"language":24,"meta":65,"style":65},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use appwrite::Client;\nuse std::env;\n\nlet client = Client::new()\n    .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n    .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n    .set_key(env::var(\"APPWRITE_API_KEY\")?);\n",[202],{"type":44,"tag":68,"props":203,"children":204},{"__ignoreMap":65},[205,213,221,230,238,247,256],{"type":44,"tag":72,"props":206,"children":207},{"class":74,"line":75},[208],{"type":44,"tag":72,"props":209,"children":210},{},[211],{"type":50,"value":212},"use appwrite::Client;\n",{"type":44,"tag":72,"props":214,"children":215},{"class":74,"line":96},[216],{"type":44,"tag":72,"props":217,"children":218},{},[219],{"type":50,"value":220},"use std::env;\n",{"type":44,"tag":72,"props":222,"children":223},{"class":74,"line":123},[224],{"type":44,"tag":72,"props":225,"children":227},{"emptyLinePlaceholder":226},true,[228],{"type":50,"value":229},"\n",{"type":44,"tag":72,"props":231,"children":232},{"class":74,"line":179},[233],{"type":44,"tag":72,"props":234,"children":235},{},[236],{"type":50,"value":237},"let client = Client::new()\n",{"type":44,"tag":72,"props":239,"children":241},{"class":74,"line":240},5,[242],{"type":44,"tag":72,"props":243,"children":244},{},[245],{"type":50,"value":246},"    .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n",{"type":44,"tag":72,"props":248,"children":250},{"class":74,"line":249},6,[251],{"type":44,"tag":72,"props":252,"children":253},{},[254],{"type":50,"value":255},"    .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n",{"type":44,"tag":72,"props":257,"children":259},{"class":74,"line":258},7,[260],{"type":44,"tag":72,"props":261,"children":262},{},[263],{"type":50,"value":264},"    .set_key(env::var(\"APPWRITE_API_KEY\")?);\n",{"type":44,"tag":266,"props":267,"children":269},"h3",{"id":268},"complete-server-skeleton",[270],{"type":50,"value":271},"Complete server skeleton",{"type":44,"tag":60,"props":273,"children":275},{"className":199,"code":274,"language":24,"meta":65,"style":65},"use appwrite::query::Query;\nuse appwrite::services::Users;\nuse appwrite::Client;\nuse std::env;\n\n#[tokio::main]\nasync fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n    let client = Client::new()\n        .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n        .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n        .set_key(env::var(\"APPWRITE_API_KEY\")?);\n\n    let users = Users::new(&client);\n    let _list = users\n        .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n        .await?;\n\n    Ok(())\n}\n",[276],{"type":44,"tag":68,"props":277,"children":278},{"__ignoreMap":65},[279,287,295,302,309,316,324,332,341,350,359,368,376,385,394,403,412,420,429],{"type":44,"tag":72,"props":280,"children":281},{"class":74,"line":75},[282],{"type":44,"tag":72,"props":283,"children":284},{},[285],{"type":50,"value":286},"use appwrite::query::Query;\n",{"type":44,"tag":72,"props":288,"children":289},{"class":74,"line":96},[290],{"type":44,"tag":72,"props":291,"children":292},{},[293],{"type":50,"value":294},"use appwrite::services::Users;\n",{"type":44,"tag":72,"props":296,"children":297},{"class":74,"line":123},[298],{"type":44,"tag":72,"props":299,"children":300},{},[301],{"type":50,"value":212},{"type":44,"tag":72,"props":303,"children":304},{"class":74,"line":179},[305],{"type":44,"tag":72,"props":306,"children":307},{},[308],{"type":50,"value":220},{"type":44,"tag":72,"props":310,"children":311},{"class":74,"line":240},[312],{"type":44,"tag":72,"props":313,"children":314},{"emptyLinePlaceholder":226},[315],{"type":50,"value":229},{"type":44,"tag":72,"props":317,"children":318},{"class":74,"line":249},[319],{"type":44,"tag":72,"props":320,"children":321},{},[322],{"type":50,"value":323},"#[tokio::main]\n",{"type":44,"tag":72,"props":325,"children":326},{"class":74,"line":258},[327],{"type":44,"tag":72,"props":328,"children":329},{},[330],{"type":50,"value":331},"async fn main() -> Result\u003C(), Box\u003Cdyn std::error::Error>> {\n",{"type":44,"tag":72,"props":333,"children":335},{"class":74,"line":334},8,[336],{"type":44,"tag":72,"props":337,"children":338},{},[339],{"type":50,"value":340},"    let client = Client::new()\n",{"type":44,"tag":72,"props":342,"children":344},{"class":74,"line":343},9,[345],{"type":44,"tag":72,"props":346,"children":347},{},[348],{"type":50,"value":349},"        .set_endpoint(\"https:\u002F\u002F\u003CREGION>.cloud.appwrite.io\u002Fv1\")\n",{"type":44,"tag":72,"props":351,"children":353},{"class":74,"line":352},10,[354],{"type":44,"tag":72,"props":355,"children":356},{},[357],{"type":50,"value":358},"        .set_project(env::var(\"APPWRITE_PROJECT_ID\")?)\n",{"type":44,"tag":72,"props":360,"children":362},{"class":74,"line":361},11,[363],{"type":44,"tag":72,"props":364,"children":365},{},[366],{"type":50,"value":367},"        .set_key(env::var(\"APPWRITE_API_KEY\")?);\n",{"type":44,"tag":72,"props":369,"children":371},{"class":74,"line":370},12,[372],{"type":44,"tag":72,"props":373,"children":374},{"emptyLinePlaceholder":226},[375],{"type":50,"value":229},{"type":44,"tag":72,"props":377,"children":379},{"class":74,"line":378},13,[380],{"type":44,"tag":72,"props":381,"children":382},{},[383],{"type":50,"value":384},"    let users = Users::new(&client);\n",{"type":44,"tag":72,"props":386,"children":388},{"class":74,"line":387},14,[389],{"type":44,"tag":72,"props":390,"children":391},{},[392],{"type":50,"value":393},"    let _list = users\n",{"type":44,"tag":72,"props":395,"children":397},{"class":74,"line":396},15,[398],{"type":44,"tag":72,"props":399,"children":400},{},[401],{"type":50,"value":402},"        .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n",{"type":44,"tag":72,"props":404,"children":406},{"class":74,"line":405},16,[407],{"type":44,"tag":72,"props":408,"children":409},{},[410],{"type":50,"value":411},"        .await?;\n",{"type":44,"tag":72,"props":413,"children":415},{"class":74,"line":414},17,[416],{"type":44,"tag":72,"props":417,"children":418},{"emptyLinePlaceholder":226},[419],{"type":50,"value":229},{"type":44,"tag":72,"props":421,"children":423},{"class":74,"line":422},18,[424],{"type":44,"tag":72,"props":425,"children":426},{},[427],{"type":50,"value":428},"    Ok(())\n",{"type":44,"tag":72,"props":430,"children":432},{"class":74,"line":431},19,[433],{"type":44,"tag":72,"props":434,"children":435},{},[436],{"type":50,"value":437},"}\n",{"type":44,"tag":53,"props":439,"children":441},{"id":440},"code-examples",[442],{"type":50,"value":443},"Code Examples",{"type":44,"tag":266,"props":445,"children":447},{"id":446},"user-management",[448],{"type":50,"value":449},"User Management",{"type":44,"tag":60,"props":451,"children":453},{"className":199,"code":452,"language":24,"meta":65,"style":65},"use appwrite::id::ID;\nuse appwrite::query::Query;\nuse appwrite::services::Users;\n\nlet users = Users::new(&client);\n\n\u002F\u002F Create user\nlet _user = users\n    .create(\n        ID::unique(),\n        Some(\"user@example.com\"),\n        None,\n        Some(\"password123\"),\n        Some(\"User Name\"),\n    )\n    .await?;\n\n\u002F\u002F List users\nlet _list = users\n    .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Get user\nlet _fetched = users.get(\"[USER_ID]\").await?;\n\n\u002F\u002F Delete user\nusers.delete(\"[USER_ID]\").await?;\n",[454],{"type":44,"tag":68,"props":455,"children":456},{"__ignoreMap":65},[457,465,472,479,486,494,501,509,517,525,533,541,549,557,565,573,581,588,596,604,613,621,629,637,646,654,663],{"type":44,"tag":72,"props":458,"children":459},{"class":74,"line":75},[460],{"type":44,"tag":72,"props":461,"children":462},{},[463],{"type":50,"value":464},"use appwrite::id::ID;\n",{"type":44,"tag":72,"props":466,"children":467},{"class":74,"line":96},[468],{"type":44,"tag":72,"props":469,"children":470},{},[471],{"type":50,"value":286},{"type":44,"tag":72,"props":473,"children":474},{"class":74,"line":123},[475],{"type":44,"tag":72,"props":476,"children":477},{},[478],{"type":50,"value":294},{"type":44,"tag":72,"props":480,"children":481},{"class":74,"line":179},[482],{"type":44,"tag":72,"props":483,"children":484},{"emptyLinePlaceholder":226},[485],{"type":50,"value":229},{"type":44,"tag":72,"props":487,"children":488},{"class":74,"line":240},[489],{"type":44,"tag":72,"props":490,"children":491},{},[492],{"type":50,"value":493},"let users = Users::new(&client);\n",{"type":44,"tag":72,"props":495,"children":496},{"class":74,"line":249},[497],{"type":44,"tag":72,"props":498,"children":499},{"emptyLinePlaceholder":226},[500],{"type":50,"value":229},{"type":44,"tag":72,"props":502,"children":503},{"class":74,"line":258},[504],{"type":44,"tag":72,"props":505,"children":506},{},[507],{"type":50,"value":508},"\u002F\u002F Create user\n",{"type":44,"tag":72,"props":510,"children":511},{"class":74,"line":334},[512],{"type":44,"tag":72,"props":513,"children":514},{},[515],{"type":50,"value":516},"let _user = users\n",{"type":44,"tag":72,"props":518,"children":519},{"class":74,"line":343},[520],{"type":44,"tag":72,"props":521,"children":522},{},[523],{"type":50,"value":524},"    .create(\n",{"type":44,"tag":72,"props":526,"children":527},{"class":74,"line":352},[528],{"type":44,"tag":72,"props":529,"children":530},{},[531],{"type":50,"value":532},"        ID::unique(),\n",{"type":44,"tag":72,"props":534,"children":535},{"class":74,"line":361},[536],{"type":44,"tag":72,"props":537,"children":538},{},[539],{"type":50,"value":540},"        Some(\"user@example.com\"),\n",{"type":44,"tag":72,"props":542,"children":543},{"class":74,"line":370},[544],{"type":44,"tag":72,"props":545,"children":546},{},[547],{"type":50,"value":548},"        None,\n",{"type":44,"tag":72,"props":550,"children":551},{"class":74,"line":378},[552],{"type":44,"tag":72,"props":553,"children":554},{},[555],{"type":50,"value":556},"        Some(\"password123\"),\n",{"type":44,"tag":72,"props":558,"children":559},{"class":74,"line":387},[560],{"type":44,"tag":72,"props":561,"children":562},{},[563],{"type":50,"value":564},"        Some(\"User Name\"),\n",{"type":44,"tag":72,"props":566,"children":567},{"class":74,"line":396},[568],{"type":44,"tag":72,"props":569,"children":570},{},[571],{"type":50,"value":572},"    )\n",{"type":44,"tag":72,"props":574,"children":575},{"class":74,"line":405},[576],{"type":44,"tag":72,"props":577,"children":578},{},[579],{"type":50,"value":580},"    .await?;\n",{"type":44,"tag":72,"props":582,"children":583},{"class":74,"line":414},[584],{"type":44,"tag":72,"props":585,"children":586},{"emptyLinePlaceholder":226},[587],{"type":50,"value":229},{"type":44,"tag":72,"props":589,"children":590},{"class":74,"line":422},[591],{"type":44,"tag":72,"props":592,"children":593},{},[594],{"type":50,"value":595},"\u002F\u002F List users\n",{"type":44,"tag":72,"props":597,"children":598},{"class":74,"line":431},[599],{"type":44,"tag":72,"props":600,"children":601},{},[602],{"type":50,"value":603},"let _list = users\n",{"type":44,"tag":72,"props":605,"children":607},{"class":74,"line":606},20,[608],{"type":44,"tag":72,"props":609,"children":610},{},[611],{"type":50,"value":612},"    .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n",{"type":44,"tag":72,"props":614,"children":616},{"class":74,"line":615},21,[617],{"type":44,"tag":72,"props":618,"children":619},{},[620],{"type":50,"value":580},{"type":44,"tag":72,"props":622,"children":624},{"class":74,"line":623},22,[625],{"type":44,"tag":72,"props":626,"children":627},{"emptyLinePlaceholder":226},[628],{"type":50,"value":229},{"type":44,"tag":72,"props":630,"children":631},{"class":74,"line":28},[632],{"type":44,"tag":72,"props":633,"children":634},{},[635],{"type":50,"value":636},"\u002F\u002F Get user\n",{"type":44,"tag":72,"props":638,"children":640},{"class":74,"line":639},24,[641],{"type":44,"tag":72,"props":642,"children":643},{},[644],{"type":50,"value":645},"let _fetched = users.get(\"[USER_ID]\").await?;\n",{"type":44,"tag":72,"props":647,"children":649},{"class":74,"line":648},25,[650],{"type":44,"tag":72,"props":651,"children":652},{"emptyLinePlaceholder":226},[653],{"type":50,"value":229},{"type":44,"tag":72,"props":655,"children":657},{"class":74,"line":656},26,[658],{"type":44,"tag":72,"props":659,"children":660},{},[661],{"type":50,"value":662},"\u002F\u002F Delete user\n",{"type":44,"tag":72,"props":664,"children":666},{"class":74,"line":665},27,[667],{"type":44,"tag":72,"props":668,"children":669},{},[670],{"type":50,"value":671},"users.delete(\"[USER_ID]\").await?;\n",{"type":44,"tag":266,"props":673,"children":675},{"id":674},"database-operations",[676],{"type":50,"value":677},"Database Operations",{"type":44,"tag":679,"props":680,"children":681},"blockquote",{},[682,709],{"type":44,"tag":139,"props":683,"children":684},{},[685,691,693,699,701,707],{"type":44,"tag":686,"props":687,"children":688},"strong",{},[689],{"type":50,"value":690},"Note:",{"type":50,"value":692}," Use ",{"type":44,"tag":68,"props":694,"children":696},{"className":695},[],[697],{"type":50,"value":698},"TablesDB",{"type":50,"value":700}," for new code. Only use ",{"type":44,"tag":68,"props":702,"children":704},{"className":703},[],[705],{"type":50,"value":706},"Databases",{"type":50,"value":708}," if the existing project explicitly depends on the legacy Databases API.",{"type":44,"tag":139,"props":710,"children":711},{},[712,717,719,725,727,733],{"type":44,"tag":686,"props":713,"children":714},{},[715],{"type":50,"value":716},"Rust SDK calling convention:",{"type":50,"value":718}," Methods are async, use positional parameters, and represent optional API parameters as ",{"type":44,"tag":68,"props":720,"children":722},{"className":721},[],[723],{"type":50,"value":724},"Option\u003CT>",{"type":50,"value":726},". Pass ",{"type":44,"tag":68,"props":728,"children":730},{"className":729},[],[731],{"type":50,"value":732},"None",{"type":50,"value":734}," for optional values you are not setting.",{"type":44,"tag":60,"props":736,"children":738},{"className":199,"code":737,"language":24,"meta":65,"style":65},"use appwrite::id::ID;\nuse appwrite::permission::Permission;\nuse appwrite::query::Query;\nuse appwrite::role::Role;\nuse appwrite::services::TablesDB;\nuse serde_json::json;\n\nlet tables_db = TablesDB::new(&client);\n\n\u002F\u002F Create database\nlet _database = tables_db\n    .create(ID::unique(), \"My Database\", Some(true))\n    .await?;\n\n\u002F\u002F Create table\nlet _table = tables_db\n    .create_table(\n        \"[DATABASE_ID]\",\n        ID::unique(),\n        \"articles\",\n        Some(vec![\n            Permission::read(Role::any()).to_string(),\n            Permission::create(Role::users(None)).to_string(),\n        ]),\n        Some(true),\n        Some(true),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Create row\nlet _row = tables_db\n    .create_row(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        ID::unique(),\n        json!({\n            \"title\": \"Hello World\",\n            \"done\": false\n        }),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Query rows\nlet _rows = tables_db\n    .list_rows(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        Some(vec![\n            Query::equal(\"done\", false).to_string(),\n            Query::limit(10).to_string(),\n        ]),\n        None,\n        Some(true),\n        None,\n    )\n    .await?;\n\n\u002F\u002F Get row\nlet _row = tables_db\n    .get_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None, None)\n    .await?;\n\n\u002F\u002F Update row\nlet _updated = tables_db\n    .update_row(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"[ROW_ID]\",\n        Some(json!({ \"done\": true })),\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Delete row\ntables_db\n    .delete_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None)\n    .await?;\n",[739],{"type":44,"tag":68,"props":740,"children":741},{"__ignoreMap":65},[742,749,757,764,772,780,788,795,803,810,818,826,834,841,848,856,864,872,880,887,895,903,911,919,927,935,942,949,957,965,973,981,990,999,1008,1016,1025,1033,1042,1051,1060,1069,1077,1085,1093,1101,1109,1118,1127,1136,1144,1152,1160,1169,1178,1186,1194,1202,1210,1218,1226,1234,1243,1251,1260,1268,1276,1285,1294,1303,1311,1319,1328,1337,1345,1353,1361,1369,1377,1386,1395,1404],{"type":44,"tag":72,"props":743,"children":744},{"class":74,"line":75},[745],{"type":44,"tag":72,"props":746,"children":747},{},[748],{"type":50,"value":464},{"type":44,"tag":72,"props":750,"children":751},{"class":74,"line":96},[752],{"type":44,"tag":72,"props":753,"children":754},{},[755],{"type":50,"value":756},"use appwrite::permission::Permission;\n",{"type":44,"tag":72,"props":758,"children":759},{"class":74,"line":123},[760],{"type":44,"tag":72,"props":761,"children":762},{},[763],{"type":50,"value":286},{"type":44,"tag":72,"props":765,"children":766},{"class":74,"line":179},[767],{"type":44,"tag":72,"props":768,"children":769},{},[770],{"type":50,"value":771},"use appwrite::role::Role;\n",{"type":44,"tag":72,"props":773,"children":774},{"class":74,"line":240},[775],{"type":44,"tag":72,"props":776,"children":777},{},[778],{"type":50,"value":779},"use appwrite::services::TablesDB;\n",{"type":44,"tag":72,"props":781,"children":782},{"class":74,"line":249},[783],{"type":44,"tag":72,"props":784,"children":785},{},[786],{"type":50,"value":787},"use serde_json::json;\n",{"type":44,"tag":72,"props":789,"children":790},{"class":74,"line":258},[791],{"type":44,"tag":72,"props":792,"children":793},{"emptyLinePlaceholder":226},[794],{"type":50,"value":229},{"type":44,"tag":72,"props":796,"children":797},{"class":74,"line":334},[798],{"type":44,"tag":72,"props":799,"children":800},{},[801],{"type":50,"value":802},"let tables_db = TablesDB::new(&client);\n",{"type":44,"tag":72,"props":804,"children":805},{"class":74,"line":343},[806],{"type":44,"tag":72,"props":807,"children":808},{"emptyLinePlaceholder":226},[809],{"type":50,"value":229},{"type":44,"tag":72,"props":811,"children":812},{"class":74,"line":352},[813],{"type":44,"tag":72,"props":814,"children":815},{},[816],{"type":50,"value":817},"\u002F\u002F Create database\n",{"type":44,"tag":72,"props":819,"children":820},{"class":74,"line":361},[821],{"type":44,"tag":72,"props":822,"children":823},{},[824],{"type":50,"value":825},"let _database = tables_db\n",{"type":44,"tag":72,"props":827,"children":828},{"class":74,"line":370},[829],{"type":44,"tag":72,"props":830,"children":831},{},[832],{"type":50,"value":833},"    .create(ID::unique(), \"My Database\", Some(true))\n",{"type":44,"tag":72,"props":835,"children":836},{"class":74,"line":378},[837],{"type":44,"tag":72,"props":838,"children":839},{},[840],{"type":50,"value":580},{"type":44,"tag":72,"props":842,"children":843},{"class":74,"line":387},[844],{"type":44,"tag":72,"props":845,"children":846},{"emptyLinePlaceholder":226},[847],{"type":50,"value":229},{"type":44,"tag":72,"props":849,"children":850},{"class":74,"line":396},[851],{"type":44,"tag":72,"props":852,"children":853},{},[854],{"type":50,"value":855},"\u002F\u002F Create table\n",{"type":44,"tag":72,"props":857,"children":858},{"class":74,"line":405},[859],{"type":44,"tag":72,"props":860,"children":861},{},[862],{"type":50,"value":863},"let _table = tables_db\n",{"type":44,"tag":72,"props":865,"children":866},{"class":74,"line":414},[867],{"type":44,"tag":72,"props":868,"children":869},{},[870],{"type":50,"value":871},"    .create_table(\n",{"type":44,"tag":72,"props":873,"children":874},{"class":74,"line":422},[875],{"type":44,"tag":72,"props":876,"children":877},{},[878],{"type":50,"value":879},"        \"[DATABASE_ID]\",\n",{"type":44,"tag":72,"props":881,"children":882},{"class":74,"line":431},[883],{"type":44,"tag":72,"props":884,"children":885},{},[886],{"type":50,"value":532},{"type":44,"tag":72,"props":888,"children":889},{"class":74,"line":606},[890],{"type":44,"tag":72,"props":891,"children":892},{},[893],{"type":50,"value":894},"        \"articles\",\n",{"type":44,"tag":72,"props":896,"children":897},{"class":74,"line":615},[898],{"type":44,"tag":72,"props":899,"children":900},{},[901],{"type":50,"value":902},"        Some(vec![\n",{"type":44,"tag":72,"props":904,"children":905},{"class":74,"line":623},[906],{"type":44,"tag":72,"props":907,"children":908},{},[909],{"type":50,"value":910},"            Permission::read(Role::any()).to_string(),\n",{"type":44,"tag":72,"props":912,"children":913},{"class":74,"line":28},[914],{"type":44,"tag":72,"props":915,"children":916},{},[917],{"type":50,"value":918},"            Permission::create(Role::users(None)).to_string(),\n",{"type":44,"tag":72,"props":920,"children":921},{"class":74,"line":639},[922],{"type":44,"tag":72,"props":923,"children":924},{},[925],{"type":50,"value":926},"        ]),\n",{"type":44,"tag":72,"props":928,"children":929},{"class":74,"line":648},[930],{"type":44,"tag":72,"props":931,"children":932},{},[933],{"type":50,"value":934},"        Some(true),\n",{"type":44,"tag":72,"props":936,"children":937},{"class":74,"line":656},[938],{"type":44,"tag":72,"props":939,"children":940},{},[941],{"type":50,"value":934},{"type":44,"tag":72,"props":943,"children":944},{"class":74,"line":665},[945],{"type":44,"tag":72,"props":946,"children":947},{},[948],{"type":50,"value":548},{"type":44,"tag":72,"props":950,"children":952},{"class":74,"line":951},28,[953],{"type":44,"tag":72,"props":954,"children":955},{},[956],{"type":50,"value":548},{"type":44,"tag":72,"props":958,"children":960},{"class":74,"line":959},29,[961],{"type":44,"tag":72,"props":962,"children":963},{},[964],{"type":50,"value":572},{"type":44,"tag":72,"props":966,"children":968},{"class":74,"line":967},30,[969],{"type":44,"tag":72,"props":970,"children":971},{},[972],{"type":50,"value":580},{"type":44,"tag":72,"props":974,"children":976},{"class":74,"line":975},31,[977],{"type":44,"tag":72,"props":978,"children":979},{"emptyLinePlaceholder":226},[980],{"type":50,"value":229},{"type":44,"tag":72,"props":982,"children":984},{"class":74,"line":983},32,[985],{"type":44,"tag":72,"props":986,"children":987},{},[988],{"type":50,"value":989},"\u002F\u002F Create row\n",{"type":44,"tag":72,"props":991,"children":993},{"class":74,"line":992},33,[994],{"type":44,"tag":72,"props":995,"children":996},{},[997],{"type":50,"value":998},"let _row = tables_db\n",{"type":44,"tag":72,"props":1000,"children":1002},{"class":74,"line":1001},34,[1003],{"type":44,"tag":72,"props":1004,"children":1005},{},[1006],{"type":50,"value":1007},"    .create_row(\n",{"type":44,"tag":72,"props":1009,"children":1011},{"class":74,"line":1010},35,[1012],{"type":44,"tag":72,"props":1013,"children":1014},{},[1015],{"type":50,"value":879},{"type":44,"tag":72,"props":1017,"children":1019},{"class":74,"line":1018},36,[1020],{"type":44,"tag":72,"props":1021,"children":1022},{},[1023],{"type":50,"value":1024},"        \"[TABLE_ID]\",\n",{"type":44,"tag":72,"props":1026,"children":1028},{"class":74,"line":1027},37,[1029],{"type":44,"tag":72,"props":1030,"children":1031},{},[1032],{"type":50,"value":532},{"type":44,"tag":72,"props":1034,"children":1036},{"class":74,"line":1035},38,[1037],{"type":44,"tag":72,"props":1038,"children":1039},{},[1040],{"type":50,"value":1041},"        json!({\n",{"type":44,"tag":72,"props":1043,"children":1045},{"class":74,"line":1044},39,[1046],{"type":44,"tag":72,"props":1047,"children":1048},{},[1049],{"type":50,"value":1050},"            \"title\": \"Hello World\",\n",{"type":44,"tag":72,"props":1052,"children":1054},{"class":74,"line":1053},40,[1055],{"type":44,"tag":72,"props":1056,"children":1057},{},[1058],{"type":50,"value":1059},"            \"done\": false\n",{"type":44,"tag":72,"props":1061,"children":1063},{"class":74,"line":1062},41,[1064],{"type":44,"tag":72,"props":1065,"children":1066},{},[1067],{"type":50,"value":1068},"        }),\n",{"type":44,"tag":72,"props":1070,"children":1072},{"class":74,"line":1071},42,[1073],{"type":44,"tag":72,"props":1074,"children":1075},{},[1076],{"type":50,"value":548},{"type":44,"tag":72,"props":1078,"children":1080},{"class":74,"line":1079},43,[1081],{"type":44,"tag":72,"props":1082,"children":1083},{},[1084],{"type":50,"value":548},{"type":44,"tag":72,"props":1086,"children":1088},{"class":74,"line":1087},44,[1089],{"type":44,"tag":72,"props":1090,"children":1091},{},[1092],{"type":50,"value":572},{"type":44,"tag":72,"props":1094,"children":1096},{"class":74,"line":1095},45,[1097],{"type":44,"tag":72,"props":1098,"children":1099},{},[1100],{"type":50,"value":580},{"type":44,"tag":72,"props":1102,"children":1104},{"class":74,"line":1103},46,[1105],{"type":44,"tag":72,"props":1106,"children":1107},{"emptyLinePlaceholder":226},[1108],{"type":50,"value":229},{"type":44,"tag":72,"props":1110,"children":1112},{"class":74,"line":1111},47,[1113],{"type":44,"tag":72,"props":1114,"children":1115},{},[1116],{"type":50,"value":1117},"\u002F\u002F Query rows\n",{"type":44,"tag":72,"props":1119,"children":1121},{"class":74,"line":1120},48,[1122],{"type":44,"tag":72,"props":1123,"children":1124},{},[1125],{"type":50,"value":1126},"let _rows = tables_db\n",{"type":44,"tag":72,"props":1128,"children":1130},{"class":74,"line":1129},49,[1131],{"type":44,"tag":72,"props":1132,"children":1133},{},[1134],{"type":50,"value":1135},"    .list_rows(\n",{"type":44,"tag":72,"props":1137,"children":1139},{"class":74,"line":1138},50,[1140],{"type":44,"tag":72,"props":1141,"children":1142},{},[1143],{"type":50,"value":879},{"type":44,"tag":72,"props":1145,"children":1147},{"class":74,"line":1146},51,[1148],{"type":44,"tag":72,"props":1149,"children":1150},{},[1151],{"type":50,"value":1024},{"type":44,"tag":72,"props":1153,"children":1155},{"class":74,"line":1154},52,[1156],{"type":44,"tag":72,"props":1157,"children":1158},{},[1159],{"type":50,"value":902},{"type":44,"tag":72,"props":1161,"children":1163},{"class":74,"line":1162},53,[1164],{"type":44,"tag":72,"props":1165,"children":1166},{},[1167],{"type":50,"value":1168},"            Query::equal(\"done\", false).to_string(),\n",{"type":44,"tag":72,"props":1170,"children":1172},{"class":74,"line":1171},54,[1173],{"type":44,"tag":72,"props":1174,"children":1175},{},[1176],{"type":50,"value":1177},"            Query::limit(10).to_string(),\n",{"type":44,"tag":72,"props":1179,"children":1181},{"class":74,"line":1180},55,[1182],{"type":44,"tag":72,"props":1183,"children":1184},{},[1185],{"type":50,"value":926},{"type":44,"tag":72,"props":1187,"children":1189},{"class":74,"line":1188},56,[1190],{"type":44,"tag":72,"props":1191,"children":1192},{},[1193],{"type":50,"value":548},{"type":44,"tag":72,"props":1195,"children":1197},{"class":74,"line":1196},57,[1198],{"type":44,"tag":72,"props":1199,"children":1200},{},[1201],{"type":50,"value":934},{"type":44,"tag":72,"props":1203,"children":1205},{"class":74,"line":1204},58,[1206],{"type":44,"tag":72,"props":1207,"children":1208},{},[1209],{"type":50,"value":548},{"type":44,"tag":72,"props":1211,"children":1213},{"class":74,"line":1212},59,[1214],{"type":44,"tag":72,"props":1215,"children":1216},{},[1217],{"type":50,"value":572},{"type":44,"tag":72,"props":1219,"children":1221},{"class":74,"line":1220},60,[1222],{"type":44,"tag":72,"props":1223,"children":1224},{},[1225],{"type":50,"value":580},{"type":44,"tag":72,"props":1227,"children":1229},{"class":74,"line":1228},61,[1230],{"type":44,"tag":72,"props":1231,"children":1232},{"emptyLinePlaceholder":226},[1233],{"type":50,"value":229},{"type":44,"tag":72,"props":1235,"children":1237},{"class":74,"line":1236},62,[1238],{"type":44,"tag":72,"props":1239,"children":1240},{},[1241],{"type":50,"value":1242},"\u002F\u002F Get row\n",{"type":44,"tag":72,"props":1244,"children":1246},{"class":74,"line":1245},63,[1247],{"type":44,"tag":72,"props":1248,"children":1249},{},[1250],{"type":50,"value":998},{"type":44,"tag":72,"props":1252,"children":1254},{"class":74,"line":1253},64,[1255],{"type":44,"tag":72,"props":1256,"children":1257},{},[1258],{"type":50,"value":1259},"    .get_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None, None)\n",{"type":44,"tag":72,"props":1261,"children":1263},{"class":74,"line":1262},65,[1264],{"type":44,"tag":72,"props":1265,"children":1266},{},[1267],{"type":50,"value":580},{"type":44,"tag":72,"props":1269,"children":1271},{"class":74,"line":1270},66,[1272],{"type":44,"tag":72,"props":1273,"children":1274},{"emptyLinePlaceholder":226},[1275],{"type":50,"value":229},{"type":44,"tag":72,"props":1277,"children":1279},{"class":74,"line":1278},67,[1280],{"type":44,"tag":72,"props":1281,"children":1282},{},[1283],{"type":50,"value":1284},"\u002F\u002F Update row\n",{"type":44,"tag":72,"props":1286,"children":1288},{"class":74,"line":1287},68,[1289],{"type":44,"tag":72,"props":1290,"children":1291},{},[1292],{"type":50,"value":1293},"let _updated = tables_db\n",{"type":44,"tag":72,"props":1295,"children":1297},{"class":74,"line":1296},69,[1298],{"type":44,"tag":72,"props":1299,"children":1300},{},[1301],{"type":50,"value":1302},"    .update_row(\n",{"type":44,"tag":72,"props":1304,"children":1306},{"class":74,"line":1305},70,[1307],{"type":44,"tag":72,"props":1308,"children":1309},{},[1310],{"type":50,"value":879},{"type":44,"tag":72,"props":1312,"children":1314},{"class":74,"line":1313},71,[1315],{"type":44,"tag":72,"props":1316,"children":1317},{},[1318],{"type":50,"value":1024},{"type":44,"tag":72,"props":1320,"children":1322},{"class":74,"line":1321},72,[1323],{"type":44,"tag":72,"props":1324,"children":1325},{},[1326],{"type":50,"value":1327},"        \"[ROW_ID]\",\n",{"type":44,"tag":72,"props":1329,"children":1331},{"class":74,"line":1330},73,[1332],{"type":44,"tag":72,"props":1333,"children":1334},{},[1335],{"type":50,"value":1336},"        Some(json!({ \"done\": true })),\n",{"type":44,"tag":72,"props":1338,"children":1340},{"class":74,"line":1339},74,[1341],{"type":44,"tag":72,"props":1342,"children":1343},{},[1344],{"type":50,"value":548},{"type":44,"tag":72,"props":1346,"children":1348},{"class":74,"line":1347},75,[1349],{"type":44,"tag":72,"props":1350,"children":1351},{},[1352],{"type":50,"value":548},{"type":44,"tag":72,"props":1354,"children":1356},{"class":74,"line":1355},76,[1357],{"type":44,"tag":72,"props":1358,"children":1359},{},[1360],{"type":50,"value":572},{"type":44,"tag":72,"props":1362,"children":1364},{"class":74,"line":1363},77,[1365],{"type":44,"tag":72,"props":1366,"children":1367},{},[1368],{"type":50,"value":580},{"type":44,"tag":72,"props":1370,"children":1372},{"class":74,"line":1371},78,[1373],{"type":44,"tag":72,"props":1374,"children":1375},{"emptyLinePlaceholder":226},[1376],{"type":50,"value":229},{"type":44,"tag":72,"props":1378,"children":1380},{"class":74,"line":1379},79,[1381],{"type":44,"tag":72,"props":1382,"children":1383},{},[1384],{"type":50,"value":1385},"\u002F\u002F Delete row\n",{"type":44,"tag":72,"props":1387,"children":1389},{"class":74,"line":1388},80,[1390],{"type":44,"tag":72,"props":1391,"children":1392},{},[1393],{"type":50,"value":1394},"tables_db\n",{"type":44,"tag":72,"props":1396,"children":1398},{"class":74,"line":1397},81,[1399],{"type":44,"tag":72,"props":1400,"children":1401},{},[1402],{"type":50,"value":1403},"    .delete_row(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"[ROW_ID]\", None)\n",{"type":44,"tag":72,"props":1405,"children":1407},{"class":74,"line":1406},82,[1408],{"type":44,"tag":72,"props":1409,"children":1410},{},[1411],{"type":50,"value":580},{"type":44,"tag":1413,"props":1414,"children":1416},"h4",{"id":1415},"string-column-types",[1417],{"type":50,"value":1418},"String Column Types",{"type":44,"tag":679,"props":1420,"children":1421},{},[1422],{"type":44,"tag":139,"props":1423,"children":1424},{},[1425,1429,1431,1437],{"type":44,"tag":686,"props":1426,"children":1427},{},[1428],{"type":50,"value":690},{"type":50,"value":1430}," The legacy ",{"type":44,"tag":68,"props":1432,"children":1434},{"className":1433},[],[1435],{"type":50,"value":1436},"string",{"type":50,"value":1438}," column type is deprecated. Use explicit string column types for new tables.",{"type":44,"tag":1440,"props":1441,"children":1442},"table",{},[1443,1472],{"type":44,"tag":1444,"props":1445,"children":1446},"thead",{},[1447],{"type":44,"tag":1448,"props":1449,"children":1450},"tr",{},[1451,1457,1462,1467],{"type":44,"tag":1452,"props":1453,"children":1454},"th",{},[1455],{"type":50,"value":1456},"Type",{"type":44,"tag":1452,"props":1458,"children":1459},{},[1460],{"type":50,"value":1461},"Max characters",{"type":44,"tag":1452,"props":1463,"children":1464},{},[1465],{"type":50,"value":1466},"Indexing",{"type":44,"tag":1452,"props":1468,"children":1469},{},[1470],{"type":50,"value":1471},"Storage",{"type":44,"tag":1473,"props":1474,"children":1475},"tbody",{},[1476,1504,1529,1554],{"type":44,"tag":1448,"props":1477,"children":1478},{},[1479,1489,1494,1499],{"type":44,"tag":1480,"props":1481,"children":1482},"td",{},[1483],{"type":44,"tag":68,"props":1484,"children":1486},{"className":1485},[],[1487],{"type":50,"value":1488},"varchar",{"type":44,"tag":1480,"props":1490,"children":1491},{},[1492],{"type":50,"value":1493},"16,383",{"type":44,"tag":1480,"props":1495,"children":1496},{},[1497],{"type":50,"value":1498},"Full index (if size \u003C= 768)",{"type":44,"tag":1480,"props":1500,"children":1501},{},[1502],{"type":50,"value":1503},"Inline in row",{"type":44,"tag":1448,"props":1505,"children":1506},{},[1507,1515,1519,1524],{"type":44,"tag":1480,"props":1508,"children":1509},{},[1510],{"type":44,"tag":68,"props":1511,"children":1513},{"className":1512},[],[1514],{"type":50,"value":50},{"type":44,"tag":1480,"props":1516,"children":1517},{},[1518],{"type":50,"value":1493},{"type":44,"tag":1480,"props":1520,"children":1521},{},[1522],{"type":50,"value":1523},"Prefix only",{"type":44,"tag":1480,"props":1525,"children":1526},{},[1527],{"type":50,"value":1528},"Off-page",{"type":44,"tag":1448,"props":1530,"children":1531},{},[1532,1541,1546,1550],{"type":44,"tag":1480,"props":1533,"children":1534},{},[1535],{"type":44,"tag":68,"props":1536,"children":1538},{"className":1537},[],[1539],{"type":50,"value":1540},"mediumtext",{"type":44,"tag":1480,"props":1542,"children":1543},{},[1544],{"type":50,"value":1545},"4,194,303",{"type":44,"tag":1480,"props":1547,"children":1548},{},[1549],{"type":50,"value":1523},{"type":44,"tag":1480,"props":1551,"children":1552},{},[1553],{"type":50,"value":1528},{"type":44,"tag":1448,"props":1555,"children":1556},{},[1557,1566,1571,1575],{"type":44,"tag":1480,"props":1558,"children":1559},{},[1560],{"type":44,"tag":68,"props":1561,"children":1563},{"className":1562},[],[1564],{"type":50,"value":1565},"longtext",{"type":44,"tag":1480,"props":1567,"children":1568},{},[1569],{"type":50,"value":1570},"1,073,741,823",{"type":44,"tag":1480,"props":1572,"children":1573},{},[1574],{"type":50,"value":1523},{"type":44,"tag":1480,"props":1576,"children":1577},{},[1578],{"type":50,"value":1528},{"type":44,"tag":1580,"props":1581,"children":1582},"ul",{},[1583,1594],{"type":44,"tag":1584,"props":1585,"children":1586},"li",{},[1587,1592],{"type":44,"tag":68,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":50,"value":1488},{"type":50,"value":1593}," is stored inline and counts toward the 64 KB row size limit. Prefer it for short, indexed fields like names, slugs, and identifiers.",{"type":44,"tag":1584,"props":1595,"children":1596},{},[1597,1602,1604,1609,1611,1616,1618,1624],{"type":44,"tag":68,"props":1598,"children":1600},{"className":1599},[],[1601],{"type":50,"value":50},{"type":50,"value":1603},", ",{"type":44,"tag":68,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":50,"value":1540},{"type":50,"value":1610},", and ",{"type":44,"tag":68,"props":1612,"children":1614},{"className":1613},[],[1615],{"type":50,"value":1565},{"type":50,"value":1617}," are stored off-page, so they do not consume the row size budget. ",{"type":44,"tag":68,"props":1619,"children":1621},{"className":1620},[],[1622],{"type":50,"value":1623},"size",{"type":50,"value":1625}," is not required for these types.",{"type":44,"tag":60,"props":1627,"children":1629},{"className":199,"code":1628,"language":24,"meta":65,"style":65},"use appwrite::enums::{OrderBy, TablesDBIndexType};\n\n\u002F\u002F Short, indexed string\nlet _title = tables_db\n    .create_varchar_column(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"title\",\n        255,\n        true,\n        None,\n        None,\n        None,\n    )\n    .await?;\n\n\u002F\u002F Off-page longer text\nlet _summary = tables_db\n    .create_text_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"summary\", false, None, None, None)\n    .await?;\n\nlet _body = tables_db\n    .create_mediumtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"body\", false, None, None, None)\n    .await?;\n\nlet _raw_data = tables_db\n    .create_longtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"raw_data\", false, None, None, None)\n    .await?;\n\n\u002F\u002F Index only the varchar column fully.\nlet _index = tables_db\n    .create_index(\n        \"[DATABASE_ID]\",\n        \"[TABLE_ID]\",\n        \"title_idx\",\n        TablesDBIndexType::Key,\n        vec![\"title\"],\n        Some(vec![OrderBy::Asc]),\n        Some(vec![255]),\n    )\n    .await?;\n",[1630],{"type":44,"tag":68,"props":1631,"children":1632},{"__ignoreMap":65},[1633,1641,1648,1656,1664,1672,1679,1686,1694,1702,1710,1717,1724,1731,1738,1745,1752,1760,1768,1776,1783,1790,1798,1806,1813,1820,1828,1836,1843,1850,1858,1866,1874,1881,1888,1896,1904,1912,1920,1928,1935],{"type":44,"tag":72,"props":1634,"children":1635},{"class":74,"line":75},[1636],{"type":44,"tag":72,"props":1637,"children":1638},{},[1639],{"type":50,"value":1640},"use appwrite::enums::{OrderBy, TablesDBIndexType};\n",{"type":44,"tag":72,"props":1642,"children":1643},{"class":74,"line":96},[1644],{"type":44,"tag":72,"props":1645,"children":1646},{"emptyLinePlaceholder":226},[1647],{"type":50,"value":229},{"type":44,"tag":72,"props":1649,"children":1650},{"class":74,"line":123},[1651],{"type":44,"tag":72,"props":1652,"children":1653},{},[1654],{"type":50,"value":1655},"\u002F\u002F Short, indexed string\n",{"type":44,"tag":72,"props":1657,"children":1658},{"class":74,"line":179},[1659],{"type":44,"tag":72,"props":1660,"children":1661},{},[1662],{"type":50,"value":1663},"let _title = tables_db\n",{"type":44,"tag":72,"props":1665,"children":1666},{"class":74,"line":240},[1667],{"type":44,"tag":72,"props":1668,"children":1669},{},[1670],{"type":50,"value":1671},"    .create_varchar_column(\n",{"type":44,"tag":72,"props":1673,"children":1674},{"class":74,"line":249},[1675],{"type":44,"tag":72,"props":1676,"children":1677},{},[1678],{"type":50,"value":879},{"type":44,"tag":72,"props":1680,"children":1681},{"class":74,"line":258},[1682],{"type":44,"tag":72,"props":1683,"children":1684},{},[1685],{"type":50,"value":1024},{"type":44,"tag":72,"props":1687,"children":1688},{"class":74,"line":334},[1689],{"type":44,"tag":72,"props":1690,"children":1691},{},[1692],{"type":50,"value":1693},"        \"title\",\n",{"type":44,"tag":72,"props":1695,"children":1696},{"class":74,"line":343},[1697],{"type":44,"tag":72,"props":1698,"children":1699},{},[1700],{"type":50,"value":1701},"        255,\n",{"type":44,"tag":72,"props":1703,"children":1704},{"class":74,"line":352},[1705],{"type":44,"tag":72,"props":1706,"children":1707},{},[1708],{"type":50,"value":1709},"        true,\n",{"type":44,"tag":72,"props":1711,"children":1712},{"class":74,"line":361},[1713],{"type":44,"tag":72,"props":1714,"children":1715},{},[1716],{"type":50,"value":548},{"type":44,"tag":72,"props":1718,"children":1719},{"class":74,"line":370},[1720],{"type":44,"tag":72,"props":1721,"children":1722},{},[1723],{"type":50,"value":548},{"type":44,"tag":72,"props":1725,"children":1726},{"class":74,"line":378},[1727],{"type":44,"tag":72,"props":1728,"children":1729},{},[1730],{"type":50,"value":548},{"type":44,"tag":72,"props":1732,"children":1733},{"class":74,"line":387},[1734],{"type":44,"tag":72,"props":1735,"children":1736},{},[1737],{"type":50,"value":572},{"type":44,"tag":72,"props":1739,"children":1740},{"class":74,"line":396},[1741],{"type":44,"tag":72,"props":1742,"children":1743},{},[1744],{"type":50,"value":580},{"type":44,"tag":72,"props":1746,"children":1747},{"class":74,"line":405},[1748],{"type":44,"tag":72,"props":1749,"children":1750},{"emptyLinePlaceholder":226},[1751],{"type":50,"value":229},{"type":44,"tag":72,"props":1753,"children":1754},{"class":74,"line":414},[1755],{"type":44,"tag":72,"props":1756,"children":1757},{},[1758],{"type":50,"value":1759},"\u002F\u002F Off-page longer text\n",{"type":44,"tag":72,"props":1761,"children":1762},{"class":74,"line":422},[1763],{"type":44,"tag":72,"props":1764,"children":1765},{},[1766],{"type":50,"value":1767},"let _summary = tables_db\n",{"type":44,"tag":72,"props":1769,"children":1770},{"class":74,"line":431},[1771],{"type":44,"tag":72,"props":1772,"children":1773},{},[1774],{"type":50,"value":1775},"    .create_text_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"summary\", false, None, None, None)\n",{"type":44,"tag":72,"props":1777,"children":1778},{"class":74,"line":606},[1779],{"type":44,"tag":72,"props":1780,"children":1781},{},[1782],{"type":50,"value":580},{"type":44,"tag":72,"props":1784,"children":1785},{"class":74,"line":615},[1786],{"type":44,"tag":72,"props":1787,"children":1788},{"emptyLinePlaceholder":226},[1789],{"type":50,"value":229},{"type":44,"tag":72,"props":1791,"children":1792},{"class":74,"line":623},[1793],{"type":44,"tag":72,"props":1794,"children":1795},{},[1796],{"type":50,"value":1797},"let _body = tables_db\n",{"type":44,"tag":72,"props":1799,"children":1800},{"class":74,"line":28},[1801],{"type":44,"tag":72,"props":1802,"children":1803},{},[1804],{"type":50,"value":1805},"    .create_mediumtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"body\", false, None, None, None)\n",{"type":44,"tag":72,"props":1807,"children":1808},{"class":74,"line":639},[1809],{"type":44,"tag":72,"props":1810,"children":1811},{},[1812],{"type":50,"value":580},{"type":44,"tag":72,"props":1814,"children":1815},{"class":74,"line":648},[1816],{"type":44,"tag":72,"props":1817,"children":1818},{"emptyLinePlaceholder":226},[1819],{"type":50,"value":229},{"type":44,"tag":72,"props":1821,"children":1822},{"class":74,"line":656},[1823],{"type":44,"tag":72,"props":1824,"children":1825},{},[1826],{"type":50,"value":1827},"let _raw_data = tables_db\n",{"type":44,"tag":72,"props":1829,"children":1830},{"class":74,"line":665},[1831],{"type":44,"tag":72,"props":1832,"children":1833},{},[1834],{"type":50,"value":1835},"    .create_longtext_column(\"[DATABASE_ID]\", \"[TABLE_ID]\", \"raw_data\", false, None, None, None)\n",{"type":44,"tag":72,"props":1837,"children":1838},{"class":74,"line":951},[1839],{"type":44,"tag":72,"props":1840,"children":1841},{},[1842],{"type":50,"value":580},{"type":44,"tag":72,"props":1844,"children":1845},{"class":74,"line":959},[1846],{"type":44,"tag":72,"props":1847,"children":1848},{"emptyLinePlaceholder":226},[1849],{"type":50,"value":229},{"type":44,"tag":72,"props":1851,"children":1852},{"class":74,"line":967},[1853],{"type":44,"tag":72,"props":1854,"children":1855},{},[1856],{"type":50,"value":1857},"\u002F\u002F Index only the varchar column fully.\n",{"type":44,"tag":72,"props":1859,"children":1860},{"class":74,"line":975},[1861],{"type":44,"tag":72,"props":1862,"children":1863},{},[1864],{"type":50,"value":1865},"let _index = tables_db\n",{"type":44,"tag":72,"props":1867,"children":1868},{"class":74,"line":983},[1869],{"type":44,"tag":72,"props":1870,"children":1871},{},[1872],{"type":50,"value":1873},"    .create_index(\n",{"type":44,"tag":72,"props":1875,"children":1876},{"class":74,"line":992},[1877],{"type":44,"tag":72,"props":1878,"children":1879},{},[1880],{"type":50,"value":879},{"type":44,"tag":72,"props":1882,"children":1883},{"class":74,"line":1001},[1884],{"type":44,"tag":72,"props":1885,"children":1886},{},[1887],{"type":50,"value":1024},{"type":44,"tag":72,"props":1889,"children":1890},{"class":74,"line":1010},[1891],{"type":44,"tag":72,"props":1892,"children":1893},{},[1894],{"type":50,"value":1895},"        \"title_idx\",\n",{"type":44,"tag":72,"props":1897,"children":1898},{"class":74,"line":1018},[1899],{"type":44,"tag":72,"props":1900,"children":1901},{},[1902],{"type":50,"value":1903},"        TablesDBIndexType::Key,\n",{"type":44,"tag":72,"props":1905,"children":1906},{"class":74,"line":1027},[1907],{"type":44,"tag":72,"props":1908,"children":1909},{},[1910],{"type":50,"value":1911},"        vec![\"title\"],\n",{"type":44,"tag":72,"props":1913,"children":1914},{"class":74,"line":1035},[1915],{"type":44,"tag":72,"props":1916,"children":1917},{},[1918],{"type":50,"value":1919},"        Some(vec![OrderBy::Asc]),\n",{"type":44,"tag":72,"props":1921,"children":1922},{"class":74,"line":1044},[1923],{"type":44,"tag":72,"props":1924,"children":1925},{},[1926],{"type":50,"value":1927},"        Some(vec![255]),\n",{"type":44,"tag":72,"props":1929,"children":1930},{"class":74,"line":1053},[1931],{"type":44,"tag":72,"props":1932,"children":1933},{},[1934],{"type":50,"value":572},{"type":44,"tag":72,"props":1936,"children":1937},{"class":74,"line":1062},[1938],{"type":44,"tag":72,"props":1939,"children":1940},{},[1941],{"type":50,"value":580},{"type":44,"tag":266,"props":1943,"children":1945},{"id":1944},"query-methods",[1946],{"type":50,"value":1947},"Query Methods",{"type":44,"tag":139,"props":1949,"children":1950},{},[1951,1956,1958,1964,1966,1972],{"type":44,"tag":68,"props":1952,"children":1954},{"className":1953},[],[1955],{"type":50,"value":698},{"type":50,"value":1957}," methods accept ",{"type":44,"tag":68,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":50,"value":1963},"Option\u003CVec\u003CString>>",{"type":50,"value":1965}," for queries. Convert each ",{"type":44,"tag":68,"props":1967,"children":1969},{"className":1968},[],[1970],{"type":50,"value":1971},"Query",{"type":50,"value":1973}," to a string.",{"type":44,"tag":60,"props":1975,"children":1977},{"className":199,"code":1976,"language":24,"meta":65,"style":65},"use appwrite::query::Query;\nuse serde_json::Value;\n\nlet queries = vec![\n    Query::equal(\"status\", \"published\").to_string(),\n    Query::not_equal(\"archived\", true).to_string(),\n    Query::greater_than(\"views\", 100).to_string(),\n    Query::less_than_equal(\"priority\", 5).to_string(),\n    Query::between(\"score\", 1, 100).to_string(),\n    Query::is_not_null(\"publishedAt\").to_string(),\n    Query::search(\"title\", \"rust appwrite\").to_string(),\n    Query::contains(\"tags\", \"rust\").to_string(),\n    Query::order_desc(\"$createdAt\").to_string(),\n    Query::limit(25).to_string(),\n    Query::offset(50).to_string(),\n];\n\nlet multi_value = Query::equal(\n    \"status\",\n    Value::Array(vec![\n        Value::String(\"draft\".to_string()),\n        Value::String(\"published\".to_string()),\n    ]),\n)\n.to_string();\n",[1978],{"type":44,"tag":68,"props":1979,"children":1980},{"__ignoreMap":65},[1981,1988,1996,2003,2011,2019,2027,2035,2043,2051,2059,2067,2075,2083,2091,2099,2107,2114,2122,2130,2138,2146,2154,2162,2170],{"type":44,"tag":72,"props":1982,"children":1983},{"class":74,"line":75},[1984],{"type":44,"tag":72,"props":1985,"children":1986},{},[1987],{"type":50,"value":286},{"type":44,"tag":72,"props":1989,"children":1990},{"class":74,"line":96},[1991],{"type":44,"tag":72,"props":1992,"children":1993},{},[1994],{"type":50,"value":1995},"use serde_json::Value;\n",{"type":44,"tag":72,"props":1997,"children":1998},{"class":74,"line":123},[1999],{"type":44,"tag":72,"props":2000,"children":2001},{"emptyLinePlaceholder":226},[2002],{"type":50,"value":229},{"type":44,"tag":72,"props":2004,"children":2005},{"class":74,"line":179},[2006],{"type":44,"tag":72,"props":2007,"children":2008},{},[2009],{"type":50,"value":2010},"let queries = vec![\n",{"type":44,"tag":72,"props":2012,"children":2013},{"class":74,"line":240},[2014],{"type":44,"tag":72,"props":2015,"children":2016},{},[2017],{"type":50,"value":2018},"    Query::equal(\"status\", \"published\").to_string(),\n",{"type":44,"tag":72,"props":2020,"children":2021},{"class":74,"line":249},[2022],{"type":44,"tag":72,"props":2023,"children":2024},{},[2025],{"type":50,"value":2026},"    Query::not_equal(\"archived\", true).to_string(),\n",{"type":44,"tag":72,"props":2028,"children":2029},{"class":74,"line":258},[2030],{"type":44,"tag":72,"props":2031,"children":2032},{},[2033],{"type":50,"value":2034},"    Query::greater_than(\"views\", 100).to_string(),\n",{"type":44,"tag":72,"props":2036,"children":2037},{"class":74,"line":334},[2038],{"type":44,"tag":72,"props":2039,"children":2040},{},[2041],{"type":50,"value":2042},"    Query::less_than_equal(\"priority\", 5).to_string(),\n",{"type":44,"tag":72,"props":2044,"children":2045},{"class":74,"line":343},[2046],{"type":44,"tag":72,"props":2047,"children":2048},{},[2049],{"type":50,"value":2050},"    Query::between(\"score\", 1, 100).to_string(),\n",{"type":44,"tag":72,"props":2052,"children":2053},{"class":74,"line":352},[2054],{"type":44,"tag":72,"props":2055,"children":2056},{},[2057],{"type":50,"value":2058},"    Query::is_not_null(\"publishedAt\").to_string(),\n",{"type":44,"tag":72,"props":2060,"children":2061},{"class":74,"line":361},[2062],{"type":44,"tag":72,"props":2063,"children":2064},{},[2065],{"type":50,"value":2066},"    Query::search(\"title\", \"rust appwrite\").to_string(),\n",{"type":44,"tag":72,"props":2068,"children":2069},{"class":74,"line":370},[2070],{"type":44,"tag":72,"props":2071,"children":2072},{},[2073],{"type":50,"value":2074},"    Query::contains(\"tags\", \"rust\").to_string(),\n",{"type":44,"tag":72,"props":2076,"children":2077},{"class":74,"line":378},[2078],{"type":44,"tag":72,"props":2079,"children":2080},{},[2081],{"type":50,"value":2082},"    Query::order_desc(\"$createdAt\").to_string(),\n",{"type":44,"tag":72,"props":2084,"children":2085},{"class":74,"line":387},[2086],{"type":44,"tag":72,"props":2087,"children":2088},{},[2089],{"type":50,"value":2090},"    Query::limit(25).to_string(),\n",{"type":44,"tag":72,"props":2092,"children":2093},{"class":74,"line":396},[2094],{"type":44,"tag":72,"props":2095,"children":2096},{},[2097],{"type":50,"value":2098},"    Query::offset(50).to_string(),\n",{"type":44,"tag":72,"props":2100,"children":2101},{"class":74,"line":405},[2102],{"type":44,"tag":72,"props":2103,"children":2104},{},[2105],{"type":50,"value":2106},"];\n",{"type":44,"tag":72,"props":2108,"children":2109},{"class":74,"line":414},[2110],{"type":44,"tag":72,"props":2111,"children":2112},{"emptyLinePlaceholder":226},[2113],{"type":50,"value":229},{"type":44,"tag":72,"props":2115,"children":2116},{"class":74,"line":422},[2117],{"type":44,"tag":72,"props":2118,"children":2119},{},[2120],{"type":50,"value":2121},"let multi_value = Query::equal(\n",{"type":44,"tag":72,"props":2123,"children":2124},{"class":74,"line":431},[2125],{"type":44,"tag":72,"props":2126,"children":2127},{},[2128],{"type":50,"value":2129},"    \"status\",\n",{"type":44,"tag":72,"props":2131,"children":2132},{"class":74,"line":606},[2133],{"type":44,"tag":72,"props":2134,"children":2135},{},[2136],{"type":50,"value":2137},"    Value::Array(vec![\n",{"type":44,"tag":72,"props":2139,"children":2140},{"class":74,"line":615},[2141],{"type":44,"tag":72,"props":2142,"children":2143},{},[2144],{"type":50,"value":2145},"        Value::String(\"draft\".to_string()),\n",{"type":44,"tag":72,"props":2147,"children":2148},{"class":74,"line":623},[2149],{"type":44,"tag":72,"props":2150,"children":2151},{},[2152],{"type":50,"value":2153},"        Value::String(\"published\".to_string()),\n",{"type":44,"tag":72,"props":2155,"children":2156},{"class":74,"line":28},[2157],{"type":44,"tag":72,"props":2158,"children":2159},{},[2160],{"type":50,"value":2161},"    ]),\n",{"type":44,"tag":72,"props":2163,"children":2164},{"class":74,"line":639},[2165],{"type":44,"tag":72,"props":2166,"children":2167},{},[2168],{"type":50,"value":2169},")\n",{"type":44,"tag":72,"props":2171,"children":2172},{"class":74,"line":648},[2173],{"type":44,"tag":72,"props":2174,"children":2175},{},[2176],{"type":50,"value":2177},".to_string();\n",{"type":44,"tag":266,"props":2179,"children":2180},{"id":18},[2181],{"type":50,"value":17},{"type":44,"tag":60,"props":2183,"children":2185},{"className":199,"code":2184,"language":24,"meta":65,"style":65},"use appwrite::id::ID;\nuse appwrite::input_file::InputFile;\nuse appwrite::permission::Permission;\nuse appwrite::query::Query;\nuse appwrite::role::Role;\nuse appwrite::services::Storage;\n\nlet storage = Storage::new(&client);\n\n\u002F\u002F Create bucket\nlet _bucket = storage\n    .create_bucket(\n        ID::unique(),\n        \"Uploads\",\n        Some(vec![\n            Permission::read(Role::any()).to_string(),\n            Permission::create(Role::users(None)).to_string(),\n        ]),\n        Some(true),\n        Some(true),\n        Some(30_000_000),\n        Some(vec![\"jpg\".to_string(), \"png\".to_string(), \"pdf\".to_string()]),\n        None,\n        Some(true),\n        Some(true),\n        Some(true),\n    )\n    .await?;\n\n\u002F\u002F Upload from disk\nlet input = InputFile::from_path(\"avatar.png\", Some(\"image\u002Fpng\")).await?;\nlet _file = storage\n    .create_file(\n        \"[BUCKET_ID]\",\n        ID::unique(),\n        input,\n        Some(vec![Permission::read(Role::any()).to_string()]),\n    )\n    .await?;\n\n\u002F\u002F Upload from bytes\nlet input = InputFile::from_bytes(b\"hello\".to_vec(), \"hello.txt\", Some(\"text\u002Fplain\"));\nlet _file = storage.create_file(\"[BUCKET_ID]\", ID::unique(), input, None).await?;\n\n\u002F\u002F List files\nlet _files = storage\n    .list_files(\"[BUCKET_ID]\", Some(vec![Query::limit(10).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Download file bytes\nlet _content = storage\n    .get_file_download(\"[BUCKET_ID]\", \"[FILE_ID]\", None)\n    .await?;\n\n\u002F\u002F Delete file\nstorage.delete_file(\"[BUCKET_ID]\", \"[FILE_ID]\").await?;\n",[2186],{"type":44,"tag":68,"props":2187,"children":2188},{"__ignoreMap":65},[2189,2196,2204,2211,2218,2225,2233,2240,2248,2255,2263,2271,2279,2286,2294,2301,2308,2315,2322,2329,2336,2344,2352,2359,2366,2373,2380,2387,2394,2401,2409,2417,2425,2433,2441,2448,2456,2464,2471,2478,2485,2493,2501,2509,2516,2524,2532,2540,2547,2554,2562,2570,2578,2585,2592,2600],{"type":44,"tag":72,"props":2190,"children":2191},{"class":74,"line":75},[2192],{"type":44,"tag":72,"props":2193,"children":2194},{},[2195],{"type":50,"value":464},{"type":44,"tag":72,"props":2197,"children":2198},{"class":74,"line":96},[2199],{"type":44,"tag":72,"props":2200,"children":2201},{},[2202],{"type":50,"value":2203},"use appwrite::input_file::InputFile;\n",{"type":44,"tag":72,"props":2205,"children":2206},{"class":74,"line":123},[2207],{"type":44,"tag":72,"props":2208,"children":2209},{},[2210],{"type":50,"value":756},{"type":44,"tag":72,"props":2212,"children":2213},{"class":74,"line":179},[2214],{"type":44,"tag":72,"props":2215,"children":2216},{},[2217],{"type":50,"value":286},{"type":44,"tag":72,"props":2219,"children":2220},{"class":74,"line":240},[2221],{"type":44,"tag":72,"props":2222,"children":2223},{},[2224],{"type":50,"value":771},{"type":44,"tag":72,"props":2226,"children":2227},{"class":74,"line":249},[2228],{"type":44,"tag":72,"props":2229,"children":2230},{},[2231],{"type":50,"value":2232},"use appwrite::services::Storage;\n",{"type":44,"tag":72,"props":2234,"children":2235},{"class":74,"line":258},[2236],{"type":44,"tag":72,"props":2237,"children":2238},{"emptyLinePlaceholder":226},[2239],{"type":50,"value":229},{"type":44,"tag":72,"props":2241,"children":2242},{"class":74,"line":334},[2243],{"type":44,"tag":72,"props":2244,"children":2245},{},[2246],{"type":50,"value":2247},"let storage = Storage::new(&client);\n",{"type":44,"tag":72,"props":2249,"children":2250},{"class":74,"line":343},[2251],{"type":44,"tag":72,"props":2252,"children":2253},{"emptyLinePlaceholder":226},[2254],{"type":50,"value":229},{"type":44,"tag":72,"props":2256,"children":2257},{"class":74,"line":352},[2258],{"type":44,"tag":72,"props":2259,"children":2260},{},[2261],{"type":50,"value":2262},"\u002F\u002F Create bucket\n",{"type":44,"tag":72,"props":2264,"children":2265},{"class":74,"line":361},[2266],{"type":44,"tag":72,"props":2267,"children":2268},{},[2269],{"type":50,"value":2270},"let _bucket = storage\n",{"type":44,"tag":72,"props":2272,"children":2273},{"class":74,"line":370},[2274],{"type":44,"tag":72,"props":2275,"children":2276},{},[2277],{"type":50,"value":2278},"    .create_bucket(\n",{"type":44,"tag":72,"props":2280,"children":2281},{"class":74,"line":378},[2282],{"type":44,"tag":72,"props":2283,"children":2284},{},[2285],{"type":50,"value":532},{"type":44,"tag":72,"props":2287,"children":2288},{"class":74,"line":387},[2289],{"type":44,"tag":72,"props":2290,"children":2291},{},[2292],{"type":50,"value":2293},"        \"Uploads\",\n",{"type":44,"tag":72,"props":2295,"children":2296},{"class":74,"line":396},[2297],{"type":44,"tag":72,"props":2298,"children":2299},{},[2300],{"type":50,"value":902},{"type":44,"tag":72,"props":2302,"children":2303},{"class":74,"line":405},[2304],{"type":44,"tag":72,"props":2305,"children":2306},{},[2307],{"type":50,"value":910},{"type":44,"tag":72,"props":2309,"children":2310},{"class":74,"line":414},[2311],{"type":44,"tag":72,"props":2312,"children":2313},{},[2314],{"type":50,"value":918},{"type":44,"tag":72,"props":2316,"children":2317},{"class":74,"line":422},[2318],{"type":44,"tag":72,"props":2319,"children":2320},{},[2321],{"type":50,"value":926},{"type":44,"tag":72,"props":2323,"children":2324},{"class":74,"line":431},[2325],{"type":44,"tag":72,"props":2326,"children":2327},{},[2328],{"type":50,"value":934},{"type":44,"tag":72,"props":2330,"children":2331},{"class":74,"line":606},[2332],{"type":44,"tag":72,"props":2333,"children":2334},{},[2335],{"type":50,"value":934},{"type":44,"tag":72,"props":2337,"children":2338},{"class":74,"line":615},[2339],{"type":44,"tag":72,"props":2340,"children":2341},{},[2342],{"type":50,"value":2343},"        Some(30_000_000),\n",{"type":44,"tag":72,"props":2345,"children":2346},{"class":74,"line":623},[2347],{"type":44,"tag":72,"props":2348,"children":2349},{},[2350],{"type":50,"value":2351},"        Some(vec![\"jpg\".to_string(), \"png\".to_string(), \"pdf\".to_string()]),\n",{"type":44,"tag":72,"props":2353,"children":2354},{"class":74,"line":28},[2355],{"type":44,"tag":72,"props":2356,"children":2357},{},[2358],{"type":50,"value":548},{"type":44,"tag":72,"props":2360,"children":2361},{"class":74,"line":639},[2362],{"type":44,"tag":72,"props":2363,"children":2364},{},[2365],{"type":50,"value":934},{"type":44,"tag":72,"props":2367,"children":2368},{"class":74,"line":648},[2369],{"type":44,"tag":72,"props":2370,"children":2371},{},[2372],{"type":50,"value":934},{"type":44,"tag":72,"props":2374,"children":2375},{"class":74,"line":656},[2376],{"type":44,"tag":72,"props":2377,"children":2378},{},[2379],{"type":50,"value":934},{"type":44,"tag":72,"props":2381,"children":2382},{"class":74,"line":665},[2383],{"type":44,"tag":72,"props":2384,"children":2385},{},[2386],{"type":50,"value":572},{"type":44,"tag":72,"props":2388,"children":2389},{"class":74,"line":951},[2390],{"type":44,"tag":72,"props":2391,"children":2392},{},[2393],{"type":50,"value":580},{"type":44,"tag":72,"props":2395,"children":2396},{"class":74,"line":959},[2397],{"type":44,"tag":72,"props":2398,"children":2399},{"emptyLinePlaceholder":226},[2400],{"type":50,"value":229},{"type":44,"tag":72,"props":2402,"children":2403},{"class":74,"line":967},[2404],{"type":44,"tag":72,"props":2405,"children":2406},{},[2407],{"type":50,"value":2408},"\u002F\u002F Upload from disk\n",{"type":44,"tag":72,"props":2410,"children":2411},{"class":74,"line":975},[2412],{"type":44,"tag":72,"props":2413,"children":2414},{},[2415],{"type":50,"value":2416},"let input = InputFile::from_path(\"avatar.png\", Some(\"image\u002Fpng\")).await?;\n",{"type":44,"tag":72,"props":2418,"children":2419},{"class":74,"line":983},[2420],{"type":44,"tag":72,"props":2421,"children":2422},{},[2423],{"type":50,"value":2424},"let _file = storage\n",{"type":44,"tag":72,"props":2426,"children":2427},{"class":74,"line":992},[2428],{"type":44,"tag":72,"props":2429,"children":2430},{},[2431],{"type":50,"value":2432},"    .create_file(\n",{"type":44,"tag":72,"props":2434,"children":2435},{"class":74,"line":1001},[2436],{"type":44,"tag":72,"props":2437,"children":2438},{},[2439],{"type":50,"value":2440},"        \"[BUCKET_ID]\",\n",{"type":44,"tag":72,"props":2442,"children":2443},{"class":74,"line":1010},[2444],{"type":44,"tag":72,"props":2445,"children":2446},{},[2447],{"type":50,"value":532},{"type":44,"tag":72,"props":2449,"children":2450},{"class":74,"line":1018},[2451],{"type":44,"tag":72,"props":2452,"children":2453},{},[2454],{"type":50,"value":2455},"        input,\n",{"type":44,"tag":72,"props":2457,"children":2458},{"class":74,"line":1027},[2459],{"type":44,"tag":72,"props":2460,"children":2461},{},[2462],{"type":50,"value":2463},"        Some(vec![Permission::read(Role::any()).to_string()]),\n",{"type":44,"tag":72,"props":2465,"children":2466},{"class":74,"line":1035},[2467],{"type":44,"tag":72,"props":2468,"children":2469},{},[2470],{"type":50,"value":572},{"type":44,"tag":72,"props":2472,"children":2473},{"class":74,"line":1044},[2474],{"type":44,"tag":72,"props":2475,"children":2476},{},[2477],{"type":50,"value":580},{"type":44,"tag":72,"props":2479,"children":2480},{"class":74,"line":1053},[2481],{"type":44,"tag":72,"props":2482,"children":2483},{"emptyLinePlaceholder":226},[2484],{"type":50,"value":229},{"type":44,"tag":72,"props":2486,"children":2487},{"class":74,"line":1062},[2488],{"type":44,"tag":72,"props":2489,"children":2490},{},[2491],{"type":50,"value":2492},"\u002F\u002F Upload from bytes\n",{"type":44,"tag":72,"props":2494,"children":2495},{"class":74,"line":1071},[2496],{"type":44,"tag":72,"props":2497,"children":2498},{},[2499],{"type":50,"value":2500},"let input = InputFile::from_bytes(b\"hello\".to_vec(), \"hello.txt\", Some(\"text\u002Fplain\"));\n",{"type":44,"tag":72,"props":2502,"children":2503},{"class":74,"line":1079},[2504],{"type":44,"tag":72,"props":2505,"children":2506},{},[2507],{"type":50,"value":2508},"let _file = storage.create_file(\"[BUCKET_ID]\", ID::unique(), input, None).await?;\n",{"type":44,"tag":72,"props":2510,"children":2511},{"class":74,"line":1087},[2512],{"type":44,"tag":72,"props":2513,"children":2514},{"emptyLinePlaceholder":226},[2515],{"type":50,"value":229},{"type":44,"tag":72,"props":2517,"children":2518},{"class":74,"line":1095},[2519],{"type":44,"tag":72,"props":2520,"children":2521},{},[2522],{"type":50,"value":2523},"\u002F\u002F List files\n",{"type":44,"tag":72,"props":2525,"children":2526},{"class":74,"line":1103},[2527],{"type":44,"tag":72,"props":2528,"children":2529},{},[2530],{"type":50,"value":2531},"let _files = storage\n",{"type":44,"tag":72,"props":2533,"children":2534},{"class":74,"line":1111},[2535],{"type":44,"tag":72,"props":2536,"children":2537},{},[2538],{"type":50,"value":2539},"    .list_files(\"[BUCKET_ID]\", Some(vec![Query::limit(10).to_string()]), None, Some(true))\n",{"type":44,"tag":72,"props":2541,"children":2542},{"class":74,"line":1120},[2543],{"type":44,"tag":72,"props":2544,"children":2545},{},[2546],{"type":50,"value":580},{"type":44,"tag":72,"props":2548,"children":2549},{"class":74,"line":1129},[2550],{"type":44,"tag":72,"props":2551,"children":2552},{"emptyLinePlaceholder":226},[2553],{"type":50,"value":229},{"type":44,"tag":72,"props":2555,"children":2556},{"class":74,"line":1138},[2557],{"type":44,"tag":72,"props":2558,"children":2559},{},[2560],{"type":50,"value":2561},"\u002F\u002F Download file bytes\n",{"type":44,"tag":72,"props":2563,"children":2564},{"class":74,"line":1146},[2565],{"type":44,"tag":72,"props":2566,"children":2567},{},[2568],{"type":50,"value":2569},"let _content = storage\n",{"type":44,"tag":72,"props":2571,"children":2572},{"class":74,"line":1154},[2573],{"type":44,"tag":72,"props":2574,"children":2575},{},[2576],{"type":50,"value":2577},"    .get_file_download(\"[BUCKET_ID]\", \"[FILE_ID]\", None)\n",{"type":44,"tag":72,"props":2579,"children":2580},{"class":74,"line":1162},[2581],{"type":44,"tag":72,"props":2582,"children":2583},{},[2584],{"type":50,"value":580},{"type":44,"tag":72,"props":2586,"children":2587},{"class":74,"line":1171},[2588],{"type":44,"tag":72,"props":2589,"children":2590},{"emptyLinePlaceholder":226},[2591],{"type":50,"value":229},{"type":44,"tag":72,"props":2593,"children":2594},{"class":74,"line":1180},[2595],{"type":44,"tag":72,"props":2596,"children":2597},{},[2598],{"type":50,"value":2599},"\u002F\u002F Delete file\n",{"type":44,"tag":72,"props":2601,"children":2602},{"class":74,"line":1188},[2603],{"type":44,"tag":72,"props":2604,"children":2605},{},[2606],{"type":50,"value":2607},"storage.delete_file(\"[BUCKET_ID]\", \"[FILE_ID]\").await?;\n",{"type":44,"tag":266,"props":2609,"children":2611},{"id":2610},"functions",[2612],{"type":50,"value":2613},"Functions",{"type":44,"tag":60,"props":2615,"children":2617},{"className":199,"code":2616,"language":24,"meta":65,"style":65},"use appwrite::enums::ExecutionMethod;\nuse appwrite::query::Query;\nuse appwrite::services::Functions;\nuse serde_json::json;\n\nlet functions = Functions::new(&client);\n\n\u002F\u002F List functions\nlet _functions = functions\n    .list(Some(vec![Query::limit(25).to_string()]), None, Some(true))\n    .await?;\n\n\u002F\u002F Execute function\nlet _execution = functions\n    .create_execution(\n        \"[FUNCTION_ID]\",\n        Some(r#\"{\"hello\":\"world\"}\"#),\n        Some(false),\n        Some(\"\u002Fjobs\u002Fsync\"),\n        Some(ExecutionMethod::POST),\n        Some(json!({ \"content-type\": \"application\u002Fjson\" })),\n        None,\n    )\n    .await?;\n\n\u002F\u002F Get execution\nlet _execution = functions\n    .get_execution(\"[FUNCTION_ID]\", \"[EXECUTION_ID]\")\n    .await?;\n",[2618],{"type":44,"tag":68,"props":2619,"children":2620},{"__ignoreMap":65},[2621,2629,2636,2644,2651,2658,2666,2673,2681,2689,2696,2703,2710,2718,2726,2734,2742,2750,2758,2766,2774,2782,2789,2796,2803,2810,2818,2825,2833],{"type":44,"tag":72,"props":2622,"children":2623},{"class":74,"line":75},[2624],{"type":44,"tag":72,"props":2625,"children":2626},{},[2627],{"type":50,"value":2628},"use appwrite::enums::ExecutionMethod;\n",{"type":44,"tag":72,"props":2630,"children":2631},{"class":74,"line":96},[2632],{"type":44,"tag":72,"props":2633,"children":2634},{},[2635],{"type":50,"value":286},{"type":44,"tag":72,"props":2637,"children":2638},{"class":74,"line":123},[2639],{"type":44,"tag":72,"props":2640,"children":2641},{},[2642],{"type":50,"value":2643},"use appwrite::services::Functions;\n",{"type":44,"tag":72,"props":2645,"children":2646},{"class":74,"line":179},[2647],{"type":44,"tag":72,"props":2648,"children":2649},{},[2650],{"type":50,"value":787},{"type":44,"tag":72,"props":2652,"children":2653},{"class":74,"line":240},[2654],{"type":44,"tag":72,"props":2655,"children":2656},{"emptyLinePlaceholder":226},[2657],{"type":50,"value":229},{"type":44,"tag":72,"props":2659,"children":2660},{"class":74,"line":249},[2661],{"type":44,"tag":72,"props":2662,"children":2663},{},[2664],{"type":50,"value":2665},"let functions = Functions::new(&client);\n",{"type":44,"tag":72,"props":2667,"children":2668},{"class":74,"line":258},[2669],{"type":44,"tag":72,"props":2670,"children":2671},{"emptyLinePlaceholder":226},[2672],{"type":50,"value":229},{"type":44,"tag":72,"props":2674,"children":2675},{"class":74,"line":334},[2676],{"type":44,"tag":72,"props":2677,"children":2678},{},[2679],{"type":50,"value":2680},"\u002F\u002F List functions\n",{"type":44,"tag":72,"props":2682,"children":2683},{"class":74,"line":343},[2684],{"type":44,"tag":72,"props":2685,"children":2686},{},[2687],{"type":50,"value":2688},"let _functions = functions\n",{"type":44,"tag":72,"props":2690,"children":2691},{"class":74,"line":352},[2692],{"type":44,"tag":72,"props":2693,"children":2694},{},[2695],{"type":50,"value":612},{"type":44,"tag":72,"props":2697,"children":2698},{"class":74,"line":361},[2699],{"type":44,"tag":72,"props":2700,"children":2701},{},[2702],{"type":50,"value":580},{"type":44,"tag":72,"props":2704,"children":2705},{"class":74,"line":370},[2706],{"type":44,"tag":72,"props":2707,"children":2708},{"emptyLinePlaceholder":226},[2709],{"type":50,"value":229},{"type":44,"tag":72,"props":2711,"children":2712},{"class":74,"line":378},[2713],{"type":44,"tag":72,"props":2714,"children":2715},{},[2716],{"type":50,"value":2717},"\u002F\u002F Execute function\n",{"type":44,"tag":72,"props":2719,"children":2720},{"class":74,"line":387},[2721],{"type":44,"tag":72,"props":2722,"children":2723},{},[2724],{"type":50,"value":2725},"let _execution = functions\n",{"type":44,"tag":72,"props":2727,"children":2728},{"class":74,"line":396},[2729],{"type":44,"tag":72,"props":2730,"children":2731},{},[2732],{"type":50,"value":2733},"    .create_execution(\n",{"type":44,"tag":72,"props":2735,"children":2736},{"class":74,"line":405},[2737],{"type":44,"tag":72,"props":2738,"children":2739},{},[2740],{"type":50,"value":2741},"        \"[FUNCTION_ID]\",\n",{"type":44,"tag":72,"props":2743,"children":2744},{"class":74,"line":414},[2745],{"type":44,"tag":72,"props":2746,"children":2747},{},[2748],{"type":50,"value":2749},"        Some(r#\"{\"hello\":\"world\"}\"#),\n",{"type":44,"tag":72,"props":2751,"children":2752},{"class":74,"line":422},[2753],{"type":44,"tag":72,"props":2754,"children":2755},{},[2756],{"type":50,"value":2757},"        Some(false),\n",{"type":44,"tag":72,"props":2759,"children":2760},{"class":74,"line":431},[2761],{"type":44,"tag":72,"props":2762,"children":2763},{},[2764],{"type":50,"value":2765},"        Some(\"\u002Fjobs\u002Fsync\"),\n",{"type":44,"tag":72,"props":2767,"children":2768},{"class":74,"line":606},[2769],{"type":44,"tag":72,"props":2770,"children":2771},{},[2772],{"type":50,"value":2773},"        Some(ExecutionMethod::POST),\n",{"type":44,"tag":72,"props":2775,"children":2776},{"class":74,"line":615},[2777],{"type":44,"tag":72,"props":2778,"children":2779},{},[2780],{"type":50,"value":2781},"        Some(json!({ \"content-type\": \"application\u002Fjson\" })),\n",{"type":44,"tag":72,"props":2783,"children":2784},{"class":74,"line":623},[2785],{"type":44,"tag":72,"props":2786,"children":2787},{},[2788],{"type":50,"value":548},{"type":44,"tag":72,"props":2790,"children":2791},{"class":74,"line":28},[2792],{"type":44,"tag":72,"props":2793,"children":2794},{},[2795],{"type":50,"value":572},{"type":44,"tag":72,"props":2797,"children":2798},{"class":74,"line":639},[2799],{"type":44,"tag":72,"props":2800,"children":2801},{},[2802],{"type":50,"value":580},{"type":44,"tag":72,"props":2804,"children":2805},{"class":74,"line":648},[2806],{"type":44,"tag":72,"props":2807,"children":2808},{"emptyLinePlaceholder":226},[2809],{"type":50,"value":229},{"type":44,"tag":72,"props":2811,"children":2812},{"class":74,"line":656},[2813],{"type":44,"tag":72,"props":2814,"children":2815},{},[2816],{"type":50,"value":2817},"\u002F\u002F Get execution\n",{"type":44,"tag":72,"props":2819,"children":2820},{"class":74,"line":665},[2821],{"type":44,"tag":72,"props":2822,"children":2823},{},[2824],{"type":50,"value":2725},{"type":44,"tag":72,"props":2826,"children":2827},{"class":74,"line":951},[2828],{"type":44,"tag":72,"props":2829,"children":2830},{},[2831],{"type":50,"value":2832},"    .get_execution(\"[FUNCTION_ID]\", \"[EXECUTION_ID]\")\n",{"type":44,"tag":72,"props":2834,"children":2835},{"class":74,"line":959},[2836],{"type":44,"tag":72,"props":2837,"children":2838},{},[2839],{"type":50,"value":580},{"type":44,"tag":266,"props":2841,"children":2843},{"id":2842},"permissions",[2844],{"type":50,"value":2845},"Permissions",{"type":44,"tag":60,"props":2847,"children":2849},{"className":199,"code":2848,"language":24,"meta":65,"style":65},"use appwrite::permission::Permission;\nuse appwrite::role::Role;\n\nlet permissions = vec![\n    Permission::read(Role::any()).to_string(),\n    Permission::create(Role::users(None)).to_string(),\n    Permission::update(Role::user(\"[USER_ID]\", None)).to_string(),\n    Permission::delete(Role::team(\"[TEAM_ID]\", Some(\"owner\"))).to_string(),\n];\n",[2850],{"type":44,"tag":68,"props":2851,"children":2852},{"__ignoreMap":65},[2853,2860,2867,2874,2882,2890,2898,2906,2914],{"type":44,"tag":72,"props":2854,"children":2855},{"class":74,"line":75},[2856],{"type":44,"tag":72,"props":2857,"children":2858},{},[2859],{"type":50,"value":756},{"type":44,"tag":72,"props":2861,"children":2862},{"class":74,"line":96},[2863],{"type":44,"tag":72,"props":2864,"children":2865},{},[2866],{"type":50,"value":771},{"type":44,"tag":72,"props":2868,"children":2869},{"class":74,"line":123},[2870],{"type":44,"tag":72,"props":2871,"children":2872},{"emptyLinePlaceholder":226},[2873],{"type":50,"value":229},{"type":44,"tag":72,"props":2875,"children":2876},{"class":74,"line":179},[2877],{"type":44,"tag":72,"props":2878,"children":2879},{},[2880],{"type":50,"value":2881},"let permissions = vec![\n",{"type":44,"tag":72,"props":2883,"children":2884},{"class":74,"line":240},[2885],{"type":44,"tag":72,"props":2886,"children":2887},{},[2888],{"type":50,"value":2889},"    Permission::read(Role::any()).to_string(),\n",{"type":44,"tag":72,"props":2891,"children":2892},{"class":74,"line":249},[2893],{"type":44,"tag":72,"props":2894,"children":2895},{},[2896],{"type":50,"value":2897},"    Permission::create(Role::users(None)).to_string(),\n",{"type":44,"tag":72,"props":2899,"children":2900},{"class":74,"line":258},[2901],{"type":44,"tag":72,"props":2902,"children":2903},{},[2904],{"type":50,"value":2905},"    Permission::update(Role::user(\"[USER_ID]\", None)).to_string(),\n",{"type":44,"tag":72,"props":2907,"children":2908},{"class":74,"line":334},[2909],{"type":44,"tag":72,"props":2910,"children":2911},{},[2912],{"type":50,"value":2913},"    Permission::delete(Role::team(\"[TEAM_ID]\", Some(\"owner\"))).to_string(),\n",{"type":44,"tag":72,"props":2915,"children":2916},{"class":74,"line":343},[2917],{"type":44,"tag":72,"props":2918,"children":2919},{},[2920],{"type":50,"value":2106},{"type":44,"tag":266,"props":2922,"children":2924},{"id":2923},"error-handling",[2925],{"type":50,"value":2926},"Error Handling",{"type":44,"tag":60,"props":2928,"children":2930},{"className":199,"code":2929,"language":24,"meta":65,"style":65},"match users.get(\"[USER_ID]\").await {\n    Ok(user) => {\n        let _user = user;\n    }\n    Err(error) if error.status_code() == 404 => {\n        eprintln!(\"User not found: {}\", error.get_message());\n    }\n    Err(error) => {\n        eprintln!(\"Appwrite error {}: {}\", error.status_code(), error.get_message());\n        return Err(Box::new(error) as Box\u003Cdyn std::error::Error>);\n    }\n}\n",[2931],{"type":44,"tag":68,"props":2932,"children":2933},{"__ignoreMap":65},[2934,2942,2950,2958,2966,2974,2982,2989,2997,3005,3013,3020],{"type":44,"tag":72,"props":2935,"children":2936},{"class":74,"line":75},[2937],{"type":44,"tag":72,"props":2938,"children":2939},{},[2940],{"type":50,"value":2941},"match users.get(\"[USER_ID]\").await {\n",{"type":44,"tag":72,"props":2943,"children":2944},{"class":74,"line":96},[2945],{"type":44,"tag":72,"props":2946,"children":2947},{},[2948],{"type":50,"value":2949},"    Ok(user) => {\n",{"type":44,"tag":72,"props":2951,"children":2952},{"class":74,"line":123},[2953],{"type":44,"tag":72,"props":2954,"children":2955},{},[2956],{"type":50,"value":2957},"        let _user = user;\n",{"type":44,"tag":72,"props":2959,"children":2960},{"class":74,"line":179},[2961],{"type":44,"tag":72,"props":2962,"children":2963},{},[2964],{"type":50,"value":2965},"    }\n",{"type":44,"tag":72,"props":2967,"children":2968},{"class":74,"line":240},[2969],{"type":44,"tag":72,"props":2970,"children":2971},{},[2972],{"type":50,"value":2973},"    Err(error) if error.status_code() == 404 => {\n",{"type":44,"tag":72,"props":2975,"children":2976},{"class":74,"line":249},[2977],{"type":44,"tag":72,"props":2978,"children":2979},{},[2980],{"type":50,"value":2981},"        eprintln!(\"User not found: {}\", error.get_message());\n",{"type":44,"tag":72,"props":2983,"children":2984},{"class":74,"line":258},[2985],{"type":44,"tag":72,"props":2986,"children":2987},{},[2988],{"type":50,"value":2965},{"type":44,"tag":72,"props":2990,"children":2991},{"class":74,"line":334},[2992],{"type":44,"tag":72,"props":2993,"children":2994},{},[2995],{"type":50,"value":2996},"    Err(error) => {\n",{"type":44,"tag":72,"props":2998,"children":2999},{"class":74,"line":343},[3000],{"type":44,"tag":72,"props":3001,"children":3002},{},[3003],{"type":50,"value":3004},"        eprintln!(\"Appwrite error {}: {}\", error.status_code(), error.get_message());\n",{"type":44,"tag":72,"props":3006,"children":3007},{"class":74,"line":352},[3008],{"type":44,"tag":72,"props":3009,"children":3010},{},[3011],{"type":50,"value":3012},"        return Err(Box::new(error) as Box\u003Cdyn std::error::Error>);\n",{"type":44,"tag":72,"props":3014,"children":3015},{"class":74,"line":361},[3016],{"type":44,"tag":72,"props":3017,"children":3018},{},[3019],{"type":50,"value":2965},{"type":44,"tag":72,"props":3021,"children":3022},{"class":74,"line":370},[3023],{"type":44,"tag":72,"props":3024,"children":3025},{},[3026],{"type":50,"value":437},{"type":44,"tag":53,"props":3028,"children":3030},{"id":3029},"common-pitfalls",[3031],{"type":50,"value":3032},"Common Pitfalls",{"type":44,"tag":1580,"props":3034,"children":3035},{},[3036,3041,3054,3066,3085,3105,3117],{"type":44,"tag":1584,"props":3037,"children":3038},{},[3039],{"type":50,"value":3040},"The Rust SDK is currently a server-side SDK. Prefer TypeScript\u002FWeb, Flutter, Apple, Android, or React Native SDKs for browser\u002Fmobile client auth flows.",{"type":44,"tag":1584,"props":3042,"children":3043},{},[3044,3046,3052],{"type":50,"value":3045},"Always ",{"type":44,"tag":68,"props":3047,"children":3049},{"className":3048},[],[3050],{"type":50,"value":3051},"await",{"type":50,"value":3053}," service calls.",{"type":44,"tag":1584,"props":3055,"children":3056},{},[3057,3059,3064],{"type":50,"value":3058},"Pass ",{"type":44,"tag":68,"props":3060,"children":3062},{"className":3061},[],[3063],{"type":50,"value":732},{"type":50,"value":3065}," for optional parameters you are not using.",{"type":44,"tag":1584,"props":3067,"children":3068},{},[3069,3071,3076,3078,3083],{"type":50,"value":3070},"Use ",{"type":44,"tag":68,"props":3072,"children":3074},{"className":3073},[],[3075],{"type":50,"value":698},{"type":50,"value":3077},", not legacy ",{"type":44,"tag":68,"props":3079,"children":3081},{"className":3080},[],[3082],{"type":50,"value":706},{"type":50,"value":3084},", for new database code.",{"type":44,"tag":1584,"props":3086,"children":3087},{},[3088,3090,3096,3098,3103],{"type":50,"value":3089},"Convert queries with ",{"type":44,"tag":68,"props":3091,"children":3093},{"className":3092},[],[3094],{"type":50,"value":3095},".to_string()",{"type":50,"value":3097}," before passing them to APIs that expect ",{"type":44,"tag":68,"props":3099,"children":3101},{"className":3100},[],[3102],{"type":50,"value":1963},{"type":50,"value":3104},".",{"type":44,"tag":1584,"props":3106,"children":3107},{},[3108,3109,3115],{"type":50,"value":3070},{"type":44,"tag":68,"props":3110,"children":3112},{"className":3111},[],[3113],{"type":50,"value":3114},"serde_json::json!({...})",{"type":50,"value":3116}," for row data and JSON bodies.",{"type":44,"tag":1584,"props":3118,"children":3119},{},[3120,3121,3127,3129,3135],{"type":50,"value":3070},{"type":44,"tag":68,"props":3122,"children":3124},{"className":3123},[],[3125],{"type":50,"value":3126},"InputFile::from_path(...).await?",{"type":50,"value":3128}," or ",{"type":44,"tag":68,"props":3130,"children":3132},{"className":3131},[],[3133],{"type":50,"value":3134},"InputFile::from_bytes(...)",{"type":50,"value":3136}," for uploads.",{"type":44,"tag":3138,"props":3139,"children":3140},"style",{},[3141],{"type":50,"value":3142},"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);}",{"items":3144,"total":361},[3145,3162,3180,3195,3209,3226,3240,3254,3267,3275,3294],{"slug":3146,"name":3146,"fn":3147,"description":3148,"org":3149,"tags":3150,"stars":28,"repoUrl":29,"updatedAt":3161},"appwrite-cli","manage Appwrite projects via CLI","Appwrite CLI skill. Use when managing Appwrite projects from the command line. Covers installation, login, project initialization, multi-file project configuration, deploying functions\u002Fsites\u002Ftables\u002Fbuckets\u002Fteams\u002Fwebhooks\u002Ftopics, flag-based list queries, non-interactive CI\u002FCD mode, and generating type-safe SDKs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3151,3152,3155,3158],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},"Backend","backend",{"name":3156,"slug":3157,"type":15},"CLI","cli",{"name":3159,"slug":3160,"type":15},"Deployment","deployment","2026-07-12T08:45:23.213081",{"slug":3163,"name":3163,"fn":3164,"description":3165,"org":3166,"tags":3167,"stars":28,"repoUrl":29,"updatedAt":3179},"appwrite-dart","build applications with Appwrite Dart SDK","Appwrite Dart SDK skill. Use when building Flutter apps (mobile, web, desktop) or server-side Dart applications with Appwrite. Covers client-side auth (email, OAuth), database queries, file uploads with native file handling, real-time subscriptions, and server-side admin via API keys for user management, database administration, storage, and functions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3168,3169,3170,3173,3176],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":3171,"slug":3172,"type":15},"Dart","dart",{"name":3174,"slug":3175,"type":15},"Flutter","flutter",{"name":3177,"slug":3178,"type":15},"Mobile","mobile","2026-07-12T08:45:33.336948",{"slug":3181,"name":3181,"fn":3182,"description":3183,"org":3184,"tags":3185,"stars":28,"repoUrl":29,"updatedAt":3194},"appwrite-dotnet","build .NET applications with Appwrite SDK","Appwrite .NET SDK skill. Use when building server-side C# or .NET applications with Appwrite, including ASP.NET and Blazor integrations. Covers user management, database\u002Ftable CRUD, file storage, and functions via API keys.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3186,3189,3190,3191,3192],{"name":3187,"slug":3188,"type":15},".NET","net",{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":1471,"slug":3193,"type":15},"storage","2026-07-12T08:45:28.556413",{"slug":3196,"name":3196,"fn":3197,"description":3198,"org":3199,"tags":3200,"stars":28,"repoUrl":29,"updatedAt":3208},"appwrite-go","build Go applications with Appwrite SDK","Appwrite Go SDK skill. Use when building server-side Go applications with Appwrite. Covers user management, database\u002Ftable CRUD, file storage, and functions via API keys. Uses per-service packages and functional options pattern.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3201,3202,3203,3204,3207],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3205,"slug":3206,"type":15},"Go","go",{"name":1471,"slug":3193,"type":15},"2026-07-12T08:45:19.875231",{"slug":3210,"name":3210,"fn":3211,"description":3212,"org":3213,"tags":3214,"stars":28,"repoUrl":29,"updatedAt":3225},"appwrite-kotlin","build applications with Appwrite Kotlin SDK","Appwrite Kotlin SDK skill. Use when building native Android apps or server-side Kotlin\u002FJVM backends with Appwrite. Covers client-side auth (email, OAuth with Activity integration), database queries, file uploads, real-time subscriptions with coroutine support, and server-side admin via API keys for user management, database administration, storage, and functions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3215,3218,3219,3220,3221,3222],{"name":3216,"slug":3217,"type":15},"Android","android",{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3223,"slug":3224,"type":15},"Kotlin","kotlin","2026-07-12T08:45:40.750646",{"slug":3227,"name":3227,"fn":3228,"description":3229,"org":3230,"tags":3231,"stars":28,"repoUrl":29,"updatedAt":3239},"appwrite-php","build PHP applications with Appwrite","Appwrite PHP SDK skill. Use when building server-side PHP applications with Appwrite, including Laravel and Symfony integrations. Covers user management, database\u002Ftable CRUD, file storage, and functions via API keys.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3232,3233,3234,3235,3238],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3236,"slug":3237,"type":15},"PHP","php",{"name":1471,"slug":3193,"type":15},"2026-07-12T08:45:21.794433",{"slug":3241,"name":3241,"fn":3242,"description":3243,"org":3244,"tags":3245,"stars":28,"repoUrl":29,"updatedAt":3253},"appwrite-python","build Python applications with Appwrite","Appwrite Python SDK skill. Use when building server-side Python applications with Appwrite, including Django, Flask, and FastAPI integrations. Covers user management, database\u002Ftable CRUD, file storage, and functions via API keys.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3246,3247,3248,3249,3252],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3250,"slug":3251,"type":15},"Python","python",{"name":1471,"slug":3193,"type":15},"2026-07-12T08:45:37.768328",{"slug":3255,"name":3255,"fn":3256,"description":3257,"org":3258,"tags":3259,"stars":28,"repoUrl":29,"updatedAt":3266},"appwrite-ruby","build applications with Appwrite Ruby SDK","Appwrite Ruby SDK skill. Use when building server-side Ruby applications with Appwrite, including Rails and Sinatra integrations. Covers user management, database\u002Ftable CRUD, file storage, and functions via API keys.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3260,3261,3262,3263],{"name":26,"slug":27,"type":15},{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":3264,"slug":3265,"type":15},"Ruby","ruby","2026-07-12T08:45:34.567568",{"slug":4,"name":4,"fn":5,"description":6,"org":3268,"tags":3269,"stars":28,"repoUrl":29,"updatedAt":30},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3270,3271,3272,3273,3274],{"name":26,"slug":27,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":24,"type":15},{"slug":3276,"name":3276,"fn":3277,"description":3278,"org":3279,"tags":3280,"stars":28,"repoUrl":29,"updatedAt":3293},"appwrite-swift","build applications with Appwrite Swift SDK","Appwrite Swift SDK skill. Use when building native iOS, macOS, watchOS, or tvOS apps, or server-side Swift applications with Appwrite. Covers client-side auth (email, OAuth), database queries, file uploads, real-time subscriptions with async\u002Fawait, and server-side admin via API keys for user management, database administration, storage, and functions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3281,3282,3283,3284,3287,3290],{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":3285,"slug":3286,"type":15},"iOS","ios",{"name":3288,"slug":3289,"type":15},"macOS","macos",{"name":3291,"slug":3292,"type":15},"Swift","swift","2026-07-12T08:45:26.722393",{"slug":3295,"name":3295,"fn":3296,"description":3297,"org":3298,"tags":3299,"stars":28,"repoUrl":29,"updatedAt":3312},"appwrite-typescript","build applications with Appwrite TypeScript SDK","Appwrite TypeScript SDK skill. Use when building browser-based JavaScript\u002FTypeScript apps, React Native mobile apps, or server-side Node.js\u002FDeno backends with Appwrite. Covers client-side auth (email, OAuth, anonymous), database queries, file uploads, real-time subscriptions, and server-side admin via API keys for user management, database administration, storage, and functions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3300,3301,3302,3303,3306,3309],{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":3304,"slug":3305,"type":15},"JavaScript","javascript",{"name":3307,"slug":3308,"type":15},"Node.js","node-js",{"name":3310,"slug":3311,"type":15},"TypeScript","typescript","2026-07-12T08:45:31.181727",{"items":3314,"total":361},[3315,3322,3330,3338,3346,3355,3363],{"slug":3146,"name":3146,"fn":3147,"description":3148,"org":3316,"tags":3317,"stars":28,"repoUrl":29,"updatedAt":3161},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3318,3319,3320,3321],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":3156,"slug":3157,"type":15},{"name":3159,"slug":3160,"type":15},{"slug":3163,"name":3163,"fn":3164,"description":3165,"org":3323,"tags":3324,"stars":28,"repoUrl":29,"updatedAt":3179},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3325,3326,3327,3328,3329],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":3171,"slug":3172,"type":15},{"name":3174,"slug":3175,"type":15},{"name":3177,"slug":3178,"type":15},{"slug":3181,"name":3181,"fn":3182,"description":3183,"org":3331,"tags":3332,"stars":28,"repoUrl":29,"updatedAt":3194},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3333,3334,3335,3336,3337],{"name":3187,"slug":3188,"type":15},{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":1471,"slug":3193,"type":15},{"slug":3196,"name":3196,"fn":3197,"description":3198,"org":3339,"tags":3340,"stars":28,"repoUrl":29,"updatedAt":3208},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3341,3342,3343,3344,3345],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3205,"slug":3206,"type":15},{"name":1471,"slug":3193,"type":15},{"slug":3210,"name":3210,"fn":3211,"description":3212,"org":3347,"tags":3348,"stars":28,"repoUrl":29,"updatedAt":3225},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3349,3350,3351,3352,3353,3354],{"name":3216,"slug":3217,"type":15},{"name":9,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3223,"slug":3224,"type":15},{"slug":3227,"name":3227,"fn":3228,"description":3229,"org":3356,"tags":3357,"stars":28,"repoUrl":29,"updatedAt":3239},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3358,3359,3360,3361,3362],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3236,"slug":3237,"type":15},{"name":1471,"slug":3193,"type":15},{"slug":3241,"name":3241,"fn":3242,"description":3243,"org":3364,"tags":3365,"stars":28,"repoUrl":29,"updatedAt":3253},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3366,3367,3368,3369,3370],{"name":9,"slug":8,"type":15},{"name":3153,"slug":3154,"type":15},{"name":20,"slug":21,"type":15},{"name":3250,"slug":3251,"type":15},{"name":1471,"slug":3193,"type":15}]