From bda646f3b93d1104e7bfc23639726f1e7a4f8733 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E8=BF=90=E5=AE=B6?= Date: Tue, 21 May 2024 18:01:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8sqlx=E6=9B=BF=E6=8D=A2sea-orm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 2 +- Cargo.lock | 556 ++--------------------------- Cargo.toml | 31 +- api/Cargo.toml | 13 +- app.toml | 2 +- domain/Cargo.toml | 8 +- domain/src/db_result.rs | 3 + domain/src/entities/account.rs | 15 +- domain/src/entities/feedback.rs | 48 ++- domain/src/entities/mod.rs | 2 - domain/src/entities/player_info.rs | 51 ++- domain/src/entities/prelude.rs | 5 - domain/src/lib.rs | 3 +- library/Cargo.toml | 39 +- library/src/core/db.rs | 22 +- service/Cargo.toml | 12 +- service/src/feedback.rs | 40 +-- service/src/player_info.rs | 38 +- 18 files changed, 223 insertions(+), 667 deletions(-) create mode 100644 domain/src/db_result.rs delete mode 100644 domain/src/entities/prelude.rs diff --git a/.env b/.env index 54dd029..8728934 100644 --- a/.env +++ b/.env @@ -1,2 +1,2 @@ -DATABASE_URL=mysql://lyj:1325479Lyj!@47.95.198.7:13206/demo_rs +DATABASE_URL=postgres://lyj:1325479Lyj!@47.95.198.7:13207/demo_rs diff --git a/Cargo.lock b/Cargo.lock index 6689056..afa8c00 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,17 +17,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" -[[package]] -name = "ahash" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" -dependencies = [ - "getrandom", - "once_cell", - "version_check", -] - [[package]] name = "ahash" version = "0.8.11" @@ -50,12 +39,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "aliasable" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" - [[package]] name = "allocator-api2" version = "0.2.16" @@ -98,12 +81,6 @@ dependencies = [ "validator", ] -[[package]] -name = "arrayvec" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" - [[package]] name = "async-lock" version = "3.3.0" @@ -115,28 +92,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "async-stream" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" -dependencies = [ - "async-stream-impl", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.52", -] - [[package]] name = "async-trait" version = "0.1.77" @@ -157,16 +112,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "atomic-write-file" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8204db279bf648d64fe845bd8840f78b39c8132ed4d6a4194c3b10d4b4cfb0b" -dependencies = [ - "nix", - "rand", -] - [[package]] name = "autocfg" version = "1.1.0" @@ -283,17 +228,6 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" -[[package]] -name = "bigdecimal" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa" -dependencies = [ - "num-bigint", - "num-integer", - "num-traits", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -309,18 +243,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "block-buffer" version = "0.10.4" @@ -330,58 +252,12 @@ dependencies = [ "generic-array", ] -[[package]] -name = "borsh" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" -dependencies = [ - "borsh-derive", - "cfg_aliases", -] - -[[package]] -name = "borsh-derive" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" -dependencies = [ - "once_cell", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.52", - "syn_derive", -] - [[package]] name = "bumpalo" version = "3.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" -[[package]] -name = "bytecheck" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" -dependencies = [ - "bytecheck_derive", - "ptr_meta", - "simdutf8", -] - -[[package]] -name = "bytecheck_derive" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "byteorder" version = "1.5.0" @@ -406,12 +282,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" - [[package]] name = "chrono" version = "0.4.35" @@ -422,7 +292,6 @@ dependencies = [ "iana-time-zone", "js-sys", "num-traits", - "serde", "wasm-bindgen", "windows-targets 0.52.4", ] @@ -587,18 +456,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", - "serde", -] - -[[package]] -name = "derivative" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", ] [[package]] @@ -617,8 +474,9 @@ dependencies = [ name = "domain" version = "0.1.0" dependencies = [ - "sea-orm", + "library", "serde", + "sqlx", "validator", ] @@ -774,26 +632,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - -[[package]] -name = "futures" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", -] - [[package]] name = "futures-channel" version = "0.3.30" @@ -867,7 +705,6 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ - "futures-channel", "futures-core", "futures-io", "futures-macro", @@ -927,22 +764,13 @@ dependencies = [ "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -dependencies = [ - "ahash 0.7.8", -] - [[package]] name = "hashbrown" version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.11", + "ahash", "allocator-api2", ] @@ -952,7 +780,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -1152,18 +980,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4" dependencies = [ "equivalent", - "hashbrown 0.14.3", -] - -[[package]] -name = "inherent" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.52", + "hashbrown", ] [[package]] @@ -1230,9 +1047,10 @@ dependencies = [ "http-body-util", "moka", "once_cell", - "sea-orm", "serde", "serde_json", + "sqlx", + "sqlx-postgres", "thiserror", "tokio", "toml", @@ -1371,18 +1189,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "nix" -version = "0.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" -dependencies = [ - "bitflags 2.4.2", - "cfg-if", - "cfg_aliases", - "libc", -] - [[package]] name = "nom" version = "7.1.3" @@ -1403,17 +1209,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-bigint" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" -dependencies = [ - "autocfg", - "num-integer", - "num-traits", -] - [[package]] name = "num-bigint-dig" version = "0.8.4" @@ -1536,39 +1331,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "ordered-float" -version = "3.9.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" -dependencies = [ - "num-traits", -] - -[[package]] -name = "ouroboros" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954" -dependencies = [ - "aliasable", - "ouroboros_macro", - "static_assertions", -] - -[[package]] -name = "ouroboros_macro" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.52", -] - [[package]] name = "overload" version = "0.1.1" @@ -1696,15 +1458,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" -[[package]] -name = "proc-macro-crate" -version = "3.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" -dependencies = [ - "toml_edit 0.21.1", -] - [[package]] name = "proc-macro-error" version = "1.0.4" @@ -1738,26 +1491,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "ptr_meta" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" -dependencies = [ - "ptr_meta_derive", -] - -[[package]] -name = "ptr_meta_derive" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "quanta" version = "0.12.3" @@ -1782,12 +1515,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.8.5" @@ -1865,15 +1592,6 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" -[[package]] -name = "rend" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" -dependencies = [ - "bytecheck", -] - [[package]] name = "reqwest" version = "0.12.4" @@ -1931,35 +1649,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rkyv" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" -dependencies = [ - "bitvec", - "bytecheck", - "bytes", - "hashbrown 0.12.3", - "ptr_meta", - "rend", - "rkyv_derive", - "seahash", - "tinyvec", - "uuid", -] - -[[package]] -name = "rkyv_derive" -version = "0.7.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "rsa" version = "0.9.6" @@ -1980,22 +1669,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rust_decimal" -version = "1.34.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39449a79f45e8da28c57c341891b69a183044b29518bb8f86dbac9df60bb7df" -dependencies = [ - "arrayvec", - "borsh", - "bytes", - "num-traits", - "rand", - "rkyv", - "serde", - "serde_json", -] - [[package]] name = "rustc-demangle" version = "0.1.23" @@ -2107,100 +1780,6 @@ dependencies = [ "untrusted", ] -[[package]] -name = "sea-bae" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bd3534a9978d0aa7edd2808dc1f8f31c4d0ecd31ddf71d997b3c98e9f3c9114" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.52", -] - -[[package]] -name = "sea-orm" -version = "0.12.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6632f499b80cc6aaa781b302e4c9fae663e0e3dcf2640e9d80034d5b10731efe" -dependencies = [ - "async-stream", - "async-trait", - "bigdecimal", - "chrono", - "futures", - "log", - "ouroboros", - "rust_decimal", - "sea-orm-macros", - "sea-query", - "sea-query-binder", - "serde", - "serde_json", - "sqlx", - "strum", - "thiserror", - "time", - "tracing", - "url", - "uuid", -] - -[[package]] -name = "sea-orm-macros" -version = "0.12.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec13bfb4c4aef208f68dbea970dd40d13830c868aa8dcb4e106b956e6bb4f2fa" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "sea-bae", - "syn 2.0.52", - "unicode-ident", -] - -[[package]] -name = "sea-query" -version = "0.30.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4166a1e072292d46dc91f31617c2a1cdaf55a8be4b5c9f4bf2ba248e3ac4999b" -dependencies = [ - "bigdecimal", - "chrono", - "derivative", - "inherent", - "ordered-float", - "rust_decimal", - "serde_json", - "time", - "uuid", -] - -[[package]] -name = "sea-query-binder" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36bbb68df92e820e4d5aeb17b4acd5cc8b5d18b2c36a4dd6f4626aabfa7ab1b9" -dependencies = [ - "bigdecimal", - "chrono", - "rust_decimal", - "sea-query", - "serde_json", - "sqlx", - "time", - "uuid", -] - -[[package]] -name = "seahash" -version = "4.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" - [[package]] name = "security-framework" version = "2.10.0" @@ -2302,7 +1881,7 @@ dependencies = [ "futures-executor", "library", "reqwest", - "sea-orm", + "sqlx", "tracing", ] @@ -2339,9 +1918,9 @@ dependencies = [ [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -2356,12 +1935,6 @@ dependencies = [ "rand_core", ] -[[package]] -name = "simdutf8" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" - [[package]] name = "slab" version = "0.4.9" @@ -2425,9 +1998,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dba03c279da73694ef99763320dea58b51095dfe87d001b1d4b5fe78ba8763cf" +checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa" dependencies = [ "sqlx-core", "sqlx-macros", @@ -2438,19 +2011,17 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d84b0a3c3739e220d94b3239fd69fb1f74bc36e16643423bd99de3b43c21bfbd" +checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6" dependencies = [ - "ahash 0.8.11", + "ahash", "atoi", - "bigdecimal", "byteorder", "bytes", "chrono", "crc", "crossbeam-queue", - "dotenvy", "either", "event-listener 2.5.3", "futures-channel", @@ -2466,7 +2037,6 @@ dependencies = [ "once_cell", "paste", "percent-encoding", - "rust_decimal", "rustls", "rustls-pemfile 1.0.4", "serde", @@ -2475,7 +2045,6 @@ dependencies = [ "smallvec", "sqlformat", "thiserror", - "time", "tokio", "tokio-stream", "tracing", @@ -2486,9 +2055,9 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89961c00dc4d7dffb7aee214964b065072bff69e36ddb9e2c107541f75e4f2a5" +checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127" dependencies = [ "proc-macro2", "quote", @@ -2499,11 +2068,10 @@ dependencies = [ [[package]] name = "sqlx-macros-core" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0bd4519486723648186a08785143599760f7cc81c52334a55d6a83ea1e20841" +checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8" dependencies = [ - "atomic-write-file", "dotenvy", "either", "heck", @@ -2526,13 +2094,12 @@ dependencies = [ [[package]] name = "sqlx-mysql" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e37195395df71fd068f6e2082247891bc11e3289624bbc776a0cdfa1ca7f1ea4" +checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418" dependencies = [ "atoi", "base64 0.21.7", - "bigdecimal", "bitflags 2.4.2", "byteorder", "bytes", @@ -2557,7 +2124,6 @@ dependencies = [ "percent-encoding", "rand", "rsa", - "rust_decimal", "serde", "sha1", "sha2", @@ -2565,7 +2131,6 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror", - "time", "tracing", "uuid", "whoami", @@ -2573,13 +2138,12 @@ dependencies = [ [[package]] name = "sqlx-postgres" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6ac0ac3b7ccd10cc96c7ab29791a7dd236bd94021f31eec7ba3d46a74aa1c24" +checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e" dependencies = [ "atoi", "base64 0.21.7", - "bigdecimal", "bitflags 2.4.2", "byteorder", "chrono", @@ -2598,19 +2162,15 @@ dependencies = [ "log", "md-5", "memchr", - "num-bigint", "once_cell", "rand", - "rust_decimal", "serde", "serde_json", - "sha1", "sha2", "smallvec", "sqlx-core", "stringprep", "thiserror", - "time", "tracing", "uuid", "whoami", @@ -2618,9 +2178,9 @@ dependencies = [ [[package]] name = "sqlx-sqlite" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "210976b7d948c7ba9fced8ca835b11cbb2d677c59c79de41ac0d397e14547490" +checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa" dependencies = [ "atoi", "chrono", @@ -2635,19 +2195,12 @@ dependencies = [ "percent-encoding", "serde", "sqlx-core", - "time", "tracing", "url", "urlencoding", "uuid", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "stringprep" version = "0.1.4" @@ -2665,12 +2218,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" - [[package]] name = "subtle" version = "2.5.0" @@ -2699,18 +2246,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.52", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -2744,12 +2279,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "tempfile" version = "3.10.1" @@ -2912,7 +2441,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.6", + "toml_edit", ] [[package]] @@ -2924,17 +2453,6 @@ dependencies = [ "serde", ] -[[package]] -name = "toml_edit" -version = "0.21.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" -dependencies = [ - "indexmap", - "toml_datetime", - "winnow 0.5.40", -] - [[package]] name = "toml_edit" version = "0.22.6" @@ -2945,7 +2463,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.5", + "winnow", ] [[package]] @@ -2978,7 +2496,6 @@ dependencies = [ "pin-project-lite", "tower-layer", "tower-service", - "tracing", ] [[package]] @@ -3168,7 +2685,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" dependencies = [ "getrandom", - "serde", ] [[package]] @@ -3505,15 +3021,6 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" -[[package]] -name = "winnow" -version = "0.5.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" -dependencies = [ - "memchr", -] - [[package]] name = "winnow" version = "0.6.5" @@ -3533,15 +3040,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "zerocopy" version = "0.7.32" diff --git a/Cargo.toml b/Cargo.toml index b22f3c4..7e14580 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,8 +9,33 @@ members = [".", "api", "domain","library", "service"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -tokio = { version = "1.36.0", features = ["full"] } - - +tokio = { workspace = true, features = ["full"]} api = { path = "api" } library = { path = "library" } + +[workspace.dependencies] +tokio = "1.36" +axum = "0.7" +tracing = "0.1" +tower-http = "0.5" +validator = "0.17" +axum-extra = "0.9" +serde = "1.0" +sqlx = "0.7" +sqlx-postgres = "0.7" +toml = "0.8" +once_cell = "1.19" +tracing-appender = "0.2" +tracing-subscriber = "0.3" +chrono = "0.4" +thiserror = "1.0" +ulid = "1.1" +serde_json = "1.0" +http = "1.1" +http-body = "1.0" +http-body-util = "0.1" +moka = "0.12" +futures-util = "0.3" +reqwest = "0.12" +futures-executor = "0.3" +error-stack = "0.4" \ No newline at end of file diff --git a/api/Cargo.toml b/api/Cargo.toml index c863dd4..3f11344 100644 --- a/api/Cargo.toml +++ b/api/Cargo.toml @@ -6,13 +6,14 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -axum = "0.7.4" -tokio = { version = "1.36.0", features = ["full"] } -tracing = "0.1.40" -tower-http = { version = "0.5.2", features = ["trace"] } -validator = { version = "0.17", features = ["derive"] } +axum = { workspace = true } +tokio = { workspace = true } +tracing = { workspace = true } +tower-http = { workspace = true } +validator = { workspace = true } +axum-extra = { workspace = true } library = { path = "../library" } domain = { path = "../domain" } service = { path = "../service" } -axum-extra = "0.9.3" + diff --git a/app.toml b/app.toml index 100b736..4937c0a 100644 --- a/app.toml +++ b/app.toml @@ -9,5 +9,5 @@ prefix = "tower_defense_server" level = "DEBUG" [database] -url = "mysql://lyj:1325479Lyj!@47.95.198.7:13206/demo_rs" +url = "postgres://lyj:1325479Lyj!@47.95.198.7:13207/demo_rs" options = { min_conns = 10, max_conns = 20, conn_timeout = 30, idle_timeout = 300, max_lifetime = 60, sql_logging = true } \ No newline at end of file diff --git a/domain/Cargo.toml b/domain/Cargo.toml index aa231c6..2472994 100644 --- a/domain/Cargo.toml +++ b/domain/Cargo.toml @@ -6,6 +6,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -sea-orm = { version = "0.12.14", features = ["sqlx-mysql", "runtime-tokio-rustls", "macros", "debug-print"] } -serde = { version = "1.0", features = ["derive"] } -validator = { version = "0.17", features = ["derive"] } +serde = { workspace = true, features = ["derive"] } +sqlx = { workspace = true, features = ["postgres", "uuid", "macros", "sqlx-macros", "chrono"] } +validator = { workspace = true, features = ["derive"] } + +library = { path = "../library" } \ No newline at end of file diff --git a/domain/src/db_result.rs b/domain/src/db_result.rs new file mode 100644 index 0000000..6cc35fc --- /dev/null +++ b/domain/src/db_result.rs @@ -0,0 +1,3 @@ +pub struct CountResult { + pub count: u64 +} \ No newline at end of file diff --git a/domain/src/entities/account.rs b/domain/src/entities/account.rs index 49c387d..972230f 100644 --- a/domain/src/entities/account.rs +++ b/domain/src/entities/account.rs @@ -1,13 +1,7 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.14 -use sea_orm::entity::prelude::*; - -#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] -#[sea_orm(table_name = "account")] -pub struct Model { - #[sea_orm(primary_key)] +#[derive(Debug, Clone)] +pub struct Account { pub id: u64, - #[sea_orm(unique)] pub username: String, pub password: String, pub salt: String, @@ -18,8 +12,3 @@ pub struct Model { pub created_at: i64, pub updated_at: i64, } - -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} - -impl ActiveModelBehavior for ActiveModel {} diff --git a/domain/src/entities/feedback.rs b/domain/src/entities/feedback.rs index d7dd13f..f69da8a 100644 --- a/domain/src/entities/feedback.rs +++ b/domain/src/entities/feedback.rs @@ -1,18 +1,44 @@ -use sea_orm::entity::prelude::*; -use sea_orm::prelude::DateTime; -use serde::{Deserialize, Serialize}; +use sqlx::{FromRow, PgPool}; +use sqlx::types::chrono::{self, DateTime}; +use crate::db_result::CountResult; -#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Serialize, Deserialize)] -#[sea_orm(table_name = "feedback")] -pub struct Model { - #[sea_orm(primary_key)] +#[derive(Debug, Clone, FromRow, serde::Serialize)] +#[table_name = "feedback"] +pub struct Feedback { pub id: u64, pub user_id: u64, pub content: String, - pub created_at: DateTime, + pub created_at: DateTime, } -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} +impl Feedback { + pub async fn search_feedback(page: u64, page_size: u64, db_pool: &PgPool) -> Result, sqlx::Error> { + sqlx::query_as!( + Feedback, + r#"select id, user_id, content, created_at from feedback limit ? offset ?"#, + page_size, page + ).fetch_all(db_pool).await + } -impl ActiveModelBehavior for ActiveModel {} \ No newline at end of file + pub async fn count_feedback(db_pool: &PgPool) -> Result { + sqlx::query_as!( + CountResult, + r#"select count(*) from feedback"#, + ).fetch_one(db_pool).await + } + + pub async fn add_feedback(feedback: &mut Feedback, db_pool: &PgPool) -> Result { + feedback.created_at = DateTime::default().to_utc(); + sqlx::query_as!( + Feedback, + r#"insert into feedback + (user_id, content, created_at) + values + (?, ?, ?) returning * + "#, + feedback.user_id, + feedback.content, + feedback.created_at + ).execute(db_pool) + } +} \ No newline at end of file diff --git a/domain/src/entities/mod.rs b/domain/src/entities/mod.rs index 0e9fcb6..4b2ec30 100644 --- a/domain/src/entities/mod.rs +++ b/domain/src/entities/mod.rs @@ -1,6 +1,4 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.14 -pub mod prelude; pub mod account; pub mod player_info; pub mod feedback; diff --git a/domain/src/entities/player_info.rs b/domain/src/entities/player_info.rs index c822c8a..7b6b21d 100644 --- a/domain/src/entities/player_info.rs +++ b/domain/src/entities/player_info.rs @@ -1,22 +1,45 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.14 +use sqlx::{FromRow, PgPool, QueryBuilder}; +use sqlx::types::chrono::{self, DateTime}; +use library::db; -use sea_orm::entity::prelude::*; - -#[derive(Clone, Debug, PartialEq, DeriveEntityModel, Eq)] -#[sea_orm(table_name = "player_info")] -pub struct Model { - #[sea_orm(primary_key)] - pub id: u64, +#[derive(Debug, Clone, FromRow, serde::Serialize)] +#[table_name = "player_info"] +pub struct PlayerInfo { + pub id: Option, pub username: String, - pub email: Option, - #[sea_orm(unique)] + pub email: String, pub platform_id: String, pub user_type: String, pub country_code: String, - pub created_at: DateTime, + pub created_at: DateTime, } -#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)] -pub enum Relation {} +impl PlayerInfo { + pub async fn find_by_platform_id(platform_id: &str, db_pool: &PgPool) -> Result { + sqlx::query_as!( + PlayerInfo, + r#"select * from player_info where platform_id = ?"#, + platform_id + ) + .fetch_one(db_pool) + .await + } -impl ActiveModelBehavior for ActiveModel {} + pub async fn add_player_info(player_info: &mut PlayerInfo, db_pool: &PgPool) -> Result { + player_info.created_at = DateTime::default().to_utc(); + sqlx::query_as!( + PlayerInfo, + r#" + insert into player_info + (username, email, platform_id, user_type, country_code, created_at) + values + (?, ?, ?, ?, ?, ?) returning *"#, + player_info.username, + player_info.email, + player_info.platform_id, + player_info.user_type, + player_info.country_code, + player_info.created_at, + ).execute(db_pool) + } +} \ No newline at end of file diff --git a/domain/src/entities/prelude.rs b/domain/src/entities/prelude.rs deleted file mode 100644 index 2fb61d7..0000000 --- a/domain/src/entities/prelude.rs +++ /dev/null @@ -1,5 +0,0 @@ -//! `SeaORM` Entity. Generated by sea-orm-codegen 0.12.14 - -pub use super::account::Entity as Account; -pub use super::player_info::Entity as PlayerInfo; -pub use super::feedback::Entity as Feedback; diff --git a/domain/src/lib.rs b/domain/src/lib.rs index e39cf7c..65f0611 100644 --- a/domain/src/lib.rs +++ b/domain/src/lib.rs @@ -1,2 +1,3 @@ pub mod entities; -pub mod dto; \ No newline at end of file +pub mod dto; +mod db_result; \ No newline at end of file diff --git a/library/Cargo.toml b/library/Cargo.toml index 44ad272..432f7cc 100644 --- a/library/Cargo.toml +++ b/library/Cargo.toml @@ -4,22 +4,23 @@ version = "0.1.0" edition = "2021" [dependencies] -toml = "0.8.10" -serde = { version = "1.0.197", features = ["derive"] } -once_cell = "1.19.0" -tracing = "0.1.40" -tracing-appender = "0.2.3" -tracing-subscriber = { version = "0.3.18", features = ["json"] } -chrono = "0.4.35" -sea-orm = { version = "0.12.14", features = ["sqlx-mysql", "runtime-tokio-rustls", "macros", "debug-print"] } -axum = "0.7.4" -axum-extra = "0.9.2" -thiserror = "1.0.57" -ulid = "1.1.2" -serde_json = "1.0.114" -http = "1.1.0" -http-body = "1.0.0" -http-body-util = "0.1.0" -moka = { version = "0.12", features = ["future"] } -tokio = { version = "1", features = ["rt-multi-thread", "macros" ] } -futures-util = "0.3" \ No newline at end of file +toml = { workspace = true } +serde = { workspace = true, features = ["derive"] } +once_cell = { workspace = true } +tracing = { workspace = true } +tracing-appender = { workspace = true } +tracing-subscriber = { workspace = true, features = ["json"] } +chrono = { workspace = true } +sqlx = { workspace = true, features = ["mysql", "runtime-tokio-rustls", "macros", "json"] } +sqlx-postgres = { workspace = true, features = ["json"] } +axum = { workspace = true } +axum-extra = { workspace = true } +thiserror = { workspace = true } +ulid = { workspace = true } +serde_json = { workspace = true } +http = { workspace = true } +http-body = { workspace = true } +http-body-util = { workspace = true } +moka = { workspace = true, features = ["future"] } +tokio = { workspace = true, features = ["rt-multi-thread", "macros" ] } +futures-util = { workspace = true } \ No newline at end of file diff --git a/library/src/core/db.rs b/library/src/core/db.rs index 472aa8b..23bb435 100644 --- a/library/src/core/db.rs +++ b/library/src/core/db.rs @@ -1,35 +1,29 @@ use crate::core::config::Config; -use sea_orm::{ConnectOptions, Database, DatabaseConnection}; use std::sync::OnceLock; use std::time::Duration; +use sqlx_postgres::{PgPool, PgPoolOptions}; -static DB: OnceLock = OnceLock::new(); +static DB: OnceLock = OnceLock::new(); pub async fn init_database(config: &Config) { let db_cfg = &config.database; - let mut conn_option = ConnectOptions::new(&db_cfg.url); - conn_option + let pool = PgPoolOptions::new() .min_connections(db_cfg.options.min_conns) .max_connections(db_cfg.options.max_conns) - .connect_timeout(Duration::from_secs(db_cfg.options.conn_timeout)) + .acquire_timeout(Duration::from_secs(db_cfg.options.conn_timeout)) .idle_timeout(Duration::from_secs(db_cfg.options.idle_timeout)) .max_lifetime(Duration::from_secs(db_cfg.options.max_lifetime)) - .sqlx_logging(db_cfg.options.sql_logging); - - let conn = Database::connect(conn_option) + .connect(&db_cfg.url) .await .unwrap_or_else(|e| panic!("数据库连接失败:{}", e)); - let _ = conn - .ping() - .await - .is_err_and(|e| panic!("数据库连接失败:{}", e)); + pool.acquire().await.unwrap_or_else(|e| panic!("数据库连接失败:{}", e)); - let _ = DB.set(conn); + let _ = DB.set(pool); } -pub fn conn() -> &'static DatabaseConnection { +pub fn conn() -> &'static PgPool { DB.get().unwrap_or_else(|| panic!("数据库连接未初始化")) } diff --git a/service/Cargo.toml b/service/Cargo.toml index 2efd837..745fa06 100644 --- a/service/Cargo.toml +++ b/service/Cargo.toml @@ -6,12 +6,12 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -tracing = "0.1.40" -chrono = "0.4.35" -sea-orm = { version = "0.12.14", features = ["sqlx-mysql", "runtime-tokio-rustls", "macros", "debug-print"] } -reqwest = "0.12.4" -futures-executor = "0.3.30" -error-stack = "0.4.1" +tracing = { workspace = true } +chrono = { workspace = true } +reqwest = { workspace = true } +futures-executor = { workspace = true } +error-stack = { workspace = true } +sqlx = { workspace = true, features = ["uuid"] } library = { path = "../library" } domain = { path = "../domain" } \ No newline at end of file diff --git a/service/src/feedback.rs b/service/src/feedback.rs index c43a9ad..2b755a0 100644 --- a/service/src/feedback.rs +++ b/service/src/feedback.rs @@ -1,22 +1,18 @@ -use sea_orm::{EntityTrait, PaginatorTrait}; -use sea_orm::ActiveValue::Set; +use std::future::Future; +use sqlx::Error; use domain::dto::feedback::FeedbackAdd; use domain::entities::feedback; -use domain::entities::prelude::Feedback; +use domain::entities::feedback::Feedback; use library::db; use library::resp::pageable::Pageable; use library::resp::response::{ResOK, ResResult}; /// 获取反馈信息列表 -pub async fn get_feedback_list_by_page(page: u64, page_size: u64) -> ResResult>> { - let feedback_list = Feedback::find() - .paginate(db!(), page_size) - .fetch_page(page) - .await - .ok(); +pub async fn get_feedback_list_by_page(page: u64, page_size: u64) -> ResResult>> { + let feedback_list = Feedback::search_feedback(page, page_size, db!()).await.ok(); if feedback_list.is_none() { tracing::error!("反馈信息为空"); - return Ok(ResOK(Some(Pageable::::empty()))); + return Ok(ResOK(Some(Pageable::::empty()))); } let total = get_feedback_count().await; Ok(ResOK(Some(Pageable::new(feedback_list.unwrap(), total)))) @@ -24,28 +20,30 @@ pub async fn get_feedback_list_by_page(page: u64, page_size: u64) -> ResResult u64 { - let count = Feedback::find().count(db!()).await.ok(); + let count = Feedback::count_feedback(db!()).await.ok(); if count.is_none() { tracing::error!("反馈信息为空"); return 0; } - count.unwrap() + count.unwrap().count } /// 添加反馈信息 pub async fn add_feedback(req: FeedbackAdd) -> ResResult> { let now = chrono::Local::now().naive_local(); - let model = feedback::ActiveModel { - user_id: Set(req.user_id.unwrap()), - content: Set(req.content.unwrap()), - created_at: Set(now), + match Feedback::add_feedback(&mut Feedback{ + user_id: req.user_id.unwrap(), + content: req.content.unwrap(), ..Default::default() - }; - - if let Err(err) = Feedback::insert(model).exec(db!()).await { - tracing::error!(error = ?err, "添加反馈信息失败"); - return Err(library::resp::response::ResErr::ErrSystem(None)); + }, db!()).await { + Ok(feedback) => { + tracing::info!("添加反馈成功: {}", feedback) + } + Err(err) => { + tracing::error!(error = ?err, "添加反馈信息失败"); + return Err(library::resp::response::ResErr::ErrSystem(None)); + } } Ok(ResOK(None)) diff --git a/service/src/player_info.rs b/service/src/player_info.rs index 81d3d78..64e0f9c 100644 --- a/service/src/player_info.rs +++ b/service/src/player_info.rs @@ -1,15 +1,13 @@ +use sqlx::Error; use domain::entities::player_info; -use domain::entities::prelude::PlayerInfo; use domain::dto::player_info::PlayerInfoRegister; +use domain::entities::player_info::PlayerInfo; use library::db; use library::resp::response::ResErr::{ErrPerm, ErrSystem}; use library::resp::response::{ResOK, ResResult}; -use sea_orm::{ColumnTrait, EntityTrait, PaginatorTrait, QueryFilter, Set}; pub async fn register(req: PlayerInfoRegister) -> ResResult> { - match PlayerInfo::find() - .filter(player_info::Column::PlatformId.eq(req.platform_id.clone().unwrap())) - .count(db!()) + match PlayerInfo::find_by_platform_id(req.platform_id.clone().unwrap().as_mut_str(), db!()) .await { Err(err) => { @@ -25,19 +23,23 @@ pub async fn register(req: PlayerInfoRegister) -> ResResult> { let now = chrono::Local::now().naive_local(); - let model = player_info::ActiveModel { - username: Set(req.username.unwrap()), - email: Set(Option::from(req.email)), - platform_id: Set(req.platform_id.unwrap()), - user_type: Set(req.user_type.unwrap()), - country_code: Set(req.country_code.unwrap()), - created_at: Set(now), - ..Default::default() - }; - - if let Err(err) = PlayerInfo::insert(model).exec(db!()).await { - tracing::error!(error = ?err, "添加账号失败"); - return Err(ErrSystem(None)); + match PlayerInfo::add_player_info( + &mut PlayerInfo{ + username: req.username.unwrap(), + email: req.email.unwrap(), + platform_id: req.platform_id.unwrap(), + user_type: req.user_type.unwrap(), + country_code: req.country_code.unwrap(), + ..Default::default() + }, db!() + ).await { + Ok(player_info) => { + tracing::info!("添加账户成功: {}", player_info) + } + Err(err) => { + tracing::error!(error = ?err, "添加账号失败"); + return Err(ErrSystem(None)); + } } Ok(ResOK(None))