update
This commit is contained in:
321
Cargo.lock
generated
321
Cargo.lock
generated
@@ -13,19 +13,6 @@ dependencies = [
|
||||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"getrandom 0.3.4",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.1.4"
|
||||
@@ -94,7 +81,7 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
|
||||
|
||||
[[package]]
|
||||
name = "astracup-backend"
|
||||
version = "0.1.0"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
@@ -285,12 +272,6 @@ dependencies = [
|
||||
"syn 2.0.114",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.21.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.22.1"
|
||||
@@ -309,7 +290,7 @@ version = "0.18.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9a0f5948f30df5f43ac29d310b7476793be97c50787e6ef4a63d960a0d0be827"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"blowfish",
|
||||
"getrandom 0.3.4",
|
||||
"subtle",
|
||||
@@ -318,13 +299,16 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "bigdecimal"
|
||||
version = "0.3.1"
|
||||
version = "0.4.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6773ddc0eafc0e509fb60e48dff7f450f8e674a0686ae8605e8d9901bd5eefa"
|
||||
checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"libm",
|
||||
"num-bigint",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -523,6 +507,15 @@ dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "concurrent-queue"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "config"
|
||||
version = "0.15.19"
|
||||
@@ -725,14 +718,25 @@ dependencies = [
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derivative"
|
||||
version = "2.2.0"
|
||||
name = "derive_more"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
|
||||
checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134"
|
||||
dependencies = [
|
||||
"derive_more-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_more-impl"
|
||||
version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
"rustc_version",
|
||||
"syn 2.0.114",
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -849,9 +853,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "event-listener"
|
||||
version = "2.5.3"
|
||||
version = "5.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
|
||||
checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab"
|
||||
dependencies = [
|
||||
"concurrent-queue",
|
||||
"parking",
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fastrand"
|
||||
@@ -1106,7 +1115,7 @@ version = "0.12.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
|
||||
dependencies = [
|
||||
"ahash 0.7.8",
|
||||
"ahash",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1114,10 +1123,6 @@ name = "hashbrown"
|
||||
version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
dependencies = [
|
||||
"ahash 0.8.12",
|
||||
"allocator-api2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
@@ -1125,6 +1130,8 @@ version = "0.15.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
||||
dependencies = [
|
||||
"allocator-api2",
|
||||
"equivalent",
|
||||
"foldhash",
|
||||
]
|
||||
|
||||
@@ -1134,15 +1141,6 @@ version = "0.16.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.8.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
|
||||
dependencies = [
|
||||
"hashbrown 0.14.5",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashlink"
|
||||
version = "0.10.0"
|
||||
@@ -1158,7 +1156,7 @@ version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"bytes",
|
||||
"headers-core",
|
||||
"http",
|
||||
@@ -1181,9 +1179,6 @@ name = "heck"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
|
||||
dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "heck"
|
||||
@@ -1314,7 +1309,7 @@ version = "0.1.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
"futures-util",
|
||||
@@ -1584,7 +1579,7 @@ version = "10.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0529410abe238729a60b108898784df8984c87f6054c9c4fcacc47e4803c1ce1"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"getrandom 0.2.17",
|
||||
"js-sys",
|
||||
"pem",
|
||||
@@ -1634,11 +1629,10 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "libsqlite3-sys"
|
||||
version = "0.27.0"
|
||||
version = "0.30.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cf4e226dcd58b4be396f7bd3c20da8fdee2911400705297ba7d2d7cc2c30f716"
|
||||
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
@@ -1713,12 +1707,6 @@ version = "0.3.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "1.1.1"
|
||||
@@ -1773,16 +1761,6 @@ dependencies = [
|
||||
"tempfile",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "7.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"minimal-lexical",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nu-ansi-term"
|
||||
version = "0.50.3"
|
||||
@@ -1912,9 +1890,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ordered-float"
|
||||
version = "3.9.2"
|
||||
version = "4.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc"
|
||||
checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
@@ -1931,9 +1909,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ouroboros"
|
||||
version = "0.17.2"
|
||||
version = "0.18.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2ba07320d39dfea882faa70554b4bd342a5f273ed59ba7c1c6b4c840492c954"
|
||||
checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59"
|
||||
dependencies = [
|
||||
"aliasable",
|
||||
"ouroboros_macro",
|
||||
@@ -1942,17 +1920,23 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "ouroboros_macro"
|
||||
version = "0.17.2"
|
||||
version = "0.18.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ec4c6225c69b4ca778c0aea097321a64c421cf4577b331c61b229267edabb6f8"
|
||||
checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0"
|
||||
dependencies = [
|
||||
"heck 0.4.1",
|
||||
"proc-macro-error",
|
||||
"proc-macro2",
|
||||
"proc-macro2-diagnostics",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "parking"
|
||||
version = "2.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba"
|
||||
|
||||
[[package]]
|
||||
name = "parking_lot"
|
||||
version = "0.12.5"
|
||||
@@ -1987,12 +1971,6 @@ dependencies = [
|
||||
"subtle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "paste"
|
||||
version = "1.0.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
|
||||
|
||||
[[package]]
|
||||
name = "pathdiff"
|
||||
version = "0.2.3"
|
||||
@@ -2005,7 +1983,7 @@ version = "3.0.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"serde_core",
|
||||
]
|
||||
|
||||
@@ -2067,6 +2045,15 @@ dependencies = [
|
||||
"sha2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pgvector"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc58e2d255979a31caa7cabfa7aac654af0354220719ab7a68520ae7a91e8c0b"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.16"
|
||||
@@ -2175,30 +2162,6 @@ dependencies = [
|
||||
"toml_edit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro-error"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
||||
dependencies = [
|
||||
"proc-macro-error-attr",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 1.0.109",
|
||||
"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-error-attr2"
|
||||
version = "2.0.0"
|
||||
@@ -2230,6 +2193,19 @@ dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2-diagnostics"
|
||||
version = "0.10.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn 2.0.114",
|
||||
"version_check",
|
||||
"yansi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ptr_meta"
|
||||
version = "0.1.4"
|
||||
@@ -2465,7 +2441,7 @@ version = "0.13.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801"
|
||||
dependencies = [
|
||||
"base64 0.22.1",
|
||||
"base64",
|
||||
"bytes",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
@@ -2608,6 +2584,15 @@ version = "2.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
|
||||
dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustix"
|
||||
version = "1.1.3"
|
||||
@@ -2747,17 +2732,19 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sea-orm"
|
||||
version = "0.12.15"
|
||||
version = "1.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c8814e37dc25de54398ee62228323657520b7f29713b8e238649385dbe473ee0"
|
||||
checksum = "6d945f62558fac19e5988680d2fdf747b734c2dbc6ce2cb81ba33ed8dde5b103"
|
||||
dependencies = [
|
||||
"async-stream",
|
||||
"async-trait",
|
||||
"bigdecimal",
|
||||
"chrono",
|
||||
"futures",
|
||||
"derive_more",
|
||||
"futures-util",
|
||||
"log",
|
||||
"ouroboros",
|
||||
"pgvector",
|
||||
"rust_decimal",
|
||||
"sea-orm-macros",
|
||||
"sea-query",
|
||||
@@ -2766,7 +2753,7 @@ dependencies = [
|
||||
"serde_json",
|
||||
"sqlx",
|
||||
"strum",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tracing",
|
||||
"url",
|
||||
@@ -2775,11 +2762,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sea-orm-macros"
|
||||
version = "0.12.15"
|
||||
version = "1.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5e115c6b078e013aa963cc2d38c196c2c40b05f03d0ac872fe06b6e0d5265603"
|
||||
checksum = "84c2e64a50a9cc8339f10a27577e10062c7f995488e469f2c95762c5ee847832"
|
||||
dependencies = [
|
||||
"heck 0.4.1",
|
||||
"heck 0.5.0",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"sea-bae",
|
||||
@@ -2789,13 +2776,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sea-query"
|
||||
version = "0.30.7"
|
||||
version = "0.32.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4166a1e072292d46dc91f31617c2a1cdaf55a8be4b5c9f4bf2ba248e3ac4999b"
|
||||
checksum = "8a5d1c518eaf5eda38e5773f902b26ab6d5e9e9e2bb2349ca6c64cf96f80448c"
|
||||
dependencies = [
|
||||
"bigdecimal",
|
||||
"chrono",
|
||||
"derivative",
|
||||
"inherent",
|
||||
"ordered-float",
|
||||
"rust_decimal",
|
||||
@@ -2806,9 +2792,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sea-query-binder"
|
||||
version = "0.5.0"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36bbb68df92e820e4d5aeb17b4acd5cc8b5d18b2c36a4dd6f4626aabfa7ab1b9"
|
||||
checksum = "b0019f47430f7995af63deda77e238c17323359af241233ec768aba1faea7608"
|
||||
dependencies = [
|
||||
"bigdecimal",
|
||||
"chrono",
|
||||
@@ -3041,6 +3027,9 @@ name = "smallvec"
|
||||
version = "1.15.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
@@ -3071,21 +3060,11 @@ dependencies = [
|
||||
"der",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlformat"
|
||||
version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7bba3a93db0cc4f7bdece8bb09e77e2e785c20bfebf79eb8340ed80708048790"
|
||||
dependencies = [
|
||||
"nom",
|
||||
"unicode_categories",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c9a2ccff1a000a5a59cd33da541d9f2fdcd9e6e8229cc200565942bff36d0aaa"
|
||||
checksum = "1fefb893899429669dcdd979aff487bd78f4064e5e7907e4269081e0ef7d97dc"
|
||||
dependencies = [
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
@@ -3096,41 +3075,36 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-core"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24ba59a9342a3d9bab6c56c118be528b27c9b60e490080e9711a04dccac83ef6"
|
||||
checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6"
|
||||
dependencies = [
|
||||
"ahash 0.8.12",
|
||||
"atoi",
|
||||
"base64",
|
||||
"bigdecimal",
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"chrono",
|
||||
"crc",
|
||||
"crossbeam-queue",
|
||||
"either",
|
||||
"event-listener",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-intrusive",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"hashlink 0.8.4",
|
||||
"hex",
|
||||
"hashbrown 0.15.5",
|
||||
"hashlink",
|
||||
"indexmap",
|
||||
"log",
|
||||
"memchr",
|
||||
"native-tls",
|
||||
"once_cell",
|
||||
"paste",
|
||||
"percent-encoding",
|
||||
"rust_decimal",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha2",
|
||||
"smallvec",
|
||||
"sqlformat",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-stream",
|
||||
@@ -3141,26 +3115,26 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4ea40e2345eb2faa9e1e5e326db8c34711317d2b5e08d0d5741619048a803127"
|
||||
checksum = "a2d452988ccaacfbf5e0bdbc348fb91d7c8af5bee192173ac3636b5fb6e6715d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"sqlx-core",
|
||||
"sqlx-macros-core",
|
||||
"syn 1.0.109",
|
||||
"syn 2.0.114",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros-core"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5833ef53aaa16d860e92123292f1f6a3d53c34ba8b1969f152ef1a7bb803f3c8"
|
||||
checksum = "19a9c1841124ac5a61741f96e1d9e2ec77424bf323962dd894bdb93f37d5219b"
|
||||
dependencies = [
|
||||
"dotenvy",
|
||||
"either",
|
||||
"heck 0.4.1",
|
||||
"heck 0.5.0",
|
||||
"hex",
|
||||
"once_cell",
|
||||
"proc-macro2",
|
||||
@@ -3172,20 +3146,19 @@ dependencies = [
|
||||
"sqlx-mysql",
|
||||
"sqlx-postgres",
|
||||
"sqlx-sqlite",
|
||||
"syn 1.0.109",
|
||||
"tempfile",
|
||||
"syn 2.0.114",
|
||||
"tokio",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-mysql"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ed31390216d20e538e447a7a9b959e06ed9fc51c37b514b46eb758016ecd418"
|
||||
checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.7",
|
||||
"base64",
|
||||
"bigdecimal",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
@@ -3218,7 +3191,7 @@ dependencies = [
|
||||
"smallvec",
|
||||
"sqlx-core",
|
||||
"stringprep",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tracing",
|
||||
"uuid",
|
||||
@@ -3227,12 +3200,12 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-postgres"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c824eb80b894f926f89a0b9da0c7f435d27cdd35b8c655b114e58223918577e"
|
||||
checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"base64 0.21.7",
|
||||
"base64",
|
||||
"bigdecimal",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
@@ -3242,7 +3215,6 @@ dependencies = [
|
||||
"etcetera",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-io",
|
||||
"futures-util",
|
||||
"hex",
|
||||
"hkdf",
|
||||
@@ -3262,7 +3234,7 @@ dependencies = [
|
||||
"smallvec",
|
||||
"sqlx-core",
|
||||
"stringprep",
|
||||
"thiserror 1.0.69",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tracing",
|
||||
"uuid",
|
||||
@@ -3271,9 +3243,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-sqlite"
|
||||
version = "0.7.4"
|
||||
version = "0.8.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b244ef0a8414da0bed4bb1910426e890b19e5e9bccc27ada6b797d05c55ae0aa"
|
||||
checksum = "c2d12fe70b2c1b4401038055f90f151b78208de1f9f89a7dbfd41587a10c3eea"
|
||||
dependencies = [
|
||||
"atoi",
|
||||
"chrono",
|
||||
@@ -3287,11 +3259,12 @@ dependencies = [
|
||||
"log",
|
||||
"percent-encoding",
|
||||
"serde",
|
||||
"serde_urlencoded",
|
||||
"sqlx-core",
|
||||
"thiserror 2.0.18",
|
||||
"time",
|
||||
"tracing",
|
||||
"url",
|
||||
"urlencoding",
|
||||
"uuid",
|
||||
]
|
||||
|
||||
@@ -3326,9 +3299,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "strum"
|
||||
version = "0.25.0"
|
||||
version = "0.26.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
|
||||
checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06"
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
@@ -3815,12 +3788,6 @@ version = "0.2.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||
|
||||
[[package]]
|
||||
name = "unicode_categories"
|
||||
version = "0.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
|
||||
|
||||
[[package]]
|
||||
name = "untrusted"
|
||||
version = "0.9.0"
|
||||
@@ -3839,12 +3806,6 @@ dependencies = [
|
||||
"serde",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "urlencoding"
|
||||
version = "2.1.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da"
|
||||
|
||||
[[package]]
|
||||
name = "utf8_iter"
|
||||
version = "1.0.4"
|
||||
@@ -4579,9 +4540,15 @@ checksum = "2462ea039c445496d8793d052e13787f2b90e750b833afee748e601c17621ed9"
|
||||
dependencies = [
|
||||
"arraydeque",
|
||||
"encoding_rs",
|
||||
"hashlink 0.10.0",
|
||||
"hashlink",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "yansi"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049"
|
||||
|
||||
[[package]]
|
||||
name = "yoke"
|
||||
version = "0.8.1"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "astracup-backend"
|
||||
version = "0.1.0"
|
||||
version = "0.0.1"
|
||||
edition = "2024"
|
||||
authors = ["AstraCup Team"]
|
||||
description = "AstraCup tournament management backend"
|
||||
@@ -15,8 +15,8 @@ tower = "0.5.3"
|
||||
tower-http = { version = "0.6.8", features = ["cors", "trace"] }
|
||||
|
||||
# Database
|
||||
sea-orm = { version = "0.12", features = ["sqlx-mysql", "runtime-tokio-native-tls", "macros"] }
|
||||
sqlx = { version = "0.7", features = ["mysql", "runtime-tokio-native-tls"] }
|
||||
sea-orm = { version = "1.1.19", features = ["sqlx-mysql", "runtime-tokio-native-tls", "macros"] }
|
||||
sqlx = { version = "0.8.6", features = ["mysql", "runtime-tokio-native-tls"] }
|
||||
dotenv = "0.15"
|
||||
|
||||
# Serialization
|
||||
@@ -46,7 +46,7 @@ validator = { version = "0.20", features = ["derive"] }
|
||||
|
||||
# Utilities
|
||||
chrono = { version = "0.4", features = ["serde"] }
|
||||
uuid = { version = "1.0", features = ["v4", "serde"] }
|
||||
uuid = { version = "1.20", features = ["v4", "serde"] }
|
||||
futures = "0.3"
|
||||
axum-extra = { version = "0.12.5", features = ["typed-header"] }
|
||||
|
||||
|
||||
@@ -70,6 +70,31 @@ impl MigrationTrait for Migration {
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// 房间类型
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(RoomType::Table)
|
||||
.values([RoomType::SoloRoom, RoomType::TeamRoom])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// 图池模式类型
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(BeatmapModeType::Table)
|
||||
.values([
|
||||
BeatmapModeType::Osu,
|
||||
BeatmapModeType::Taiko,
|
||||
BeatmapModeType::Catch,
|
||||
BeatmapModeType::Mania,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// table creation
|
||||
|
||||
/// user table
|
||||
@@ -181,9 +206,227 @@ impl MigrationTrait for Migration {
|
||||
.custom(MatchState::Table)
|
||||
.not_null()
|
||||
.default(MatchState::Waiting),
|
||||
),
|
||||
)
|
||||
.col(ColumnDef::new(Schedule::CreatedAt).timestamp().null())
|
||||
.col(ColumnDef::new(Schedule::UpdatedAt).timestamp().null())
|
||||
.to_owned(),
|
||||
)
|
||||
.await
|
||||
.await?;
|
||||
|
||||
/// room table
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(Room::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(Room::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Room::Name).string().not_null())
|
||||
.col(
|
||||
ColumnDef::new(Room::Type)
|
||||
.custom(RoomType::Table)
|
||||
.not_null()
|
||||
.default(RoomType::SoloRoom),
|
||||
)
|
||||
.col(ColumnDef::new(RoomSolo::RoomSoloId).integer().null())
|
||||
.col(ColumnDef::new(RoomTeam::RoomTeamId).integer().null())
|
||||
.col(ColumnDef::new(Room::RedScore).integer().null().default(0))
|
||||
.col(ColumnDef::new(Room::BlueScore).integer().null().default(0))
|
||||
.col(ColumnDef::new(Room::CreatedAt).timestamp().null())
|
||||
.col(ColumnDef::new(Room::UpdatedAt).timestamp().null())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// room for solo
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(RoomSolo::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(RoomSolo::RoomSoloId)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(RoomSolo::RedPlayerId).integer().not_null())
|
||||
.col(ColumnDef::new(RoomSolo::BluePlayerId).integer().not_null())
|
||||
.col(ColumnDef::new(RoomSolo::CreatedAt).timestamp().null())
|
||||
.col(ColumnDef::new(RoomSolo::UpdatedAt).timestamp().null())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// room for team
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(RoomTeam::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(RoomTeam::RoomTeamId)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(RoomTeam::RedTeamId).integer().not_null())
|
||||
.col(ColumnDef::new(RoomTeam::BlueTeamId).integer().not_null())
|
||||
.col(ColumnDef::new(RoomTeam::CreatedAt).timestamp().null())
|
||||
.col(ColumnDef::new(RoomTeam::UpdatedAt).timestamp().null()),
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// beatmap table
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(Beatmap::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Sid)
|
||||
.integer()
|
||||
.not_null()
|
||||
.unique_key(),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Bid)
|
||||
.integer()
|
||||
.not_null()
|
||||
.unique_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Beatmap::Title).string().null())
|
||||
.col(ColumnDef::new(Beatmap::TitleUnicode).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Artist).string().null())
|
||||
.col(ColumnDef::new(Beatmap::ArtistUnicode).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Creator).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Version).string().null())
|
||||
.col(ColumnDef::new(Beatmap::CoverUrl).string().null())
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::DifficultyStar)
|
||||
.float()
|
||||
.null()
|
||||
.default(0.0),
|
||||
)
|
||||
.col(ColumnDef::new(Beatmap::Ar).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Od).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Cs).string().null())
|
||||
.col(ColumnDef::new(Beatmap::Hp).string().null())
|
||||
.col(ColumnDef::new(Beatmap::TotalLength).integer().null())
|
||||
.col(ColumnDef::new(Beatmap::MaxCombo).integer().null())
|
||||
.col(ColumnDef::new(Beatmap::Bpm).float().null().default(0.0))
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Mode)
|
||||
.custom(BeatmapModeType::Table)
|
||||
.not_null()
|
||||
.default(BeatmapModeType::Osu),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Mod)
|
||||
.json()
|
||||
.null()
|
||||
.default(Json::default([])),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::SelectMod)
|
||||
.string()
|
||||
.not_null()
|
||||
.default("NM"),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::SelectModSlot)
|
||||
.integer()
|
||||
.not_null()
|
||||
.default(1),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Approved)
|
||||
.boolean()
|
||||
.null()
|
||||
.default(false),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::NeedTest)
|
||||
.boolean()
|
||||
.null()
|
||||
.default(false),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Deleted)
|
||||
.boolean()
|
||||
.null()
|
||||
.default(false),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::IsCustom)
|
||||
.boolean()
|
||||
.null()
|
||||
.default(false),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::IsOriginal)
|
||||
.boolean()
|
||||
.null()
|
||||
.default(false),
|
||||
)
|
||||
.col(ColumnDef::new(Beatmap::Season).integer().null().default(1))
|
||||
.col(
|
||||
ColumnDef::new(Beatmap::Category)
|
||||
.custom(Category::Table)
|
||||
.null()
|
||||
.default(Category::Qua),
|
||||
)
|
||||
.col(ColumnDef::new(Beatmap::CreatedAt).timestamp().null())
|
||||
.col(ColumnDef::new(Beatmap::UpdatedAt).timestamp().null())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
/// beatmap comment table
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(BeatmapComment::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(BeatmapComment::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Beatmap::Id).integer().not_null())
|
||||
.col(ColumnDef::new(User::Id).integer().not_null())
|
||||
.col(ColumnDef::new(BeatmapComment::Content).string().not_null())
|
||||
.col(
|
||||
ColumnDef::new(BeatmapComment::CreatedAt)
|
||||
.timestamp()
|
||||
.not_null()
|
||||
.default(Expr::current_timestamp()),
|
||||
)
|
||||
.col(
|
||||
ColumnDef::new(BeatmapComment::UpdatedAt)
|
||||
.timestamp()
|
||||
.not_null()
|
||||
.default(Expr::current_timestamp()),
|
||||
)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
|
||||
@@ -1,734 +0,0 @@
|
||||
use sea_orm_migration::prelude::*;
|
||||
|
||||
#[derive(DeriveMigrationName)]
|
||||
pub struct Migration;
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl MigrationTrait for Migration {
|
||||
async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
// 创建枚举类型
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(BeatmapSelectMod::Table)
|
||||
.values([
|
||||
BeatmapSelectMod::Nm,
|
||||
BeatmapSelectMod::Hd,
|
||||
BeatmapSelectMod::Hr,
|
||||
BeatmapSelectMod::Dt,
|
||||
BeatmapSelectMod::Lz,
|
||||
BeatmapSelectMod::Tb,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(MultiplayerRoomType::Table)
|
||||
.values([
|
||||
MultiplayerRoomType::Solo,
|
||||
MultiplayerRoomType::TeamVs,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(TeamColor::Table)
|
||||
.values([
|
||||
TeamColor::BlueTeam,
|
||||
TeamColor::RedTeam,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(TeamState::Table)
|
||||
.values([
|
||||
TeamState::Active,
|
||||
TeamState::Unapproved,
|
||||
TeamState::Approved,
|
||||
TeamState::Banned,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(UserState::Table)
|
||||
.values([
|
||||
UserState::Active,
|
||||
UserState::Registered,
|
||||
UserState::Abandoned,
|
||||
UserState::Banned,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(UserGroupType::Table)
|
||||
.values([
|
||||
UserGroupType::Host,
|
||||
UserGroupType::Admin,
|
||||
UserGroupType::Pooler,
|
||||
UserGroupType::Streamer,
|
||||
UserGroupType::Tester,
|
||||
UserGroupType::Gfx,
|
||||
UserGroupType::Sheeter,
|
||||
UserGroupType::Commentator,
|
||||
UserGroupType::Mapper,
|
||||
UserGroupType::Referee,
|
||||
UserGroupType::Player,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(Season::Table)
|
||||
.values([
|
||||
Season::S1,
|
||||
Season::S2,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_type(
|
||||
Type::create()
|
||||
.as_enum(Category::Table)
|
||||
.values([
|
||||
Category::Qua,
|
||||
Category::Ro16,
|
||||
Category::Qf,
|
||||
Category::Sf,
|
||||
Category::F,
|
||||
Category::Gf,
|
||||
])
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建用户表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(User::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(User::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(User::UserState).custom(UserState::Table).not_null().default("ACTIVE"))
|
||||
.col(ColumnDef::new(User::Osuid).integer().not_null().unique_key())
|
||||
.col(ColumnDef::new(User::Username).string().not_null().unique_key())
|
||||
.col(ColumnDef::new(User::AvatarUrl).string().null())
|
||||
.col(ColumnDef::new(User::CoverUrl).string().null())
|
||||
.col(ColumnDef::new(User::CountryCode).string().not_null())
|
||||
.col(ColumnDef::new(User::Pp).double().not_null().default(0.0))
|
||||
.col(ColumnDef::new(User::GlobalRank).integer().not_null().default(0))
|
||||
.col(ColumnDef::new(User::CountryRank).integer().not_null().default(0))
|
||||
.col(ColumnDef::new(User::Approved).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(User::Seed).integer().not_null().default(0))
|
||||
.col(ColumnDef::new(User::Seasonal).custom(Season::Table).not_null().default("S1"))
|
||||
.col(ColumnDef::new(User::CreatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.col(ColumnDef::new(User::UpdatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建队伍表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(Team::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(Team::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Team::Name).string().not_null())
|
||||
.col(ColumnDef::new(Team::BannerUrl).string().not_null())
|
||||
.col(ColumnDef::new(Team::TeamColor).custom(TeamColor::Table).not_null())
|
||||
.col(ColumnDef::new(Team::TeamState).custom(TeamState::Table).not_null().default("ACTIVE"))
|
||||
.col(ColumnDef::new(Team::CreatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.col(ColumnDef::new(Team::UpdatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建比赛配置表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(TournamentConfig::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(TournamentConfig::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(TournamentConfig::TournamentName).string().not_null().default("AstarCup"))
|
||||
.col(ColumnDef::new(TournamentConfig::MaxPpForRegistration).double().not_null().default(0.0))
|
||||
.col(ColumnDef::new(TournamentConfig::MinPpForRegistration).double().not_null().default(0.0))
|
||||
.col(ColumnDef::new(TournamentConfig::CurrentSeasonal).custom(Season::Table).not_null().default("S1"))
|
||||
.col(ColumnDef::new(TournamentConfig::CurrentCategory).custom(Category::Table).not_null().default("QUA"))
|
||||
.col(ColumnDef::new(TournamentConfig::CanRegister).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(TournamentConfig::CreatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.col(ColumnDef::new(TournamentConfig::UpdatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建多人游戏房间表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(MultiplayerRoom::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(MultiplayerRoom::RoomId)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(MultiplayerRoom::Type).custom(MultiplayerRoomType::Table).not_null().default("SOLO"))
|
||||
.col(ColumnDef::new(MultiplayerRoom::Season).custom(Season::Table).not_null().default("S1"))
|
||||
.col(ColumnDef::new(MultiplayerRoom::Category).custom(Category::Table).not_null().default("QUA"))
|
||||
.col(ColumnDef::new(MultiplayerRoom::MultiplayerSoloRoomRoomId).integer().null())
|
||||
.col(ColumnDef::new(MultiplayerRoom::MultiplayerTeamvsRoomRoomId).integer().null())
|
||||
.col(ColumnDef::new(MultiplayerRoom::ScoreRed).integer().not_null().default(0))
|
||||
.col(ColumnDef::new(MultiplayerRoom::ScoreBlue).integer().not_null().default(0))
|
||||
.col(ColumnDef::new(MultiplayerRoom::StartTime).timestamp().not_null())
|
||||
.col(ColumnDef::new(MultiplayerRoom::EndTime).timestamp().not_null())
|
||||
.col(ColumnDef::new(MultiplayerRoom::CreatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.col(ColumnDef::new(MultiplayerRoom::UpdatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建单人游戏房间表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(MultiplayerSoloRoom::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(MultiplayerSoloRoom::RoomId)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(MultiplayerSoloRoom::PlayerRedId).integer().not_null().unique_key())
|
||||
.col(ColumnDef::new(MultiplayerSoloRoom::PlayerBlueId).integer().not_null().unique_key())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建团队对战房间表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(MultiplayerTeamvsRoom::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(MultiplayerTeamvsRoom::RoomId)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(MultiplayerTeamvsRoom::TeamRedId).integer().not_null().unique_key())
|
||||
.col(ColumnDef::new(MultiplayerTeamvsRoom::TeamBlueId).integer().not_null().unique_key())
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建消息表
|
||||
manager
|
||||
.create_table(
|
||||
Table::create()
|
||||
.table(Message::Table)
|
||||
.if_not_exists()
|
||||
.col(
|
||||
ColumnDef::new(Message::Id)
|
||||
.integer()
|
||||
.not_null()
|
||||
.auto_increment()
|
||||
.primary_key(),
|
||||
)
|
||||
.col(ColumnDef::new(Message::Title).string().not_null())
|
||||
.col(ColumnDef::new(Message::Content).text().not_null())
|
||||
.col(ColumnDef::new(Message::SenderId).integer().not_null())
|
||||
.col(ColumnDef::new(Message::ReceiverId).integer().not_null())
|
||||
.col(ColumnDef::new(Message::RoomId).integer().null())
|
||||
.col(ColumnDef::new(Message::IsRead).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(Message::IsDeleted).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(Message::IsSystemMessage).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(Message::IsAccepted).boolean().not_null().default(false))
|
||||
.col(ColumnDef::new(Message::CreatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.col(ColumnDef::new(Message::UpdatedAt).timestamp().not_null().default(Expr::current_timestamp()))
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 创建外键约束
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_room_solo_room")
|
||||
.from(MultiplayerRoom::Table, MultiplayerRoom::MultiplayerSoloRoomRoomId)
|
||||
.to(MultiplayerSoloRoom::Table, MultiplayerSoloRoom::RoomId)
|
||||
.on_delete(ForeignKeyAction::SetNull)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_room_teamvs_room")
|
||||
.from(MultiplayerRoom::Table, MultiplayerRoom::MultiplayerTeamvsRoomRoomId)
|
||||
.to(MultiplayerTeamvsRoom::Table, MultiplayerTeamvsRoom::RoomId)
|
||||
.on_delete(ForeignKeyAction::SetNull)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_solo_room_player_red")
|
||||
.from(MultiplayerSoloRoom::Table, MultiplayerSoloRoom::PlayerRedId)
|
||||
.to(User::Table, User::Osuid)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_solo_room_player_blue")
|
||||
.from(MultiplayerSoloRoom::Table, MultiplayerSoloRoom::PlayerBlueId)
|
||||
.to(User::Table, User::Osuid)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_teamvs_room_team_red")
|
||||
.from(MultiplayerTeamvsRoom::Table, MultiplayerTeamvsRoom::TeamRedId)
|
||||
.to(Team::Table, Team::Id)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_multiplayer_teamvs_room_team_blue")
|
||||
.from(MultiplayerTeamvsRoom::Table, MultiplayerTeamvsRoom::TeamBlueId)
|
||||
.to(Team::Table, Team::Id)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_message_sender")
|
||||
.from(Message::Table, Message::SenderId)
|
||||
.to(User::Table, User::Osuid)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_message_receiver")
|
||||
.from(Message::Table, Message::ReceiverId)
|
||||
.to(User::Table, User::Osuid)
|
||||
.on_delete(ForeignKeyAction::Restrict)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.create_foreign_key(
|
||||
ForeignKey::create()
|
||||
.name("fk_message_room")
|
||||
.from(Message::Table, Message::RoomId)
|
||||
.to(MultiplayerRoom::Table, MultiplayerRoom::RoomId)
|
||||
.on_delete(ForeignKeyAction::SetNull)
|
||||
.on_update(ForeignKeyAction::Cascade)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> {
|
||||
// 删除外键约束
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_message_room")
|
||||
.table(Message::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_message_receiver")
|
||||
.table(Message::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_message_sender")
|
||||
.table(Message::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_teamvs_room_team_blue")
|
||||
.table(MultiplayerTeamvsRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_teamvs_room_team_red")
|
||||
.table(MultiplayerTeamvsRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_solo_room_player_blue")
|
||||
.table(MultiplayerSoloRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_solo_room_player_red")
|
||||
.table(MultiplayerSoloRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_room_teamvs_room")
|
||||
.table(MultiplayerRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_foreign_key(
|
||||
ForeignKey::drop()
|
||||
.name("fk_multiplayer_room_solo_room")
|
||||
.table(MultiplayerRoom::Table)
|
||||
.to_owned(),
|
||||
)
|
||||
.await?;
|
||||
|
||||
// 删除表
|
||||
manager
|
||||
.drop_table(Table::drop().table(Message::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(MultiplayerTeamvsRoom::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(MultiplayerSoloRoom::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(MultiplayerRoom::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(TournamentConfig::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(Team::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_table(Table::drop().table(User::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
// 删除枚举类型
|
||||
manager
|
||||
.drop_type(Type::drop().name(Category::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(Season::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(UserGroupType::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(UserState::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(TeamState::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(TeamColor::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(MultiplayerRoomType::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
manager
|
||||
.drop_type(Type::drop().name(BeatmapSelectMod::Table).to_owned())
|
||||
.await?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
// 定义表名枚举
|
||||
#[derive(Iden)]
|
||||
enum User {
|
||||
Table,
|
||||
Id,
|
||||
UserState,
|
||||
Osuid,
|
||||
Username,
|
||||
AvatarUrl,
|
||||
CoverUrl,
|
||||
CountryCode,
|
||||
Pp,
|
||||
GlobalRank,
|
||||
CountryRank,
|
||||
Approved,
|
||||
Seed,
|
||||
Seasonal,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum Team {
|
||||
Table,
|
||||
Id,
|
||||
Name,
|
||||
BannerUrl,
|
||||
TeamColor,
|
||||
TeamState,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum TournamentConfig {
|
||||
Table,
|
||||
Id,
|
||||
TournamentName,
|
||||
MaxPpForRegistration,
|
||||
MinPpForRegistration,
|
||||
CurrentSeasonal,
|
||||
CurrentCategory,
|
||||
CanRegister,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum MultiplayerRoom {
|
||||
Table,
|
||||
RoomId,
|
||||
Type,
|
||||
Season,
|
||||
Category,
|
||||
MultiplayerSoloRoomRoomId,
|
||||
MultiplayerTeamvsRoomRoomId,
|
||||
ScoreRed,
|
||||
ScoreBlue,
|
||||
StartTime,
|
||||
EndTime,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum MultiplayerSoloRoom {
|
||||
Table,
|
||||
RoomId,
|
||||
PlayerRedId,
|
||||
PlayerBlueId,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum MultiplayerTeamvsRoom {
|
||||
Table,
|
||||
RoomId,
|
||||
TeamRedId,
|
||||
TeamBlueId,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum Message {
|
||||
Table,
|
||||
Id,
|
||||
Title,
|
||||
Content,
|
||||
SenderId,
|
||||
ReceiverId,
|
||||
RoomId,
|
||||
IsRead,
|
||||
IsDeleted,
|
||||
IsSystemMessage,
|
||||
IsAccepted,
|
||||
CreatedAt,
|
||||
UpdatedAt,
|
||||
}
|
||||
|
||||
// 定义枚举类型名
|
||||
#[derive(Iden)]
|
||||
enum BeatmapSelectMod {
|
||||
Table,
|
||||
Nm,
|
||||
Hd,
|
||||
Hr,
|
||||
Dt,
|
||||
Lz,
|
||||
Tb,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum MultiplayerRoomType {
|
||||
Table,
|
||||
Solo,
|
||||
TeamVs,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum TeamColor {
|
||||
Table,
|
||||
BlueTeam,
|
||||
RedTeam,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum TeamState {
|
||||
Table,
|
||||
Active,
|
||||
Unapproved,
|
||||
Approved,
|
||||
Banned,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum UserState {
|
||||
Table,
|
||||
Active,
|
||||
Registered,
|
||||
Abandoned,
|
||||
Banned,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum UserGroupType {
|
||||
Table,
|
||||
Host,
|
||||
Admin,
|
||||
Pooler,
|
||||
Streamer,
|
||||
Tester,
|
||||
Gfx,
|
||||
Sheeter,
|
||||
Commentator,
|
||||
Mapper,
|
||||
Referee,
|
||||
Player,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum Season {
|
||||
Table,
|
||||
S1,
|
||||
S2,
|
||||
}
|
||||
|
||||
#[derive(Iden)]
|
||||
enum Category {
|
||||
Table,
|
||||
Qua,
|
||||
Ro16,
|
||||
Qf,
|
||||
Sf,
|
||||
F,
|
||||
Gf,
|
||||
}
|
||||
Reference in New Issue
Block a user