Finished primary part of migrating members

This commit is contained in:
xeovalyte 2024-07-24 20:42:32 +02:00
parent 334a893a85
commit feeb0facfc
Signed by: xeovalyte
SSH Key Fingerprint: SHA256:kSQDrQDmKzljJzfGYcd3m9RqHi4h8rSwkZ3sQ9kBURo
11 changed files with 296 additions and 216 deletions

275
Cargo.lock generated
View File

@ -184,19 +184,6 @@ dependencies = [
"pin-project-lite", "pin-project-lite",
] ]
[[package]]
name = "async-compression"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5"
dependencies = [
"flate2",
"futures-core",
"memchr",
"pin-project-lite",
"tokio",
]
[[package]] [[package]]
name = "async-executor" name = "async-executor"
version = "1.13.0" version = "1.13.0"
@ -218,7 +205,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -235,7 +222,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -339,7 +326,7 @@ dependencies = [
"heck", "heck",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -415,7 +402,7 @@ dependencies = [
"regex", "regex",
"rustc-hash", "rustc-hash",
"shlex", "shlex",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -521,7 +508,7 @@ dependencies = [
"proc-macro-crate", "proc-macro-crate",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"syn_derive", "syn_derive",
] ]
@ -616,9 +603,9 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.1.5" version = "1.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f"
dependencies = [ dependencies = [
"jobserver", "jobserver",
"libc", "libc",
@ -870,15 +857,6 @@ dependencies = [
"libc", "libc",
] ]
[[package]]
name = "crc32fast"
version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "critical-section" name = "critical-section"
version = "1.1.2" version = "1.1.2"
@ -968,7 +946,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"strsim", "strsim",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -979,7 +957,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806"
dependencies = [ dependencies = [
"darling_core", "darling_core",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -1042,9 +1020,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus" name = "dioxus"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e50735a28b303b0d67e1b5637fb57e4711bf2776266290cbc987c0adfdabb55" checksum = "b8e7fe217b50d43b27528b0f24c89b411f742a3e7564d1cfbf85253f967954db"
dependencies = [ dependencies = [
"dioxus-config-macro", "dioxus-config-macro",
"dioxus-core", "dioxus-core",
@ -1063,9 +1041,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-cli-config" name = "dioxus-cli-config"
version = "0.5.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5d4661064bad2f0b12929faf6c9cea4d94e60217ba6b11ff4146b505a57124b" checksum = "c7dffc452ed91af6ef772b0d9a5899573f6785314e97c533733ec55413c01df3"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"serde", "serde",
@ -1075,9 +1053,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-config-macro" name = "dioxus-config-macro"
version = "0.5.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebe244197b320dec9e9f38742985fe98c058136ada770df73e9429878ed92863" checksum = "cb1a1aa34cc04c1f7fcbb7a10791ba773cc02d834fe3ec1fe05647699f3b101f"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -1085,9 +1063,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-core" name = "dioxus-core"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "088daa3f45aaa729e9eef32dc0a9393dd709ee906b092089e5839cad1cad7c85" checksum = "3730d2459ab66951cedf10b09eb84141a6eda7f403c28057cbe010495be156b7"
dependencies = [ dependencies = [
"futures-channel", "futures-channel",
"futures-util", "futures-util",
@ -1096,15 +1074,16 @@ dependencies = [
"rustc-hash", "rustc-hash",
"serde", "serde",
"slab", "slab",
"slotmap",
"tracing", "tracing",
"tracing-subscriber", "tracing-subscriber",
] ]
[[package]] [[package]]
name = "dioxus-core-macro" name = "dioxus-core-macro"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e29a07448245451334eec2883a394e207f28caedf0a57fd1a903e9ccea0b9531" checksum = "0d9c0dfe0e6a46626fa716c4aa1d2ccb273441337909cfeacad5bb6fcfb947d2"
dependencies = [ dependencies = [
"constcat", "constcat",
"convert_case", "convert_case",
@ -1112,7 +1091,7 @@ dependencies = [
"prettyplease", "prettyplease",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -1123,12 +1102,11 @@ checksum = "2ea539174bb236e0e7dc9c12b19b88eae3cb574dedbd0252a2d43ea7e6de13e2"
[[package]] [[package]]
name = "dioxus-fullstack" name = "dioxus-fullstack"
version = "0.5.2" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db7fb1a22ff7af8756bc9506eebfbecf374b1c8c57f087c85c752ba8bd767fce" checksum = "b80f0ac18166302341164e681322e0385131c08a11c3cc1c51ee8df799ab0d3d"
dependencies = [ dependencies = [
"anymap", "anymap",
"async-compression",
"async-trait", "async-trait",
"axum", "axum",
"base64 0.21.7", "base64 0.21.7",
@ -1162,9 +1140,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-hooks" name = "dioxus-hooks"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a8c7019308a6d8381fce84a51006f207407af265aebc5425871399c98d788e4" checksum = "fa8f9c661eea82295219d25555d5c0b597e74186b029038ceb5e3700ccbd4380"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"dioxus-debug-cell", "dioxus-debug-cell",
@ -1179,9 +1157,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-hot-reload" name = "dioxus-hot-reload"
version = "0.5.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8d5a28a2af6655473c6521fb5a428538807b985e8e5f1a8c30e2ab71bd54e637" checksum = "77d01246cb1b93437fb0bbd0dd11cfc66342d86b4311819e76654f2017ce1473"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"dioxus-html", "dioxus-html",
@ -1193,9 +1171,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-html" name = "dioxus-html"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a8d612d9732f32adc1852e13e1387a9d5baa710b0b004641b5123def53065c8d" checksum = "f01a0826f179adad6ea8d6586746e8edde0c602cc86f4eb8e5df7a3b204c4018"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"dioxus-core", "dioxus-core",
@ -1216,21 +1194,21 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-html-internal-macro" name = "dioxus-html-internal-macro"
version = "0.5.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1799f34affdb158f6ebec23b46b11f9e65de0bbadbbb781dc68c3eddfe6fd32b" checksum = "0b96f35a608d0ab8f4ca6f66ce1828354e4ebd41580b12454f490221a11da93c"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
name = "dioxus-interpreter-js" name = "dioxus-interpreter-js"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc68a22e33562317b40ccc7b2d140017e510745c5d7e062e911c6a4f9042e4b1" checksum = "351fad098c657d14f3ac2900362d2b86e83c22c4c620a404839e1ab628f3395b"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"dioxus-html", "dioxus-html",
@ -1239,14 +1217,15 @@ dependencies = [
"sledgehammer_bindgen", "sledgehammer_bindgen",
"sledgehammer_utils", "sledgehammer_utils",
"wasm-bindgen", "wasm-bindgen",
"wasm-bindgen-futures",
"web-sys", "web-sys",
] ]
[[package]] [[package]]
name = "dioxus-lib" name = "dioxus-lib"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9af36a9f985ad68783acf62dc276b0a8f0aa928f1c3b42f78e2ae222b19d445c" checksum = "8bd39b2c41dd1915dcb91d914ea72d8b646f1f8995aaeff82816b862ec586ecd"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"dioxus-core-macro", "dioxus-core-macro",
@ -1258,9 +1237,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-liveview" name = "dioxus-liveview"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dc132aacc3eb3d11db8f20afa5f3cfc74147374cc41285488083476a0ed1f17" checksum = "3ada18a8fe0764f492fd4fb169b818877799e887dbb6ffb19289801d924faf18"
dependencies = [ dependencies = [
"axum", "axum",
"dioxus-cli-config", "dioxus-cli-config",
@ -1296,9 +1275,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-router" name = "dioxus-router"
version = "0.5.0" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c4cbbc1aff811aa3715c94a7ca0375be0be34356aba7f3897328d844323519b" checksum = "c235c5dbeb528c0c2b0424763da812e7500df69b82eddac54db6f4975e065c5f"
dependencies = [ dependencies = [
"dioxus-cli-config", "dioxus-cli-config",
"dioxus-fullstack", "dioxus-fullstack",
@ -1318,36 +1297,36 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-router-macro" name = "dioxus-router-macro"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67fcb6e4a203dc816bca720c638562d5a782695dc71d6598de088ce50ba2a0f8" checksum = "2e7cd1c5137ba361f2150cdea6b3bc9ddda7b1af84b22c9ee6b5499bf43e1381"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"slab", "slab",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
name = "dioxus-rsx" name = "dioxus-rsx"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "faa83056104f63fdc6f7f9fc1137208c7b7648bf88d6c86db1e095f15297a0f3" checksum = "15c400bc8a779107d8f3a67b14375db07dbd2bc31163bf085a8e9097f36f7179"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"internment", "internment",
"krates", "krates",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"tracing", "tracing",
] ]
[[package]] [[package]]
name = "dioxus-signals" name = "dioxus-signals"
version = "0.5.1" version = "0.5.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4fd04e2b3739d5c12255005cbf3185446e750fc2b3eeee9fa4e83c989132415c" checksum = "7e3e224cd3d3713f159f0199fc088c292a0f4adb94996b48120157f6a8f8342d"
dependencies = [ dependencies = [
"dioxus-core", "dioxus-core",
"futures-channel", "futures-channel",
@ -1361,9 +1340,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-ssr" name = "dioxus-ssr"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30ba8e16b3c7e154a61d814a39505c910403b9df29a113e2920cd23334a4e71c" checksum = "753b1eb29372bb3afcdbc0ac603893802a8b7b70fa94b86a1641408e2b87173b"
dependencies = [ dependencies = [
"askama_escape", "askama_escape",
"async-trait", "async-trait",
@ -1382,9 +1361,9 @@ dependencies = [
[[package]] [[package]]
name = "dioxus-web" name = "dioxus-web"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a75cfbe115b193a05c649a80a54a90a6bdd88779694a617daf27d287d6fb944f" checksum = "e0855ac81fcc9252a0863930a7a7cbb2504fc1b6efe893489c8d0e23aaeb2cb9"
dependencies = [ dependencies = [
"async-trait", "async-trait",
"console_error_panic_hook", "console_error_panic_hook",
@ -1407,15 +1386,15 @@ dependencies = [
[[package]] [[package]]
name = "dioxus_server_macro" name = "dioxus_server_macro"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b723da95503f739f9fc5fb23b6ad1e456f1438a496a0427210fa94e4e0d5fe9" checksum = "b5ef2cad17001c1155f019cb69adbacd620644566d78a77d0778807bb106a337"
dependencies = [ dependencies = [
"convert_case", "convert_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"server_fn_macro", "server_fn_macro",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -1496,23 +1475,23 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
[[package]] [[package]]
name = "enumset" name = "enumset"
version = "1.1.3" version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "226c0da7462c13fb57e5cc9e0dc8f0635e7d27f276a3a7fd30054647f669007d" checksum = "d07a4b049558765cef5f0c1a273c3fc57084d768b44d2f98127aef4cceb17293"
dependencies = [ dependencies = [
"enumset_derive", "enumset_derive",
] ]
[[package]] [[package]]
name = "enumset_derive" name = "enumset_derive"
version = "0.8.1" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e08b6c6ab82d70f08844964ba10c7babb716de2ecaeab9be5717918a5177d3af" checksum = "59c3b24c345d8c314966bdc1832f6c2635bfcce8e7cf363bd115987bba2ee242"
dependencies = [ dependencies = [
"darling", "darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -1602,16 +1581,6 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
[[package]]
name = "flate2"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae"
dependencies = [
"crc32fast",
"miniz_oxide",
]
[[package]] [[package]]
name = "float_next_after" name = "float_next_after"
version = "1.0.0" version = "1.0.0"
@ -1782,7 +1751,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -1826,9 +1795,9 @@ dependencies = [
[[package]] [[package]]
name = "generational-box" name = "generational-box"
version = "0.5.1" version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f132919c96b85c02a067ceae965fd50ace57111e2f55c7384b95ac191f4d966b" checksum = "557cf2cbacd0504c6bf8c29f52f8071e0de1d9783346713dc6121d7fa1e5d0e0"
dependencies = [ dependencies = [
"parking_lot", "parking_lot",
] ]
@ -2559,9 +2528,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
[[package]] [[package]]
name = "jobserver" name = "jobserver"
version = "0.1.31" version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
dependencies = [ dependencies = [
"libc", "libc",
] ]
@ -2662,9 +2631,9 @@ checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]] [[package]]
name = "libloading" name = "libloading"
version = "0.8.4" version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"windows-targets 0.52.6", "windows-targets 0.52.6",
@ -2764,9 +2733,9 @@ dependencies = [
[[package]] [[package]]
name = "lz4-sys" name = "lz4-sys"
version = "1.9.5" version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" checksum = "109de74d5d2353660401699a4174a4ff23fcc649caf553df71933c7fb45ad868"
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@ -2808,7 +2777,7 @@ dependencies = [
"manganis-common", "manganis-common",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"tracing-subscriber", "tracing-subscriber",
] ]
@ -2870,7 +2839,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -2906,13 +2875,14 @@ dependencies = [
[[package]] [[package]]
name = "mio" name = "mio"
version = "0.8.11" version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4"
dependencies = [ dependencies = [
"hermit-abi",
"libc", "libc",
"wasi", "wasi",
"windows-sys 0.48.0", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
@ -3124,9 +3094,9 @@ dependencies = [
[[package]] [[package]]
name = "object" name = "object"
version = "0.36.1" version = "0.36.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
@ -3160,9 +3130,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]] [[package]]
name = "openssl" name = "openssl"
version = "0.10.64" version = "0.10.66"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.6.0",
"cfg-if", "cfg-if",
@ -3181,7 +3151,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -3192,9 +3162,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.102" version = "0.9.103"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6"
dependencies = [ dependencies = [
"cc", "cc",
"libc", "libc",
@ -3364,7 +3334,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -3442,7 +3412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -3659,7 +3629,7 @@ checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -3775,7 +3745,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4169,7 +4139,7 @@ checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4213,7 +4183,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4264,14 +4234,14 @@ dependencies = [
"darling", "darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
name = "server_fn" name = "server_fn"
version = "0.6.12" version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b06e6e5467a2cd93ce1accfdfd8b859404f0b3b2041131ffd774fabf666b8219" checksum = "e9aaae169927ef701a4734d680adcb08f13269c9f0af822bf175d681fe56d65c"
dependencies = [ dependencies = [
"axum", "axum",
"bytes", "bytes",
@ -4303,26 +4273,26 @@ dependencies = [
[[package]] [[package]]
name = "server_fn_macro" name = "server_fn_macro"
version = "0.6.12" version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09c216bb1c1ac890151397643c663c875a1836adf0b269be4e389cb1b48c173c" checksum = "583085903fd5d091884eb52d99550e32777015af21f0f5dbec49bedcc320ce82"
dependencies = [ dependencies = [
"const_format", "const_format",
"convert_case", "convert_case",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"xxhash-rust", "xxhash-rust",
] ]
[[package]] [[package]]
name = "server_fn_macro_default" name = "server_fn_macro_default"
version = "0.6.12" version = "0.6.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "00783df297ec85ea605779f2fef9cbec98981dffe2e01e1a9845c102ee1f1ae6" checksum = "b628649700e28cf8bc33e0df5de5c9d591a1828ba005a25b425477055f1e0e74"
dependencies = [ dependencies = [
"server_fn_macro", "server_fn_macro",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4431,7 +4401,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2" checksum = "edc90d3e8623d29a664cd8dba5078b600dd203444f00b9739f744e4c6e7aeaf2"
dependencies = [ dependencies = [
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4445,6 +4415,16 @@ dependencies = [
"rustc-hash", "rustc-hash",
] ]
[[package]]
name = "slotmap"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
dependencies = [
"serde",
"version_check",
]
[[package]] [[package]]
name = "smallvec" name = "smallvec"
version = "1.13.2" version = "1.13.2"
@ -4842,9 +4822,9 @@ dependencies = [
[[package]] [[package]]
name = "syn" name = "syn"
version = "2.0.71" version = "2.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
@ -4860,7 +4840,7 @@ dependencies = [
"proc-macro-error", "proc-macro-error",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -4927,22 +4907,22 @@ dependencies = [
[[package]] [[package]]
name = "thiserror" name = "thiserror"
version = "1.0.62" version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [ dependencies = [
"thiserror-impl", "thiserror-impl",
] ]
[[package]] [[package]]
name = "thiserror-impl" name = "thiserror-impl"
version = "1.0.62" version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -5018,32 +4998,31 @@ checksum = "c7c4ceeeca15c8384bbc3e011dbd8fccb7f068a440b752b7d9b32ceb0ca0e2e8"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.38.1" version = "1.39.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" checksum = "d040ac2b29ab03b09d4129c2f5bbd012a3ac2f79d38ff506a4bf8dd34b0eac8a"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"bytes", "bytes",
"libc", "libc",
"mio", "mio",
"num_cpus",
"parking_lot", "parking_lot",
"pin-project-lite", "pin-project-lite",
"signal-hook-registry", "signal-hook-registry",
"socket2", "socket2",
"tokio-macros", "tokio-macros",
"windows-sys 0.48.0", "windows-sys 0.52.0",
] ]
[[package]] [[package]]
name = "tokio-macros" name = "tokio-macros"
version = "2.3.0" version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -5238,7 +5217,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]
@ -5552,7 +5531,7 @@ dependencies = [
"once_cell", "once_cell",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -5586,7 +5565,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
"wasm-bindgen-backend", "wasm-bindgen-backend",
"wasm-bindgen-shared", "wasm-bindgen-shared",
] ]
@ -5914,7 +5893,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.71", "syn 2.0.72",
] ]
[[package]] [[package]]

View File

@ -19,9 +19,9 @@ surrealdb = { version = "1.5.4", features = ["kv-speedb"], optional = true }
csv = { version = "1.3.0", optional = true } csv = { version = "1.3.0", optional = true }
# Debug # Debug
tracing = "0.1.40" tracing = "0.1"
dioxus-logger = "0.5.0" dioxus-logger = "0.5"
manganis = "0.2.2" manganis = "0.2"
[features] [features]
default = [] default = []

View File

@ -11,7 +11,7 @@ default_platform = "web"
out_dir = "dist" out_dir = "dist"
# resource (assets) file folder # resource (assets) file folder
asset_dir = "assets" asset_dir = "public"
[web.app] [web.app]

View File

@ -2003,6 +2003,10 @@ html {
margin-bottom: 1.25rem; margin-bottom: 1.25rem;
} }
.mt-10 {
margin-top: 2.5rem;
}
.mt-5 { .mt-5 {
margin-top: 1.25rem; margin-top: 1.25rem;
} }
@ -2045,6 +2049,10 @@ html {
min-height: 4rem; min-height: 4rem;
} }
.w-80 {
width: 20rem;
}
.w-96 { .w-96 {
width: 24rem; width: 24rem;
} }

View File

@ -3,11 +3,11 @@
"devenv": { "devenv": {
"locked": { "locked": {
"dir": "src/modules", "dir": "src/modules",
"lastModified": 1719759336, "lastModified": 1721817837,
"owner": "cachix", "owner": "cachix",
"repo": "devenv", "repo": "devenv",
"rev": "bb32aa986f2f695385e54428d0eaf7d05b31466e", "rev": "44bfc26843694ab17ebae1d4922065e48d93f501",
"treeHash": "802683f2a55dd8c03f2817fbd9a392876e263c2a", "treeHash": "62b4ad814fcc952c5660916c9cdadc34927b3330",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -25,11 +25,11 @@
"rust-analyzer-src": "rust-analyzer-src" "rust-analyzer-src": "rust-analyzer-src"
}, },
"locked": { "locked": {
"lastModified": 1721111394, "lastModified": 1721802589,
"owner": "nix-community", "owner": "nix-community",
"repo": "fenix", "repo": "fenix",
"rev": "e63599e3186cfb3284933bc815d33a509addd00e", "rev": "31cd6d83e0e3900f10053daf33bd878792946282",
"treeHash": "bacc5edad576bf49c31ef3ff3d3dbd9d37e51f1f", "treeHash": "28edc9486170ad5cce0e02ebef2abc04c2c473a1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -93,16 +93,16 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1719663039, "lastModified": 1721686456,
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "4a1e673523344f6ccc84b37f4413ad74ea19a119", "rev": "575f3027caa1e291d24f1e9fb0e3a19c2f26d96b",
"treeHash": "f83a332235f40ebf2426f8a4cc3e2e10c156502b", "treeHash": "ae2b90d07867bf9f121208c0073a311669762314",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-23.11", "ref": "nixos-24.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -117,11 +117,11 @@
"nixpkgs-stable": "nixpkgs-stable" "nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1719259945, "lastModified": 1721042469,
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "0ff4381bbb8f7a52ca4a851660fc7a437a4c6e07", "rev": "f451c19376071a90d8c58ab1a953c6e9840527fd",
"treeHash": "1a76ff89a9d4017b48abbb1bad8837b35d604ffc", "treeHash": "91f40b7a3b9f6886bd77482cba5b5cd890415a2e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -141,11 +141,11 @@
"rust-analyzer-src": { "rust-analyzer-src": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1721048109, "lastModified": 1721756321,
"owner": "rust-lang", "owner": "rust-lang",
"repo": "rust-analyzer", "repo": "rust-analyzer",
"rev": "0c95aaa08e5f870d269f0ca13010eda9a4dc3402", "rev": "eb5da56d839ae0a9e9f50774fa3eb78eb0964550",
"treeHash": "3d6283b1061f6a295a15a322a482376f52a05d86", "treeHash": "106582478fc798063981bdc201b4929ad00f0fab",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -3,11 +3,11 @@
{ {
# https://devenv.sh/basics/ # https://devenv.sh/basics/
env.GREET = "devenv"; env.GREET = "devenv";
env.LIBCLANG_PATH = "${pkgs.llvmPackages.libclang.lib}/lib"; env.LIBCLANG_PATH = "${pkgs.libclang.lib}/lib";
env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.llvmPackages.libclang.lib}/lib/clang/17/include"; env.BINDGEN_EXTRA_CLANG_ARGS = "-I ${pkgs.libclang.lib}/lib/clang/17/include";
# https://devenv.sh/packages/ # https://devenv.sh/packages/
packages = [ pkgs.openssl pkgs.git pkgs.dioxus-cli pkgs.tailwindcss pkgs.watchexec pkgs.llvmPackages.libclang pkgs.clang ]; packages = [ pkgs.openssl pkgs.git pkgs.dioxus-cli pkgs.tailwindcss pkgs.watchexec pkgs.libclang pkgs.clang ];
# https://devenv.sh/scripts/ # https://devenv.sh/scripts/
scripts.hello.exec = "echo hello from $GREET"; scripts.hello.exec = "echo hello from $GREET";

BIN
public/gifs/nick.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

BIN
public/gifs/nick.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

View File

@ -1,5 +1,6 @@
use crate::util::model::member::{Member, MembersMigration}; use crate::util::model::member::{Member, MembersMigration};
use dioxus::prelude::{dioxus_elements::FileEngine, *}; use dioxus::prelude::{dioxus_elements::FileEngine, *};
use manganis::ImageAsset;
use std::sync::Arc; use std::sync::Arc;
#[derive(Debug)] #[derive(Debug)]
@ -18,7 +19,7 @@ enum Steps {
#[component] #[component]
pub fn Migration() -> Element { pub fn Migration() -> Element {
let step = use_signal(|| Steps::Upload); let step = use_signal(|| Steps::Upload);
let members_migration = use_signal(|| MembersMigration::new()); let members_migration = use_signal(|| (0, MembersMigration::new()));
rsx! { rsx! {
div { div {
@ -28,22 +29,26 @@ pub fn Migration() -> Element {
li { class: "step step-primary", "Uploaden" }, li { class: "step step-primary", "Uploaden" },
li { li {
class: "step", class: "step",
class: if *step.read() == Steps::Verify { "step-primary" }, class: if let Steps::Verify | Steps::Done = *step.read() { { "step-primary" } },
"Controleren" "Controleren"
}, },
li { class: "step", "Klaar" }, li {
class: "step",
class: if let Steps::Done = *step.read() { { "step-primary" } },
"Klaar"
},
}, },
match *step.read() { match *step.read() {
Steps::Upload => rsx! { Upload { step: step, members_migration: members_migration } }, Steps::Upload => rsx! { Upload { step: step, members_migration: members_migration } },
Steps::Verify => rsx! { Verify { members_migration: members_migration} }, Steps::Verify => rsx! { Verify { step: step, members_migration: members_migration } },
Steps::Done => rsx! { Verify { members_migration: members_migration } }, Steps::Done => rsx! { Done {} },
} }
} }
} }
} }
#[component] #[component]
fn Upload(step: Signal<Steps>, members_migration: Signal<MembersMigration>) -> Element { fn Upload(step: Signal<Steps>, members_migration: Signal<(u16, MembersMigration)>) -> Element {
let mut file_uploaded = use_signal(|| None); let mut file_uploaded = use_signal(|| None);
let mut loading = use_signal(|| false); let mut loading = use_signal(|| false);
@ -108,9 +113,19 @@ fn Upload(step: Signal<Steps>, members_migration: Signal<MembersMigration>) -> E
} }
#[component] #[component]
fn Verify(members_migration: Signal<MembersMigration>) -> Element { fn Verify(step: Signal<Steps>, members_migration: Signal<(u16, MembersMigration)>) -> Element {
let mut loading = use_signal(|| false); let mut loading = use_signal(|| false);
let submit_accept = move |_| async move {
loading.set(true);
if let Ok(_response) = migration_response(true, members_migration.read().0).await {
step.set(Steps::Done);
loading.set(false);
};
loading.set(false);
};
rsx! { rsx! {
div { div {
class: "flex flex-col items-center justify-center w-full mx-auto px-2", class: "flex flex-col items-center justify-center w-full mx-auto px-2",
@ -120,21 +135,22 @@ fn Verify(members_migration: Signal<MembersMigration>) -> Element {
div { div {
class: "card bg-base-200 p-5", class: "card bg-base-200 p-5",
h2 { class: "card-title mb-1", "Toevoegen" } h2 { class: "card-title mb-1", "Toevoegen" }
MembersTable { members: members_migration.read().inserted.clone() } MembersTable { members: members_migration.read().1.inserted.clone() }
} }
div { div {
class: "card bg-base-200 p-5", class: "card bg-base-200 p-5",
h2 { class: "card-title mb-1", "Verwijderen" } h2 { class: "card-title mb-1", "Verwijderen" }
MembersTable { members: members_migration.read().removed.clone() } MembersTable { members: members_migration.read().1.removed.clone() }
} }
div { div {
class: "card bg-base-200 p-5", class: "card bg-base-200 p-5",
h2 { class: "card-title mb-1", "Updaten" } h2 { class: "card-title mb-1", "Updaten" }
MembersTable { members: members_migration.read().updated.clone() } MembersTable { members: members_migration.read().1.updated.clone() }
} }
} }
button { button {
class: "btn btn-primary btn-wide mt-5", class: "btn btn-primary btn-wide mt-5",
onclick: submit_accept,
disabled: loading(), disabled: loading(),
if loading() { if loading() {
span { class: "loading loading-spinner" } span { class: "loading loading-spinner" }
@ -145,6 +161,26 @@ fn Verify(members_migration: Signal<MembersMigration>) -> Element {
} }
} }
#[component]
fn Done() -> Element {
rsx! {
div {
class: "flex flex-col items-center justify-center w-full mx-auto px-2",
h2 { class: "text-xl mb-5", "Ledenlijst is geüpdate" },
div {
class: "w-80 mt-10",
img {
src: "/gifs/nick.webp",
}
}
button {
class: "btn btn-primary btn-wide mt-5",
"Terug naar Start"
}
}
}
}
#[component] #[component]
fn MembersTable(members: Vec<Member>) -> Element { fn MembersTable(members: Vec<Member>) -> Element {
rsx! { rsx! {
@ -173,7 +209,7 @@ fn MembersTable(members: Vec<Member>) -> Element {
} }
#[server] #[server]
async fn upload_members_list(input: String) -> Result<MembersMigration, ServerFnError> { async fn upload_members_list(input: String) -> Result<(u16, MembersMigration), ServerFnError> {
match Member::migrate_proposal(input).await { match Member::migrate_proposal(input).await {
Ok(r) => Ok(r), Ok(r) => Ok(r),
Err(err) => Err(ServerFnError::new(err.to_string())), Err(err) => Err(ServerFnError::new(err.to_string())),
@ -181,7 +217,15 @@ async fn upload_members_list(input: String) -> Result<MembersMigration, ServerFn
} }
#[server] #[server]
async fn check_members_list(correct: bool, id: u32) -> Result<(), ServerFnError> { async fn migration_response(correct: bool, id: u16) -> Result<(), ServerFnError> {
tracing::info!("boe"); if correct {
match Member::migrate(id).await {
Err(err) => Err(ServerFnError::new(err.to_string())),
Ok(_) => Ok(()),
}?;
} else {
tracing::info!("Migrations denied");
}
Ok(()) Ok(())
} }

View File

@ -10,10 +10,10 @@ mod migration;
pub struct Member { pub struct Member {
pub id: String, pub id: String,
pub name: Name, pub name: Name,
pub hours: BTreeSet<String>, // pub hours: BTreeSet<String>,
pub groups: BTreeSet<String>, // pub groups: BTreeSet<String>,
pub diploma: Option<String>, // pub diploma: Option<String>,
pub registration_token: Option<String>, // pub registration_token: Option<String>,
} }
#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)] #[derive(Debug, Deserialize, Serialize, PartialEq, Eq, Clone)]
@ -32,7 +32,7 @@ pub struct MembersMigration {
#[cfg(feature = "server")] #[cfg(feature = "server")]
impl Member { impl Member {
pub async fn fetch_all() -> Result<Vec<Self>, surrealdb::Error> { pub async fn fetch_all() -> Result<Vec<Self>, surrealdb::Error> {
let mut res = DB.query("SELECT type::string(id) as id, name, hours, groups, diploma, registration_token FROM member").await?; let mut res = DB.query("SELECT meta::id(id) as id, name.first, name.full, hours, groups, diploma, registration_token FROM member").await?;
let members: Vec<Self> = res.take(0)?; let members: Vec<Self> = res.take(0)?;

View File

@ -1,13 +1,16 @@
use crate::util::surrealdb::DB;
use super::{Member, MembersMigration}; use super::{Member, MembersMigration};
use once_cell::sync::Lazy; use once_cell::sync::Lazy;
use std::collections::{BTreeSet, HashMap}; use std::collections::{BTreeSet, HashMap};
use tokio::sync::Mutex;
// Create a store for saving information when migrating to a new members list // Create a store for saving information when migrating to a new members list
static MEMBERS_STORE: Lazy<MembersStore> = Lazy::new(|| MembersStore::new()); static MEMBERS_STORE: Lazy<Mutex<MembersStore>> = Lazy::new(|| Mutex::new(MembersStore::new()));
struct MembersStore { struct MembersStore {
store: HashMap<u16, Vec<Member>>, store: HashMap<u16, MembersMigration>,
count: u16, count: u16,
} }
@ -19,17 +22,17 @@ impl MembersStore {
} }
} }
fn insert(&mut self, input: Vec<Member>) -> u16 { fn insert(&mut self, input: MembersMigration) -> u16 {
let count = self.count + 1; let count = self.count + 1;
self.store.insert(count, input); self.store.insert(count, input);
count count
} }
fn get(&self, key: &u16) -> Option<&Vec<Member>> { fn get(&self, key: &u16) -> Option<&MembersMigration> {
self.store.get(key) self.store.get(key)
} }
fn remove(&mut self, key: &u16) -> Option<Vec<Member>> { fn remove(&mut self, key: &u16) -> Option<MembersMigration> {
self.store.remove(key) self.store.remove(key)
} }
} }
@ -61,10 +64,10 @@ impl Row {
first: self.first_name.clone(), first: self.first_name.clone(),
full: self.generate_full_name(), full: self.generate_full_name(),
}, },
hours: self.generate_hours(), // hours: self.generate_hours(),
groups: BTreeSet::new(), // groups: BTreeSet::new(),
diploma: self.diploma.clone(), // diploma: self.diploma.clone(),
registration_token: None, // registration_token: None,
} }
} }
@ -161,10 +164,10 @@ fn combine_members_lists(
updated_members.push(Member { updated_members.push(Member {
id: current_member.id, id: current_member.id,
name: new_member_clone.name, name: new_member_clone.name,
hours: new_member_clone.hours, // hours: new_member_clone.hours,
groups: current_member.groups, // groups: current_member.groups,
diploma: new_member_clone.diploma, // diploma: new_member_clone.diploma,
registration_token: current_member.diploma, // registration_token: current_member.diploma,
}) })
} else { } else {
// Remove member // Remove member
@ -190,14 +193,60 @@ fn combine_members_lists(
impl Member { impl Member {
pub async fn migrate_proposal( pub async fn migrate_proposal(
csv: String, csv: String,
) -> Result<MembersMigration, Box<dyn std::error::Error>> { ) -> Result<(u16, MembersMigration), Box<dyn std::error::Error>> {
let rows = csv_to_rows(csv)?; let rows = csv_to_rows(csv)?;
let new_members = rows_to_members(rows); let new_members = rows_to_members(rows);
let current_members = Member::fetch_all().await?; let current_members = Member::fetch_all().await?;
Ok(combine_members_lists(new_members, current_members)) let members_migration = combine_members_lists(new_members, current_members);
let count = MEMBERS_STORE.lock().await.insert(members_migration.clone());
Ok((count, members_migration))
}
pub async fn migrate(id: u16) -> Result<(), Box<dyn std::error::Error>> {
let members_store = MEMBERS_STORE.lock().await;
let members_migration = match members_store.get(&id) {
Some(mm) => mm,
None => return Err("Could not get members from store".into()),
};
let mut query = String::from("BEGIN TRANSACTION;");
for member in members_migration.updated.clone() {
// TODO add hours and diploma support
query = query
+ format!(
"UPDATE member:{} SET name.first = \"{}\", name.full = \"{}\";",
member.id, member.name.first, member.name.full
)
.as_str();
}
for member in members_migration.inserted.clone() {
// TODO add hours and diploma support
query = query
+ format!(
"CREATE member:{} SET name.first = \"{}\", name.full = \"{}\";",
member.id, member.name.first, member.name.full
)
.as_str();
}
for member in members_migration.removed.clone() {
// TODO add hours and diploma support
query = query + format!("DELETE member:{};", member.id).as_str();
}
query = query + "COMMIT TRANSACTION;";
DB.query(query).await?;
Ok(())
} }
} }
@ -218,14 +267,14 @@ mod tests {
first: "First".to_string(), first: "First".to_string(),
full: "First Last".to_string(), full: "First Last".to_string(),
}, },
hours: BTreeSet::from([ // hours: BTreeSet::from([
"Wedstrijd".to_string(), // "Wedstrijd".to_string(),
"Z5".to_string(), // "Z5".to_string(),
"Zaterdag".to_string(), // "Zaterdag".to_string(),
]), // ]),
groups: BTreeSet::new(), // groups: BTreeSet::new(),
diploma: Some("LS1".to_string()), // diploma: Some("LS1".to_string()),
registration_token: None, // registration_token: None,
}, },
Member { Member {
id: "D000002".to_string(), id: "D000002".to_string(),
@ -233,10 +282,10 @@ mod tests {
first: "First2".to_string(), first: "First2".to_string(),
full: "First2 Last2".to_string(), full: "First2 Last2".to_string(),
}, },
hours: BTreeSet::from(["Z5".to_string(), "Zaterdag".to_string()]), // hours: BTreeSet::from(["Z5".to_string(), "Zaterdag".to_string()]),
groups: BTreeSet::new(), // groups: BTreeSet::new(),
diploma: Some("ZR4".to_string()), // diploma: Some("ZR4".to_string()),
registration_token: None, // registration_token: None,
}, },
]; ];