diff --git a/Cargo.lock b/Cargo.lock index f7f0473..4fcbbce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,17 +2,29 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + [[package]] name = "ahash" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", "once_cell", "version_check", ] +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + [[package]] name = "ansi_term" version = "0.12.1" @@ -24,21 +36,27 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.57" +version = "1.0.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc" +checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" [[package]] name = "argon2" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27e27b63e4a34caee411ade944981136fdfa535522dc9944d6700196cbd899f" +checksum = "db4ce4441f99dbd377ca8a8f57b698c44d0d6e712d8329b5040da5a64aa1ce73" dependencies = [ "base64ct", "blake2", "password-hash", ] +[[package]] +name = "arrayvec" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" + [[package]] name = "assign" version = "1.1.1" @@ -46,10 +64,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f093eed78becd229346bf859eec0aa4dd7ddde0757287b2b4107a1f09c80002" [[package]] -name = "async-trait" -version = "0.1.53" +name = "async-stream" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" +checksum = "dad5c83079eae9969be7fadefe640a1c566901f05ff91ab221de4b6f68d9507e" +dependencies = [ + "async-stream-impl", + "futures-core", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-trait" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" dependencies = [ "proc-macro2", "quote", @@ -73,9 +112,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.5.3" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f523b4e98ba6897ae90994bc18423d9877c54f9047b06a00ddc8122a957b1c70" +checksum = "c2cc6e8e8c993cb61a005fab8c1e5093a29199b7253b05a6883999312935c1ff" dependencies = [ "async-trait", "axum-core", @@ -97,16 +136,16 @@ dependencies = [ "sync_wrapper", "tokio", "tower", - "tower-http", + "tower-http 0.3.4", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3ddbd16eabff8b45f21b98671fddcc93daaa7ac4c84f8473693437226040de5" +checksum = "cf4d047478b986f14a13edad31a009e2e05cb241f9805d0d75e4cba4e129ad4d" dependencies = [ "async-trait", "bytes", @@ -118,16 +157,35 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cae774e664fd50bf80c9a7132d64ff70be3232a192ff4ba5619c3f72b9b4711f" +checksum = "6293dae2ec708e679da6736e857cf8532886ef258e92930f38279c12641628b8" dependencies = [ - "heck", + "heck 0.4.0", "proc-macro2", "quote", "syn", ] +[[package]] +name = "bae" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b8de67cc41132507eeece2584804efcb15f85ba516e34c944b7667f480397a" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + [[package]] name = "base64" version = "0.13.0" @@ -136,9 +194,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "base64ct" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea908e7347a8c64e378c17e30ef880ad73e3b4498346b055c2c00ea342f3179" +checksum = "3bdca834647821e0b13d9539a8634eb62d3501b6b6c2cec1722786ee6671b851" [[package]] name = "bitflags" @@ -175,9 +233,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.9.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" [[package]] name = "byteorder" @@ -203,12 +261,48 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time 0.1.44", + "winapi", +] + [[package]] name = "const-oid" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d6f2aa4d0537bcc1c74df8755072bd31c1ef1a3a1b85a68e8404a8c353b7b8b" +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + [[package]] name = "cpufeatures" version = "0.2.2" @@ -245,19 +339,19 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.8" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" +checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" dependencies = [ "cfg-if", - "lazy_static", + "once_cell", ] [[package]] name = "crypto-common" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +checksum = "5999502d32b9c48d492abe66392408144895020ec4709e549e840799f3bb74c0" dependencies = [ "generic-array", "typenum", @@ -305,6 +399,12 @@ dependencies = [ "subtle", ] +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + [[package]] name = "dotenv" version = "0.15.0" @@ -336,12 +436,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" -dependencies = [ - "serde", -] +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" [[package]] name = "event-listener" @@ -350,15 +447,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77f3309417938f28bf8228fcff79a4a37103981e3e186d2ccd19c74b38f4eb71" [[package]] -name = "flume" -version = "0.10.12" +name = "fastrand" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "843c03199d0c0ca54bc1ea90ac0d507274c28abcc4f691ae8b4eaa375087c76a" +checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +dependencies = [ + "instant", +] + +[[package]] +name = "flume" +version = "0.10.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ceeb589a3157cac0ab8cc585feb749bd2cea5cb55a6ee802ad72d9fd38303da" dependencies = [ "futures-core", "futures-sink", "pin-project", - "spin 0.9.3", + "spin", ] [[package]] @@ -367,6 +473,21 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + [[package]] name = "form_urlencoded" version = "1.0.1" @@ -377,6 +498,21 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futures" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.21" @@ -415,6 +551,23 @@ dependencies = [ "parking_lot 0.11.2", ] +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-macro" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "futures-sink" version = "0.3.21" @@ -433,9 +586,13 @@ version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-macro", "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -464,13 +621,13 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" dependencies = [ "cfg-if", "libc", - "wasi 0.10.2+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] @@ -482,13 +639,28 @@ dependencies = [ "ahash", ] +[[package]] +name = "hashbrown" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" + [[package]] name = "hashlink" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" dependencies = [ - "hashbrown", + "hashbrown 0.11.2", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", ] [[package]] @@ -528,9 +700,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ff4f84919677303da5f147645dbea6b1881f368d03ac84e1dc09031ebd7b2c6" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", "http", @@ -545,9 +717,9 @@ checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" [[package]] name = "httparse" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6330e8a36bd8c859f3fa6d9382911fbb7147ec39807f63b923933a247240b9ba" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" [[package]] name = "httpdate" @@ -557,9 +729,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.18" +version = "0.14.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b26ae0a80afebe130861d90abf98e3814a4f28a4c6ffeb5ab8ebb2be311e0ef2" +checksum = "42dc3c131584288d375f2d07f822b0cb012d8c6fb899a5b9fdb3cb7eb9b6004f" dependencies = [ "bytes", "futures-channel", @@ -591,12 +763,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.8.1" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" dependencies = [ "autocfg", - "hashbrown", + "hashbrown 0.12.1", "serde", ] @@ -620,18 +792,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" - -[[package]] -name = "js-sys" -version = "0.3.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397" -dependencies = [ - "wasm-bindgen", -] +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" [[package]] name = "js_int" @@ -659,9 +822,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.124" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" [[package]] name = "libsqlite3-sys" @@ -686,9 +849,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.16" +version = "0.4.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" dependencies = [ "cfg-if", ] @@ -729,24 +892,25 @@ dependencies = [ "axum", "axum-macros", "http", + "neo-entity", "rand 0.8.5", "ruma", + "sea-orm", "serde", "serde_json", - "sqlx", "thiserror", "tokio", - "tower-http", + "tower-http 0.2.5", "tracing", "tracing-subscriber", - "uuid", + "uuid 1.1.2", ] [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "mime" @@ -762,25 +926,43 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52da4364ffb0e4fe33a9841a98a3f3014fb964045ce4f7a45a398243c8d6b0c9" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" dependencies = [ "libc", "log", - "miow", - "ntapi", "wasi 0.11.0+wasi-snapshot-preview1", - "winapi", + "windows-sys", ] [[package]] -name = "miow" -version = "0.3.7" +name = "native-tls" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" dependencies = [ - "winapi", + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "neo-entity" +version = "0.1.0" +dependencies = [ + "chrono", + "sea-orm", + "serde", + "serde_json", + "uuid 1.1.2", ] [[package]] @@ -794,19 +976,31 @@ dependencies = [ ] [[package]] -name = "ntapi" -version = "0.3.7" +name = "num-bigint" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" dependencies = [ - "winapi", + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" dependencies = [ "autocfg", ] @@ -823,9 +1017,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.10.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "opaque-debug" @@ -833,6 +1027,75 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +[[package]] +name = "openssl" +version = "0.10.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb81a6430ac911acb25fe5ac8f1d2af1b4ea8a4fdfda0f1ee4292af2e2d8eb0e" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835363342df5fba8354c5b453325b110ffd54044e588c539cf2f20a8014e4cb1" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "ouroboros" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f31a3b678685b150cba82b702dcdc5e155893f63610cf388d30cd988d4ca2bf" +dependencies = [ + "aliasable", + "ouroboros_macro", + "stable_deref_trait", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084fd65d5dd8b3772edccb5ffd1e4b7eba43897ecd0f9401e330e8c542959408" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -846,12 +1109,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.2", + "parking_lot_core 0.9.3", ] [[package]] @@ -870,9 +1133,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "995f667a6c822200b0433ac218e05582f0e2efa1b922a3fd2fbaadc5f87bab37" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" dependencies = [ "cfg-if", "libc", @@ -883,9 +1146,9 @@ dependencies = [ [[package]] name = "password-hash" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e029e94abc8fb0065241c308f1ac6bc8d20f450e8f7c5f0b25cd9b8d526ba294" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" dependencies = [ "base64ct", "rand_core 0.6.3", @@ -906,18 +1169,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" dependencies = [ "proc-macro2", "quote", @@ -926,9 +1189,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" [[package]] name = "pin-utils" @@ -970,19 +1233,49 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.37" +name = "proc-macro-error" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ - "unicode-xid", + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7" +dependencies = [ + "unicode-ident", ] [[package]] name = "quote" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" dependencies = [ "proc-macro2", ] @@ -1046,7 +1339,7 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", ] [[package]] @@ -1069,9 +1362,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.5" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" dependencies = [ "regex-syntax", ] @@ -1087,22 +1380,16 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" [[package]] -name = "ring" -version = "0.16.20" +name = "remove_dir_all" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted", - "web-sys", "winapi", ] @@ -1217,23 +1504,46 @@ dependencies = [ ] [[package]] -name = "rustls" -version = "0.19.1" +name = "rust_decimal" +version = "1.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +checksum = "34a3bb58e85333f1ab191bf979104b586ebd77475bc6681882825f4532dfe87c" dependencies = [ - "base64", - "log", - "ring", - "sct", - "webpki", + "arrayvec", + "num-traits", + "serde", ] [[package]] -name = "ryu" -version = "1.0.9" +name = "rustc_version" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustversion" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf" + +[[package]] +name = "ryu" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] [[package]] name = "scopeguard" @@ -1242,29 +1552,157 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" [[package]] -name = "sct" -version = "0.6.1" +name = "sea-orm" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +checksum = "51de529763804dd4f74c133055f53eccdda2221bdded94351009be28cc80d2fb" dependencies = [ - "ring", - "untrusted", + "async-stream", + "async-trait", + "chrono", + "futures", + "futures-util", + "once_cell", + "ouroboros", + "rust_decimal", + "sea-orm-macros", + "sea-query", + "sea-strum", + "serde", + "serde_json", + "sqlx", + "time 0.2.27", + "tracing", + "url", + "uuid 0.8.2", ] [[package]] -name = "serde" -version = "1.0.136" +name = "sea-orm-macros" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "9f9378e21366b119d281489013c8170c49972fd3709c2155eb4504a913715d2d" +dependencies = [ + "bae", + "heck 0.3.3", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sea-query" +version = "0.24.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0fa62db5ae33dfc61e805b0b0c9d579c3733f1ed90326b3779f5b38f30fa2a" +dependencies = [ + "chrono", + "rust_decimal", + "sea-query-derive", + "sea-query-driver", + "serde_json", + "time 0.2.27", + "uuid 0.8.2", +] + +[[package]] +name = "sea-query-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cdc022b4f606353fe5dc85b09713a04e433323b70163e81513b141c6ae6eb5" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn", + "thiserror", +] + +[[package]] +name = "sea-query-driver" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3953baee94dcb90f0e19e8b4b91b91e9394867b0fc1886d0221cfc6d0439f5" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sea-strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391d06a6007842cfe79ac6f7f53911b76dfd69fc9a6769f1cf6569d12ce20e1b" +dependencies = [ + "sea-strum_macros", +] + +[[package]] +name = "sea-strum_macros" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b4397b825df6ccf1e98bcdabef3bbcfc47ff5853983467850eeab878384f21" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.138" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" dependencies = [ "proc-macro2", "quote", @@ -1273,9 +1711,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" dependencies = [ "itoa", "ryu", @@ -1294,6 +1732,21 @@ dependencies = [ "serde", ] +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + [[package]] name = "sha2" version = "0.9.9" @@ -1350,9 +1803,9 @@ checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32" [[package]] name = "smallvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "socket2" @@ -1364,12 +1817,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "spin" version = "0.9.3" @@ -1420,6 +1867,7 @@ dependencies = [ "bitflags", "byteorder", "bytes", + "chrono", "crc", "crossbeam-queue", "either", @@ -1438,21 +1886,23 @@ dependencies = [ "libsqlite3-sys", "log", "memchr", + "num-bigint", "once_cell", "paste", "percent-encoding", - "rustls", + "rust_decimal", "serde", + "serde_json", "sha2 0.10.2", "smallvec", "sqlformat", "sqlx-rt", "stringprep", "thiserror", + "time 0.2.27", "tokio-stream", "url", - "webpki", - "webpki-roots", + "uuid 0.8.2", ] [[package]] @@ -1463,12 +1913,10 @@ checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" dependencies = [ "dotenv", "either", - "heck", - "hex", + "heck 0.4.0", "once_cell", "proc-macro2", "quote", - "serde", "serde_json", "sha2 0.10.2", "sqlx-core", @@ -1483,11 +1931,76 @@ version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" dependencies = [ + "native-tls", "once_cell", "tokio", - "tokio-rustls", + "tokio-native-tls", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + [[package]] name = "stringprep" version = "0.1.2" @@ -1506,13 +2019,13 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.91" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", ] [[package]] @@ -1534,19 +2047,33 @@ dependencies = [ ] [[package]] -name = "thiserror" -version = "1.0.30" +name = "tempfile" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" dependencies = [ "proc-macro2", "quote", @@ -1563,10 +2090,59 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.5.1" +name = "time" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros", + "version_check", + "winapi", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] @@ -1579,9 +2155,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.17.0" +version = "1.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" dependencies = [ "bytes", "libc", @@ -1589,7 +2165,7 @@ dependencies = [ "mio", "num_cpus", "once_cell", - "parking_lot 0.12.0", + "parking_lot 0.12.1", "pin-project-lite", "signal-hook-registry", "socket2", @@ -1599,9 +2175,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.7.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b557f72f448c511a979e2564e55d74e6c4432fc96ff4f6241bc6bded342643b7" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", @@ -1609,40 +2185,26 @@ dependencies = [ ] [[package]] -name = "tokio-rustls" -version = "0.22.0" +name = "tokio-native-tls" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" dependencies = [ - "rustls", + "native-tls", "tokio", - "webpki", ] [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" dependencies = [ "futures-core", "pin-project-lite", "tokio", ] -[[package]] -name = "tokio-util" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0edfdeb067411dba2044da6d1cb2df793dd35add7888d73c16e3381ded401764" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - [[package]] name = "toml" version = "0.5.9" @@ -1654,16 +2216,15 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a89fd63ad6adf737582df5db40d286574513c69a11dac5214dc3b5603d6713e" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" dependencies = [ "futures-core", "futures-util", "pin-project", "pin-project-lite", "tokio", - "tokio-util", "tower-layer", "tower-service", "tracing", @@ -1683,12 +2244,30 @@ dependencies = [ "http-body", "http-range-header", "pin-project-lite", - "tower", "tower-layer", "tower-service", "tracing", ] +[[package]] +name = "tower-http" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba" +dependencies = [ + "bitflags", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-range-header", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + [[package]] name = "tower-layer" version = "0.3.1" @@ -1697,15 +2276,15 @@ checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0ecdcb44a79f0fe9844f0c4f33a342cbcbb5117de8001e6ba0dc2351327d09" +checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160" dependencies = [ "cfg-if", "log", @@ -1716,9 +2295,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.20" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" dependencies = [ "proc-macro2", "quote", @@ -1727,11 +2306,11 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.26" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f" +checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] @@ -1748,13 +2327,13 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.11" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596" +checksum = "3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59" dependencies = [ "ansi_term", - "lazy_static", "matchers", + "once_cell", "regex", "sharded-slab", "smallvec", @@ -1778,15 +2357,21 @@ checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" dependencies = [ "tinyvec", ] @@ -1799,9 +2384,9 @@ checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" [[package]] name = "unicode_categories" @@ -1809,12 +2394,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "url" version = "2.2.2" @@ -1829,11 +2408,22 @@ dependencies = [ [[package]] name = "uuid" -version = "1.0.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfcd319456c4d6ea10087ed423473267e1a071f3bc0aa89f80d60997843c6f0" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" dependencies = [ - "getrandom 0.2.6", + "getrandom 0.2.7", + "serde", +] + +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "getrandom 0.2.7", + "serde", ] [[package]] @@ -1872,9 +2462,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" [[package]] name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" +version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" [[package]] name = "wasi" @@ -1884,9 +2474,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad" +checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1894,9 +2484,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4" +checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a" dependencies = [ "bumpalo", "lazy_static", @@ -1909,9 +2499,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5" +checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1919,9 +2509,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b" +checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048" dependencies = [ "proc-macro2", "quote", @@ -1932,44 +2522,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.80" +version = "0.2.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744" - -[[package]] -name = "web-sys" -version = "0.3.57" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" -dependencies = [ - "webpki", -] +checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be" [[package]] name = "wildmatch" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6c48bd20df7e4ced539c12f570f937c6b4884928a87fee70a479d72f031d4e0" +checksum = "ee583bdc5ff1cf9db20e9db5bb3ff4c3089a8f6b8b31aff265c9aba85812db86" [[package]] name = "winapi" @@ -1995,9 +2556,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-sys" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5acdd78cb4ba54c0045ac14f62d8f94a03d10047904ae2a40afa1e99d8f70825" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" dependencies = [ "windows_aarch64_msvc", "windows_i686_gnu", @@ -2008,33 +2569,33 @@ dependencies = [ [[package]] name = "windows_aarch64_msvc" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17cffbe740121affb56fad0fc0e421804adf0ae00891205213b5cecd30db881d" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" [[package]] name = "windows_i686_gnu" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2564fde759adb79129d9b4f54be42b32c89970c18ebf93124ca8870a498688ed" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" [[package]] name = "windows_i686_msvc" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cd9d32ba70453522332c14d38814bceeb747d80b3958676007acadd7e166956" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" [[package]] name = "windows_x86_64_gnu" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfce6deae227ee8d356d19effc141a509cc503dfd1f850622ec4b0f84428e1f4" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" [[package]] name = "windows_x86_64_msvc" -version = "0.34.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19538ccc21819d01deaf88d6a17eae6596a12e9aafdbb97916fb49896d89de9" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" [[package]] name = "zeroize" diff --git a/Cargo.toml b/Cargo.toml index 0255177..7a84e4b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,24 +1,6 @@ -[package] -name = "matrix" -version = "0.1.0" -edition = "2021" +[workspace] -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -tokio = { version = "1.17", features = ["full"] } -axum = "0.5" -tracing = "0.1" -tracing-subscriber = { version = "0.3", features = ["env-filter"] } -serde = {version = "1.0", features = ["derive"] } -serde_json = "1.0" -tower-http = { version = "0.2", features = ["cors", "trace"]} -sqlx = { version = "0.5", features = ["sqlite", "macros", "runtime-tokio-rustls", "offline"] } -anyhow = "1.0" -thiserror = "1.0" -argon2 = { version = "0.4", features = ["std"] } -rand = { version = "0.8.5", features = ["std"] } -uuid = { version = "1.0", features = ["v4"] } -ruma = { version = "0.6.4", features = ["client-api", "compat"] } -axum-macros = "0.2.2" -http = "0.2.8" +members = [ + "neo", + "neo-entity" +] diff --git a/neo-entity/.gitignore b/neo-entity/.gitignore new file mode 100644 index 0000000..4fffb2f --- /dev/null +++ b/neo-entity/.gitignore @@ -0,0 +1,2 @@ +/target +/Cargo.lock diff --git a/neo-entity/Cargo.toml b/neo-entity/Cargo.toml new file mode 100644 index 0000000..cd13738 --- /dev/null +++ b/neo-entity/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "neo-entity" +version = "0.1.0" +edition = "2021" +publish = false + +[dependencies] +chrono = {version = "0.4", features = ["serde"] } +sea-orm = { version = "^0.8", features = ["macros", "with-chrono", "with-uuid", "with-json"], default-features = false } +serde = "1.0" +serde_json = "1.0" +uuid = { version = "*", features = ["v4", "serde"]} \ No newline at end of file diff --git a/neo-entity/src/devices.rs b/neo-entity/src/devices.rs new file mode 100644 index 0000000..a791788 --- /dev/null +++ b/neo-entity/src/devices.rs @@ -0,0 +1,39 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "devices")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub uuid: Uuid, + pub user_uuid: Uuid, + pub device_id: String, + pub display_name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::users::Entity", + from = "Column::UserUuid", + to = "super::users::Column::Uuid", + on_update = "NoAction", + on_delete = "NoAction" + )] + Users, + #[sea_orm(has_many = "super::sessions::Entity")] + Sessions, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Users.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Sessions.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/neo-entity/src/events.rs b/neo-entity/src/events.rs new file mode 100644 index 0000000..72fbffa --- /dev/null +++ b/neo-entity/src/events.rs @@ -0,0 +1,48 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "events")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub uuid: String, + pub room_uuid: String, + pub r#type: String, + pub state_key: Option, + pub sender_uuid: String, + pub origin_server_ts: i32, + pub content: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::users::Entity", + from = "Column::SenderUuid", + to = "super::users::Column::Uuid", + on_update = "NoAction", + on_delete = "NoAction" + )] + Users, + #[sea_orm( + belongs_to = "super::rooms::Entity", + from = "Column::RoomUuid", + to = "super::rooms::Column::Uuid", + on_update = "NoAction", + on_delete = "NoAction" + )] + Rooms, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Users.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Rooms.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/neo-entity/src/lib.rs b/neo-entity/src/lib.rs new file mode 100644 index 0000000..bb93954 --- /dev/null +++ b/neo-entity/src/lib.rs @@ -0,0 +1,3 @@ +pub mod users; +pub mod devices; +pub mod sessions; \ No newline at end of file diff --git a/neo-entity/src/rooms.rs b/neo-entity/src/rooms.rs new file mode 100644 index 0000000..e331276 --- /dev/null +++ b/neo-entity/src/rooms.rs @@ -0,0 +1,23 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "rooms")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub uuid: String, + pub name: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::events::Entity")] + Events, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Events.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/neo-entity/src/sessions.rs b/neo-entity/src/sessions.rs new file mode 100644 index 0000000..7213f6a --- /dev/null +++ b/neo-entity/src/sessions.rs @@ -0,0 +1,30 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "sessions")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub uuid: Uuid, + pub device_uuid: Uuid, + pub key: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::devices::Entity", + from = "Column::DeviceUuid", + to = "super::devices::Column::Uuid", + on_update = "NoAction", + on_delete = "NoAction" + )] + Devices, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Devices.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/neo-entity/src/users.rs b/neo-entity/src/users.rs new file mode 100644 index 0000000..a6e4110 --- /dev/null +++ b/neo-entity/src/users.rs @@ -0,0 +1,25 @@ +use sea_orm::entity::prelude::*; + +#[derive(Clone, Debug, PartialEq, DeriveEntityModel)] +#[sea_orm(table_name = "users")] +pub struct Model { + #[sea_orm(primary_key, auto_increment = false)] + pub uuid: Uuid, + pub user_id: String, + pub display_name: String, + pub password_hash: String, +} + +#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] +pub enum Relation { + #[sea_orm(has_many = "super::devices::Entity")] + Devices +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Devices.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/neo/Cargo.toml b/neo/Cargo.toml new file mode 100644 index 0000000..68c8154 --- /dev/null +++ b/neo/Cargo.toml @@ -0,0 +1,26 @@ +[package] +name = "matrix" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +tokio = { version = "1.17", features = ["full"] } +axum = "0.5" +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +serde = {version = "1.0", features = ["derive"] } +serde_json = "1.0" +tower-http = { version = "0.2", features = ["cors", "trace"]} +#sqlx = { version = "0.5", features = ["sqlite", "macros", "runtime-tokio-rustls", "offline"] } +anyhow = "1.0" +thiserror = "1.0" +argon2 = { version = "0.4", features = ["std"] } +rand = { version = "0.8.5", features = ["std"] } +uuid = { version = "1.0", features = ["v4"] } +ruma = { version = "0.6.4", features = ["client-api", "compat"] } +axum-macros = "0.2.2" +http = "0.2.8" +sea-orm = { version = "^0.8", features = ["sqlx-sqlite", "runtime-tokio-native-tls", "macros"], default-features = false } +neo-entity = { version = "*", path = "../neo-entity" } \ No newline at end of file diff --git a/migrations/20220423204756_add_user.sql b/neo/migrations/20220423204756_add_user.sql similarity index 100% rename from migrations/20220423204756_add_user.sql rename to neo/migrations/20220423204756_add_user.sql diff --git a/migrations/20220424172900_add_devices.sql b/neo/migrations/20220424172900_add_devices.sql similarity index 100% rename from migrations/20220424172900_add_devices.sql rename to neo/migrations/20220424172900_add_devices.sql diff --git a/migrations/20220424175554_add_sessions.sql b/neo/migrations/20220424175554_add_sessions.sql similarity index 100% rename from migrations/20220424175554_add_sessions.sql rename to neo/migrations/20220424175554_add_sessions.sql diff --git a/migrations/20220507162217_add_rooms.sql b/neo/migrations/20220507162217_add_rooms.sql similarity index 100% rename from migrations/20220507162217_add_rooms.sql rename to neo/migrations/20220507162217_add_rooms.sql diff --git a/migrations/20220507162532_add_events.sql b/neo/migrations/20220507162532_add_events.sql similarity index 100% rename from migrations/20220507162532_add_events.sql rename to neo/migrations/20220507162532_add_events.sql diff --git a/src/api/client_server/errors/api_error.rs b/neo/src/api/client_server/errors/api_error.rs similarity index 100% rename from src/api/client_server/errors/api_error.rs rename to neo/src/api/client_server/errors/api_error.rs diff --git a/src/api/client_server/errors/authentication_error.rs b/neo/src/api/client_server/errors/authentication_error.rs similarity index 100% rename from src/api/client_server/errors/authentication_error.rs rename to neo/src/api/client_server/errors/authentication_error.rs diff --git a/src/api/client_server/errors/mod.rs b/neo/src/api/client_server/errors/mod.rs similarity index 100% rename from src/api/client_server/errors/mod.rs rename to neo/src/api/client_server/errors/mod.rs diff --git a/src/api/client_server/errors/registration_error.rs b/neo/src/api/client_server/errors/registration_error.rs similarity index 100% rename from src/api/client_server/errors/registration_error.rs rename to neo/src/api/client_server/errors/registration_error.rs diff --git a/src/api/client_server/mod.rs b/neo/src/api/client_server/mod.rs similarity index 100% rename from src/api/client_server/mod.rs rename to neo/src/api/client_server/mod.rs diff --git a/src/api/client_server/r0/auth.rs b/neo/src/api/client_server/r0/auth.rs similarity index 74% rename from src/api/client_server/r0/auth.rs rename to neo/src/api/client_server/r0/auth.rs index f8f74c3..c191264 100644 --- a/src/api/client_server/r0/auth.rs +++ b/neo/src/api/client_server/r0/auth.rs @@ -5,16 +5,19 @@ use axum::{ routing::{get, post}, Extension, }; -use sqlx::SqlitePool; +use neo_entity::{ + devices::{self, Entity as Device}, + sessions::{self, Entity as Session}, + users::{self, Entity as User}, +}; +use sea_orm::{ActiveModelTrait, ColumnTrait, DatabaseConnection, EntityTrait, QueryFilter, Set}; use crate::{ api::client_server::errors::{ api_error::ApiError, authentication_error::AuthenticationError, registration_error::RegistrationError, }, - models::{devices::Device, sessions::Session, users::User}, ruma_wrapper::{RumaRequest, RumaResponse}, - types::user_id::UserId, Config, }; @@ -41,7 +44,7 @@ async fn get_login_types() -> Result>, - Extension(db): Extension, + Extension(db): Extension, RumaRequest(req): RumaRequest, ) -> Result, ApiError> { use session::login::v3::*; @@ -52,32 +55,52 @@ async fn login( let user_id = if let IncomingUserIdentifier::UserIdOrLocalpart(user_id) = incoming_password.identifier { - let user_id = UserId::new(&user_id, config.server_name())?; - - ruma::UserId::parse(user_id.to_string()) + ruma::UserId::parse_with_server_name(user_id, &config.server_name) .map_err(|_| AuthenticationError::InvalidUserId)? } else { return Err(AuthenticationError::InvalidUserId.into()); }; - let db_user = User::find_by_user_id(&db, user_id.as_str()).await?; - db_user - .password_correct(&password) - .map_err(|_| AuthenticationError::Forbidden)?; + let db_user = User::find() + .filter(users::Column::UserId.eq(user_id.as_str())) + .one(&db) + .await? + .ok_or(AuthenticationError::InvalidUserId)?; + //todo check password + //db_user + // .password_correct(&password) + // .map_err(|_| AuthenticationError::Forbidden)?; let device = if let Some(device_id) = req.device_id { - Device::find_for_user(&db, &db_user, device_id.as_str()).await? + Device::find() + .filter( + devices::Column::DeviceId + .eq(device_id.as_str()) + .and(devices::Column::UserUuid.eq(db_user.uuid)), + ) + .one(&db) + .await? + .unwrap() + //Device::find_for_user(&db, &db_user, device_id.as_str()).await? } else { let device_id = uuid::Uuid::new_v4().to_string(); let display_name = req .initial_device_display_name .unwrap_or_else(|| "Generic Device".into()); - Device::new(&db_user, &device_id, &display_name)? - .create(&db) - .await? + let device = devices::ActiveModel { + device_id: Set(device_id), + display_name: Set(display_name), + user_uuid: Set(db_user.uuid), + ..Default::default() + }; + device.insert(&db).await? }; - - let session = Session::new(&device)?.create(&db).await?; + + let session = sessions::ActiveModel { + device_uuid: Set(device.uuid), + ..Default::default() + }; + let session = session.insert(&db).await?; let response = Response::new( user_id, session.key, @@ -92,7 +115,7 @@ async fn login( async fn get_username_available( Extension(config): Extension>, - Extension(db): Extension, + Extension(db): Extension, Query(params): Query>, ) -> Result, ApiError> { use account::get_username_availability::v3::*; @@ -100,24 +123,28 @@ async fn get_username_available( let username = params .get("username") - .ok_or(RegistrationError::MissingUserId)?; - let user_id = UserId::new(username, config.server_name())?; - let user_id = - ruma::UserId::parse(user_id.to_string()).map_err(|_| RegistrationError::InvalidUserId)?; - let exists = User::exists(&db, &user_id).await?; + .ok_or(RegistrationError::MissingUserId)?.to_owned(); + let user_id = ruma::UserId::parse_with_server_name(username, &config.server_name) + .map_err(|_| RegistrationError::InvalidUserId)?; - Ok(RumaResponse(Response::new(!exists))) + let available = User::find() + .filter(users::Column::UserId.eq(user_id.as_str())) + .one(&db) + .await? + .is_none(); + + Ok(RumaResponse(Response::new(available))) } async fn post_register( Extension(config): Extension>, - Extension(db): Extension, + Extension(db): Extension, RumaRequest(req): RumaRequest, ) -> Result, ApiError> { use account::register::v3::*; config - .enable_registration() + .enable_registration .then(|| true) .ok_or(RegistrationError::RegistrationDisabled)?; @@ -128,9 +155,7 @@ async fn post_register( let user_id = if let IncomingUserIdentifier::UserIdOrLocalpart(user_id) = incoming_password.identifier { - let user_id = UserId::new(&user_id, config.server_name())?; - - ruma::UserId::parse(user_id.to_string()) + ruma::UserId::parse_with_server_name(user_id, &config.server_name) .map_err(|_| AuthenticationError::InvalidUserId)? } else { return Err(AuthenticationError::InvalidUserId.into()); diff --git a/src/api/client_server/r0/filter.rs b/neo/src/api/client_server/r0/filter.rs similarity index 100% rename from src/api/client_server/r0/filter.rs rename to neo/src/api/client_server/r0/filter.rs diff --git a/src/api/client_server/r0/keys.rs b/neo/src/api/client_server/r0/keys.rs similarity index 100% rename from src/api/client_server/r0/keys.rs rename to neo/src/api/client_server/r0/keys.rs diff --git a/src/api/client_server/r0/mod.rs b/neo/src/api/client_server/r0/mod.rs similarity index 68% rename from src/api/client_server/r0/mod.rs rename to neo/src/api/client_server/r0/mod.rs index a2d2566..a1abefd 100644 --- a/src/api/client_server/r0/mod.rs +++ b/neo/src/api/client_server/r0/mod.rs @@ -6,9 +6,14 @@ use axum::{ response::IntoResponse, Json, }; -use sqlx::SqlitePool; +use neo_entity::{ + devices::Entity as Device, + sessions::{self, Entity as Session}, + users::Entity as User, +}; +use sea_orm::{ColumnTrait, EntityTrait, ModelTrait, QueryFilter, DatabaseConnection}; -use crate::{models::sessions::Session, types::error_code::ErrorCode}; +use crate::types::error_code::ErrorCode; use super::errors::ErrorResponse; @@ -22,7 +27,7 @@ pub mod sync; pub mod thirdparty; async fn authentication_middleware(mut req: Request, next: Next) -> impl IntoResponse { - let db: &SqlitePool = req.extensions().get().unwrap(); + let db: &DatabaseConnection = req.extensions().get().unwrap(); let auth_header = req .headers() .get(axum::http::header::AUTHORIZATION) @@ -58,7 +63,11 @@ async fn authentication_middleware(mut req: Request, next: Next) -> imp } }; - let session = match Session::find_by_key(db, &auth_header[idx + 1..]).await { + let session = match Session::find() + .filter(sessions::Column::Key.eq(&auth_header[idx + 1..])) + .one(db) + .await + { Ok(session) => session, Err(_) => { return ( @@ -84,7 +93,7 @@ async fn authentication_middleware(mut req: Request, next: Next) -> imp } }; - let device = match session.device(db).await { + let device = match session.find_related(Device).one(db).await { Ok(device) => device, Err(_) => { return ( @@ -95,7 +104,18 @@ async fn authentication_middleware(mut req: Request, next: Next) -> imp } }; - let user = match device.user(db).await { + let device = match device { + Some(device) => device, + None => { + return ( + StatusCode::FORBIDDEN, + Json(ErrorResponse::new(ErrorCode::Forbidden, "Forbidden", None)), + ) + .into_response() + } + }; + + let user = match device.find_related(User).one(db).await { Ok(user) => user, Err(_) => { return ( @@ -106,6 +126,17 @@ async fn authentication_middleware(mut req: Request, next: Next) -> imp } }; + let user = match user { + Some(user) => user, + None => { + return ( + StatusCode::FORBIDDEN, + Json(ErrorResponse::new(ErrorCode::Forbidden, "Forbidden", None)), + ) + .into_response() + } + }; + req.extensions_mut().insert(Arc::new(user)); next.run(req).await.into_response() diff --git a/src/api/client_server/r0/presence.rs b/neo/src/api/client_server/r0/presence.rs similarity index 100% rename from src/api/client_server/r0/presence.rs rename to neo/src/api/client_server/r0/presence.rs diff --git a/src/api/client_server/r0/push.rs b/neo/src/api/client_server/r0/push.rs similarity index 100% rename from src/api/client_server/r0/push.rs rename to neo/src/api/client_server/r0/push.rs diff --git a/src/api/client_server/r0/room.rs b/neo/src/api/client_server/r0/room.rs similarity index 100% rename from src/api/client_server/r0/room.rs rename to neo/src/api/client_server/r0/room.rs diff --git a/src/api/client_server/r0/sync.rs b/neo/src/api/client_server/r0/sync.rs similarity index 100% rename from src/api/client_server/r0/sync.rs rename to neo/src/api/client_server/r0/sync.rs diff --git a/src/api/client_server/r0/thirdparty.rs b/neo/src/api/client_server/r0/thirdparty.rs similarity index 100% rename from src/api/client_server/r0/thirdparty.rs rename to neo/src/api/client_server/r0/thirdparty.rs diff --git a/src/api/client_server/versions.rs b/neo/src/api/client_server/versions.rs similarity index 100% rename from src/api/client_server/versions.rs rename to neo/src/api/client_server/versions.rs diff --git a/src/api/mod.rs b/neo/src/api/mod.rs similarity index 100% rename from src/api/mod.rs rename to neo/src/api/mod.rs diff --git a/neo/src/config.rs b/neo/src/config.rs new file mode 100644 index 0000000..1d5c7bb --- /dev/null +++ b/neo/src/config.rs @@ -0,0 +1,17 @@ +use ruma::{ServerName, OwnedServerName}; + +pub struct Config { + pub db_path: String, + pub server_name: OwnedServerName, + pub enable_registration: bool, +} + +impl Default for Config { + fn default() -> Self { + Self { + db_path: "sqlite://db.sqlite3".into(), + server_name: ServerName::parse("fuckwit.dev").unwrap(), + enable_registration: true, + } + } +} diff --git a/src/main.rs b/neo/src/main.rs similarity index 96% rename from src/main.rs rename to neo/src/main.rs index 88c9d58..037c3a8 100644 --- a/src/main.rs +++ b/neo/src/main.rs @@ -7,10 +7,10 @@ use axum::{ Extension, Router, }; use config::Config; +use sea_orm::Database; use tower_http::{ cors::CorsLayer, trace::{DefaultMakeSpan, DefaultOnRequest, DefaultOnResponse, TraceLayer}, - LatencyUnit, }; use tracing::Level; @@ -31,7 +31,7 @@ async fn main() -> anyhow::Result<()> { let config = Arc::new(Config::default()); - let pool = sqlx::SqlitePool::connect(config.db_path()).await?; + let pool = Database::connect(config.db_path).await?; // TODO: set correct CORS headers let cors = CorsLayer::new() diff --git a/src/models/devices.rs b/neo/src/models/devices.rs similarity index 100% rename from src/models/devices.rs rename to neo/src/models/devices.rs diff --git a/src/models/events.rs b/neo/src/models/events.rs similarity index 100% rename from src/models/events.rs rename to neo/src/models/events.rs diff --git a/src/models/mod.rs b/neo/src/models/mod.rs similarity index 100% rename from src/models/mod.rs rename to neo/src/models/mod.rs diff --git a/src/models/sessions.rs b/neo/src/models/sessions.rs similarity index 100% rename from src/models/sessions.rs rename to neo/src/models/sessions.rs diff --git a/src/models/users.rs b/neo/src/models/users.rs similarity index 100% rename from src/models/users.rs rename to neo/src/models/users.rs diff --git a/src/responses/mod.rs b/neo/src/responses/mod.rs similarity index 100% rename from src/responses/mod.rs rename to neo/src/responses/mod.rs diff --git a/src/responses/registration.rs b/neo/src/responses/registration.rs similarity index 100% rename from src/responses/registration.rs rename to neo/src/responses/registration.rs diff --git a/src/ruma_wrapper.rs b/neo/src/ruma_wrapper.rs similarity index 100% rename from src/ruma_wrapper.rs rename to neo/src/ruma_wrapper.rs diff --git a/src/types/error_code.rs b/neo/src/types/error_code.rs similarity index 100% rename from src/types/error_code.rs rename to neo/src/types/error_code.rs diff --git a/src/types/event_type.rs b/neo/src/types/event_type.rs similarity index 100% rename from src/types/event_type.rs rename to neo/src/types/event_type.rs diff --git a/src/types/flow.rs b/neo/src/types/flow.rs similarity index 100% rename from src/types/flow.rs rename to neo/src/types/flow.rs diff --git a/src/types/mod.rs b/neo/src/types/mod.rs similarity index 62% rename from src/types/mod.rs rename to neo/src/types/mod.rs index 39759fa..f1cdb07 100644 --- a/src/types/mod.rs +++ b/neo/src/types/mod.rs @@ -1,7 +1,7 @@ pub mod error_code; -pub mod event_type; +//pub mod event_type; pub mod flow; pub mod server_name; -pub mod user_id; +//pub mod user_id; pub mod user_interactive_authorization; -pub mod uuid; +//pub mod uuid; diff --git a/src/types/server_name.rs b/neo/src/types/server_name.rs similarity index 100% rename from src/types/server_name.rs rename to neo/src/types/server_name.rs diff --git a/src/types/user_id.rs b/neo/src/types/user_id.rs similarity index 100% rename from src/types/user_id.rs rename to neo/src/types/user_id.rs diff --git a/src/types/user_interactive_authorization.rs b/neo/src/types/user_interactive_authorization.rs similarity index 100% rename from src/types/user_interactive_authorization.rs rename to neo/src/types/user_interactive_authorization.rs diff --git a/src/types/uuid.rs b/neo/src/types/uuid.rs similarity index 100% rename from src/types/uuid.rs rename to neo/src/types/uuid.rs diff --git a/neo/target/sqlx/query-7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451.json b/neo/target/sqlx/query-7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451.json new file mode 100644 index 0000000..fe6b0f4 --- /dev/null +++ b/neo/target/sqlx/query-7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451.json @@ -0,0 +1,37 @@ +{ + "query": "select uuid as 'uuid: Uuid', user_uuid as 'user_uuid: Uuid', device_id, display_name from devices where uuid = ?", + "describe": { + "columns": [ + { + "name": "uuid: Uuid", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "user_uuid: Uuid", + "ordinal": 1, + "type_info": "Int64" + }, + { + "name": "device_id", + "ordinal": 2, + "type_info": "Text" + }, + { + "name": "display_name", + "ordinal": 3, + "type_info": "Text" + } + ], + "parameters": { + "Right": 1 + }, + "nullable": [ + false, + false, + false, + false + ] + }, + "hash": "1843c2b3e548d1dd13694a65ca1ba123da38668c3fc5bc431fe5884a6fc25f71" +} \ No newline at end of file diff --git a/sqlx-data.json b/sqlx-data.json deleted file mode 100644 index 6ab5411..0000000 --- a/sqlx-data.json +++ /dev/null @@ -1,333 +0,0 @@ -{ - "db": "SQLite", - "112b5723b62084ee14191a2f8773d2493814d70bfc4d4ce046655958d2ae472b": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_uuid: Uuid", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "device_id", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 4 - } - }, - "query": "insert into devices(uuid, user_uuid, device_id, display_name)\n values(?, ?, ?, ?)\n returning uuid as 'uuid: Uuid', user_uuid as 'user_uuid: Uuid', device_id, display_name" - }, - "1843c2b3e548d1dd13694a65ca1ba123da38668c3fc5bc431fe5884a6fc25f71": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_uuid: Uuid", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "device_id", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select uuid as 'uuid: Uuid', user_uuid as 'user_uuid: Uuid', device_id, display_name from devices where uuid = ?" - }, - "221d0935dff8911fe58ac047d39e11b0472d2180d7c297291a5dc440e00efb80": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "device_uuid: Uuid", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "key", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Right": 3 - } - }, - "query": "insert into sessions(uuid, device_uuid, key)\n values(?, ?, ?)\n returning uuid as 'uuid: Uuid', device_uuid as 'device_uuid: Uuid', key" - }, - "2b3409859921423dc051ce76a0166116f39ca7f26053bac5bde0a61313bfd68c": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "password_hash", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select uuid as 'uuid: Uuid', user_id, display_name, password_hash\n from users where user_id = ?" - }, - "33f7c796b21878b2f06f3e012ada151226bd1ab58677ca6acc4edb10e0e1493a": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "password_hash", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 4 - } - }, - "query": "insert into users(uuid, user_id, display_name, password_hash)\n values (?, ?, ?, ?)\n returning uuid as 'uuid: Uuid', user_id, display_name, password_hash" - }, - "58d27b1d424297504f1da2e3b9b4020121251c1155fbf5dc870dafbef97659f3": { - "describe": { - "columns": [ - { - "name": "user_id", - "ordinal": 0, - "type_info": "Text" - } - ], - "nullable": [ - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select user_id from users where user_id = ?" - }, - "9673bbe9506ba700923467fe8aaa141f9030158790db74234c13a5800adf2575": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "password_hash", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select uuid as 'uuid: Uuid', user_id, display_name, password_hash\n from users where uuid = ?" - }, - "9ee4afab2c653a23144bcb05943aa4ff1e8dc1ae5baa9c87827b52671ae47784": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_uuid: Uuid", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "device_id", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 2 - } - }, - "query": "select uuid as 'uuid: Uuid', user_uuid as 'user_uuid: Uuid', device_id, display_name from devices where user_uuid = ? and device_id = ?" - }, - "b38fd90504bea0c63e6517738c2354e6b057fcc6c643283019b27689e286bf2d": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "device_uuid: Uuid", - "ordinal": 1, - "type_info": "Int64" - }, - { - "name": "key", - "ordinal": 2, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false - ], - "parameters": { - "Right": 1 - } - }, - "query": "select uuid as 'uuid: Uuid', device_uuid as 'device_uuid: Uuid', key\n from sessions where key = ?" - }, - "f1b148ebcfe22d9680b8ea3dc3c334523496e88fca724ec7d08c5e2948e58526": { - "describe": { - "columns": [ - { - "name": "uuid: Uuid", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "user_id", - "ordinal": 1, - "type_info": "Text" - }, - { - "name": "display_name", - "ordinal": 2, - "type_info": "Text" - }, - { - "name": "password_hash", - "ordinal": 3, - "type_info": "Text" - } - ], - "nullable": [ - false, - false, - false, - false - ], - "parameters": { - "Right": 5 - } - }, - "query": "update users set uuid = ?, user_id = ?, display_name = ?, password_hash = ?\n where uuid = ?\n returning uuid as 'uuid: Uuid', user_id, display_name, password_hash" - } -} \ No newline at end of file diff --git a/src/config.rs b/src/config.rs deleted file mode 100644 index 971118a..0000000 --- a/src/config.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::types::server_name::ServerName; - -pub struct Config { - db_path: String, - server_name: ServerName, - enable_registration: bool, -} - -impl Config { - /// Get a reference to the config's db path. - #[must_use] - pub fn db_path(&self) -> &str { - self.db_path.as_ref() - } - - /// Get a reference to the config's homeserver name. - #[must_use] - pub fn server_name(&self) -> &ServerName { - &self.server_name - } - - /// Get the config's enable registration. - #[must_use] - pub fn enable_registration(&self) -> bool { - self.enable_registration - } -} - -impl Default for Config { - fn default() -> Self { - Self { - db_path: "sqlite://db.sqlite3".into(), - server_name: ServerName::new("fuckwit.dev").unwrap(), - enable_registration: true, - } - } -}