mirror of
https://codeberg.org/icewind/log-normalizer.git
synced 2026-06-03 13:54:11 +02:00
normalized database
This commit is contained in:
parent
05be5b1e0a
commit
d6c622fcda
8 changed files with 677 additions and 591 deletions
402
Cargo.lock
generated
402
Cargo.lock
generated
|
|
@ -50,15 +50,9 @@ checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
|
|||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.11.0"
|
||||
version = "0.12.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
|
||||
|
||||
[[package]]
|
||||
name = "base64"
|
||||
version = "0.12.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d5ca2cd0adc3f48f9e9ea5a6bbdf9ccc0bfade884847e484d452414c7ccffb3"
|
||||
checksum = "e223af0dc48c96d4f8342ec01a4974f139df863896b316681efd36742f22cc67"
|
||||
|
||||
[[package]]
|
||||
name = "bitflags"
|
||||
|
|
@ -89,9 +83,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "bumpalo"
|
||||
version = "3.2.1"
|
||||
version = "3.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "12ae9db68ad7fac5fe51304d20f016c911539251075a214f8e663babefa35187"
|
||||
checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820"
|
||||
|
||||
[[package]]
|
||||
name = "byte-tools"
|
||||
|
|
@ -113,9 +107,9 @@ checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1"
|
|||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.50"
|
||||
version = "1.0.54"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "95e28fa049fda1c330bcf9d723be7663a899c4679724b34c81e9f5a326aab8cd"
|
||||
checksum = "7bbb73db36c1246e9034e307d0fba23f9a2e251faa47ade70c1bd252220c8311"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
|
|
@ -130,7 +124,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
checksum = "80094f509cf8b5ae86a4966a39b3ff66cd7e2a3e594accec3743ff3fabeab5b2"
|
||||
dependencies = [
|
||||
"num-integer",
|
||||
"num-traits 0.2.11",
|
||||
"num-traits 0.2.12",
|
||||
"serde",
|
||||
"time",
|
||||
]
|
||||
|
|
@ -153,12 +147,13 @@ checksum = "b3a71ab494c0b5b860bdc8407ae08978052417070c2ced38573a9157ad75b8ac"
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-queue"
|
||||
version = "0.2.1"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db"
|
||||
checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"maybe-uninit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -205,9 +200,9 @@ checksum = "4358a9e11b9a09cf52383b451b49a169e8d797b68aa02301ff586d70d9661ea3"
|
|||
|
||||
[[package]]
|
||||
name = "encoding_rs"
|
||||
version = "0.8.22"
|
||||
version = "0.8.23"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cd8d03faa7fe0c1431609dfad7bbe827af30f82e1e2ae6f7ee4fca6bd764bc28"
|
||||
checksum = "e8ac63f94732332f44fe654443c46f6375d1939684c17b0afb6cb56b0456e171"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
|
@ -229,9 +224,9 @@ checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
|
|||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.6"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "foreign-types"
|
||||
|
|
@ -266,9 +261,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7"
|
|||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5c329ae8753502fb44ae4fc2b622fa2a94652c41e795143765ba0927f92ab780"
|
||||
checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
|
@ -281,9 +276,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-channel"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f0c77d04ce8edd9cb903932b608268b3fffec4163dc053b3b402bf47eac1f1a8"
|
||||
checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
|
|
@ -291,15 +286,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-core"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a"
|
||||
checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399"
|
||||
|
||||
[[package]]
|
||||
name = "futures-executor"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f674f3e1bcb15b37284a90cedf55afdba482ab061c407a9c0ebbd0f3109741ba"
|
||||
checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314"
|
||||
dependencies = [
|
||||
"futures-core",
|
||||
"futures-task",
|
||||
|
|
@ -308,27 +303,30 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "futures-io"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a638959aa96152c7a4cddf50fcb1e3fede0583b27157c26e67d6f99904090dc6"
|
||||
checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789"
|
||||
|
||||
[[package]]
|
||||
name = "futures-sink"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3466821b4bc114d95b087b850a724c6f83115e929bc88f1fa98a3304a944c8a6"
|
||||
checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc"
|
||||
|
||||
[[package]]
|
||||
name = "futures-task"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27"
|
||||
checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "futures-util"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5"
|
||||
checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
|
|
@ -336,6 +334,7 @@ dependencies = [
|
|||
"futures-sink",
|
||||
"futures-task",
|
||||
"memchr",
|
||||
"pin-project",
|
||||
"pin-utils",
|
||||
"slab",
|
||||
]
|
||||
|
|
@ -362,9 +361,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "h2"
|
||||
version = "0.2.4"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "377038bf3c89d18d6ca1431e7a5027194fbd724ca10592b9487ede5e8e144f42"
|
||||
checksum = "79b7246d7e4b979c03fa093da39cfb3617a96bbeee6310af63991668d7e843ff"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
|
|
@ -380,10 +379,19 @@ dependencies = [
|
|||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.11"
|
||||
name = "heck"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8a0d737e0f947a1864e93d33fdef4af8445a00d1ed8dc0c8ddb73139ea6abf15"
|
||||
checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
|
||||
dependencies = [
|
||||
"unicode-segmentation",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9586eedd4ce6b3c498bc3b4dd92fc9f11166aa908a914071953768066c67909"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
|
@ -433,9 +441,9 @@ checksum = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9"
|
|||
|
||||
[[package]]
|
||||
name = "hyper"
|
||||
version = "0.13.5"
|
||||
version = "0.13.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96816e1d921eca64d208a85aab4f7798455a8e34229ee5a88c935bdee1b78b14"
|
||||
checksum = "a6e7655b9594024ad0ee439f3b5a7299369dc2a3f459b47c696f9ff676f9aa1f"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"futures-channel",
|
||||
|
|
@ -447,8 +455,8 @@ dependencies = [
|
|||
"httparse",
|
||||
"itoa",
|
||||
"log",
|
||||
"net2",
|
||||
"pin-project",
|
||||
"socket2",
|
||||
"time",
|
||||
"tokio",
|
||||
"tower-service",
|
||||
|
|
@ -481,9 +489,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "1.3.2"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "076f042c5b7b98f31d205f1249267e12a6518c1481e9dae9764af19b707d2292"
|
||||
checksum = "c398b2b113b55809ceb9ee3e753fcbac793f1956663f3c36549c1346015c2afe"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
|
@ -505,9 +513,9 @@ checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
|
|||
|
||||
[[package]]
|
||||
name = "js-sys"
|
||||
version = "0.3.37"
|
||||
version = "0.3.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6a27d435371a2fa5b6d2b028a74bbdb1234f308da363226a2854ca3ff8ba7055"
|
||||
checksum = "ce10c23ad2ea25ceca0093bd3192229da4c5b3c0f2de499c1ecac0d98d452177"
|
||||
dependencies = [
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
|
@ -530,9 +538,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.69"
|
||||
version = "0.2.71"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005"
|
||||
checksum = "9457b06509d27052635f90d6466700c65095fdf75409b3fbdd903e988b886f49"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
|
|
@ -565,12 +573,24 @@ version = "0.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3516df0fb44d98fe6d6e859d224adfb7b6686447937e5b96308d6061595eed04"
|
||||
|
||||
[[package]]
|
||||
name = "maplit"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
|
||||
|
||||
[[package]]
|
||||
name = "matches"
|
||||
version = "0.1.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
|
||||
|
||||
[[package]]
|
||||
name = "maybe-uninit"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
|
||||
|
||||
[[package]]
|
||||
name = "md-5"
|
||||
version = "0.8.0"
|
||||
|
|
@ -606,9 +626,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "mio"
|
||||
version = "0.6.21"
|
||||
version = "0.6.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "302dec22bcf6bae6dfb69c647187f4b4d0fb6f535521f7bc022430ce8e12008f"
|
||||
checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"fuchsia-zircon",
|
||||
|
|
@ -623,6 +643,17 @@ dependencies = [
|
|||
"winapi 0.2.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "mio-uds"
|
||||
version = "0.6.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0"
|
||||
dependencies = [
|
||||
"iovec",
|
||||
"libc",
|
||||
"mio",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miow"
|
||||
version = "0.2.1"
|
||||
|
|
@ -655,9 +686,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "net2"
|
||||
version = "0.2.33"
|
||||
version = "0.2.34"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
|
||||
checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
|
|
@ -666,12 +697,12 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.42"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f6ea62e9d81a77cd3ee9a2a5b9b609447857f3d358704331e4ef39eb247fcba"
|
||||
checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-traits 0.2.11",
|
||||
"num-traits 0.2.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
|
@ -680,14 +711,14 @@ version = "0.1.43"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31"
|
||||
dependencies = [
|
||||
"num-traits 0.2.11",
|
||||
"num-traits 0.2.12",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.11"
|
||||
version = "0.2.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
|
||||
checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
|
@ -702,6 +733,12 @@ dependencies = [
|
|||
"libc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b631f7e854af39a1739f401cf34a8a013dfe09eac4fa4dba91e9768bd28168d"
|
||||
|
||||
[[package]]
|
||||
name = "opaque-debug"
|
||||
version = "0.2.3"
|
||||
|
|
@ -730,9 +767,9 @@ checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de"
|
|||
|
||||
[[package]]
|
||||
name = "openssl-sys"
|
||||
version = "0.9.55"
|
||||
version = "0.9.58"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7717097d810a0f2e2323f9e5d11e71608355e24828410b55b9d4f18aa5f9a5d8"
|
||||
checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cc",
|
||||
|
|
@ -749,18 +786,18 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
|
|||
|
||||
[[package]]
|
||||
name = "pin-project"
|
||||
version = "0.4.9"
|
||||
version = "0.4.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6f6a7f5eee6292c559c793430c55c00aea9d3b3d1905e855806ca4d7253426a2"
|
||||
checksum = "12e3a6cdbfe94a5e4572812a0201f8c0ed98c1c452c7b8563ce2276988ef9c17"
|
||||
dependencies = [
|
||||
"pin-project-internal",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-internal"
|
||||
version = "0.4.9"
|
||||
version = "0.4.22"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8988430ce790d8682672117bc06dda364c0be32d3abd738234f19f3240bad99a"
|
||||
checksum = "6a0ffd45cf79d88737d7cc85bfd5d2894bee1139b356e616fe85dc389c61aaf7"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -769,15 +806,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.1.4"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae"
|
||||
checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715"
|
||||
|
||||
[[package]]
|
||||
name = "pin-utils"
|
||||
version = "0.1.0-alpha.4"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587"
|
||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||
|
||||
[[package]]
|
||||
name = "pkg-config"
|
||||
|
|
@ -787,24 +824,24 @@ checksum = "05da548ad6865900e60eaba7f589cc0783590a92e940c26953ff81ddbab2d677"
|
|||
|
||||
[[package]]
|
||||
name = "ppv-lite86"
|
||||
version = "0.2.6"
|
||||
version = "0.2.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
|
||||
checksum = "237a5ed80e274dbc66f86bd59c1e25edc039660be53194b5fe0a482e0f2612ea"
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.10"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3"
|
||||
checksum = "beae6331a816b1f65d04c45b078fd8e6c93e8071771f41b8163255bbd8d7c8fa"
|
||||
dependencies = [
|
||||
"unicode-xid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.3"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
|
||||
checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
|
@ -858,9 +895,9 @@ checksum = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
|
|||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.3.7"
|
||||
version = "1.3.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6020f034922e3194c711b82a627453881bc4682166cabb07134a10c26ba7692"
|
||||
checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
|
|
@ -870,26 +907,26 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.17"
|
||||
version = "0.6.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae"
|
||||
checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8"
|
||||
|
||||
[[package]]
|
||||
name = "remove_dir_all"
|
||||
version = "0.5.2"
|
||||
version = "0.5.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
|
||||
checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7"
|
||||
dependencies = [
|
||||
"winapi 0.3.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "reqwest"
|
||||
version = "0.10.4"
|
||||
version = "0.10.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02b81e49ddec5109a9dcfc5f2a317ff53377c915e9ae9d4f2fb50914b85614e2"
|
||||
checksum = "3b82c9238b305f26f53443e3a4bc8528d64b8d0bee408ec949eb7bf5635ec680"
|
||||
dependencies = [
|
||||
"base64 0.11.0",
|
||||
"base64",
|
||||
"bytes",
|
||||
"encoding_rs",
|
||||
"futures-core",
|
||||
|
|
@ -908,7 +945,6 @@ dependencies = [
|
|||
"pin-project-lite",
|
||||
"serde",
|
||||
"serde_urlencoded",
|
||||
"time",
|
||||
"tokio",
|
||||
"tokio-tls",
|
||||
"url",
|
||||
|
|
@ -920,15 +956,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.3"
|
||||
version = "1.0.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "535622e6be132bccd223f4bb2b8ac8d53cda3c7a6394944d3b2b33fb974f9d76"
|
||||
checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
|
||||
|
||||
[[package]]
|
||||
name = "schannel"
|
||||
version = "0.1.18"
|
||||
version = "0.1.19"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "039c25b130bd8c1321ee2d7de7fde2659fa9c2744e4bb29711cfc852ea53cd19"
|
||||
checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"winapi 0.3.8",
|
||||
|
|
@ -936,9 +972,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "security-framework"
|
||||
version = "0.4.2"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "572dfa3a0785509e7a44b5b4bebcf94d41ba34e9ed9eb9df722545c3b3c4144a"
|
||||
checksum = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"core-foundation",
|
||||
|
|
@ -949,9 +985,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "security-framework-sys"
|
||||
version = "0.4.2"
|
||||
version = "0.4.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ddb15a5fec93b7021b8a9e96009c5d8d51c15673569f7c0f6b7204e5b7b404f"
|
||||
checksum = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405"
|
||||
dependencies = [
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
|
|
@ -959,18 +995,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.106"
|
||||
version = "1.0.112"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "36df6ac6412072f67cf767ebbde4133a5b2e88e76dc6187fa7104cd16f783399"
|
||||
checksum = "736aac72d1eafe8e5962d1d1c3d99b0df526015ba40915cb3c49d042e92ec243"
|
||||
dependencies = [
|
||||
"serde_derive",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "serde_derive"
|
||||
version = "1.0.106"
|
||||
version = "1.0.112"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9e549e3abf4fb8621bd1609f11dfc9f5e50320802273b12f3811a67e6716ea6c"
|
||||
checksum = "bf0343ce212ac0d3d6afd9391ac8e9c9efe06b533c8d33f660f6390cc4093f57"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -979,9 +1015,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.51"
|
||||
version = "1.0.55"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "da07b57ee2623368351e9a0488bb0b261322a15a6e0ae53e243cbdc0f4208da9"
|
||||
checksum = "ec2c5d7e739bc07a3e73381a39d61fdb5f671c60c1df26a130690665803d8226"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
|
@ -1014,9 +1050,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "sha2"
|
||||
version = "0.8.1"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0"
|
||||
checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69"
|
||||
dependencies = [
|
||||
"block-buffer",
|
||||
"digest",
|
||||
|
|
@ -1032,31 +1068,53 @@ checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
|
|||
|
||||
[[package]]
|
||||
name = "smallvec"
|
||||
version = "1.3.0"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "05720e22615919e4734f6a99ceae50d00226c3c5aca406e102ebc33298214e0a"
|
||||
checksum = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4"
|
||||
|
||||
[[package]]
|
||||
name = "socket2"
|
||||
version = "0.3.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"winapi 0.3.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlformat"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5ce64a4576e1720a2e511bf3ccdb8c0f6cfed0fc265bcbaa0bd369485e02c631"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"maplit",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx"
|
||||
version = "0.3.4"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a2c268cf2f045f3d8b6b54e50653e66c59d6770373b2b59ba29dea459e8294cf"
|
||||
checksum = "8974cacd80085fbe49e778708d660dec6fb351604dc34c3905b26efb2803b038"
|
||||
dependencies = [
|
||||
"sqlx-core",
|
||||
"sqlx-macros",
|
||||
"sqlx-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"sqlx-macros 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-core"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "673fb6f30bdc14b7812a5ae22d7cc1e8e3d1debd5384eedbdf745827e9721cf3"
|
||||
version = "0.3.5"
|
||||
dependencies = [
|
||||
"async-native-tls",
|
||||
"async-stream",
|
||||
"base64 0.12.0",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
"crossbeam-queue",
|
||||
"crossbeam-utils",
|
||||
"futures-channel",
|
||||
|
|
@ -1074,28 +1132,69 @@ dependencies = [
|
|||
"serde_json",
|
||||
"sha-1",
|
||||
"sha2",
|
||||
"sqlformat",
|
||||
"tokio",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-core"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "88ac5a436f941c42eac509471a730df5c3c58e1450e68cd39afedbd948206273"
|
||||
dependencies = [
|
||||
"async-native-tls",
|
||||
"async-stream",
|
||||
"base64",
|
||||
"bitflags",
|
||||
"byteorder",
|
||||
"chrono",
|
||||
"crossbeam-queue",
|
||||
"crossbeam-utils",
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-util",
|
||||
"hex",
|
||||
"hmac",
|
||||
"libc",
|
||||
"log",
|
||||
"md-5",
|
||||
"memchr",
|
||||
"percent-encoding",
|
||||
"rand",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"sha-1",
|
||||
"sha2",
|
||||
"sqlformat",
|
||||
"tokio",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros"
|
||||
version = "0.3.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0de981547a9e8c15336b30079ca040ca252aa91c071e05298d699981d6dec041"
|
||||
version = "0.3.5"
|
||||
dependencies = [
|
||||
"dotenv",
|
||||
"futures",
|
||||
"heck",
|
||||
"lazy_static",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"serde_json",
|
||||
"sqlx-core",
|
||||
"sqlx-core 0.3.5",
|
||||
"syn",
|
||||
"tokio",
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sqlx-macros"
|
||||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "de2ae78b783af5922d811b14665a5a3755e531c3087bb805cf24cf71f15e6780"
|
||||
replace = "sqlx-macros 0.3.5"
|
||||
|
||||
[[package]]
|
||||
name = "steamid-ng"
|
||||
version = "0.3.4"
|
||||
|
|
@ -1117,9 +1216,9 @@ checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee"
|
|||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.17"
|
||||
version = "1.0.31"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03"
|
||||
checksum = "b5304cfdf27365b7585c25d4af91b35016ed21ef88f17ced89c7093b43dba8b6"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -1154,18 +1253,18 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "thiserror"
|
||||
version = "1.0.15"
|
||||
version = "1.0.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "54b3d3d2ff68104100ab257bb6bb0cb26c901abe4bd4ba15961f3bf867924012"
|
||||
checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08"
|
||||
dependencies = [
|
||||
"thiserror-impl",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thiserror-impl"
|
||||
version = "1.0.15"
|
||||
version = "1.0.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ca972988113b7715266f91250ddb98070d033c62a011fa0fcc57434a649310dd"
|
||||
checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -1183,28 +1282,29 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "time"
|
||||
version = "0.1.42"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db8dcfca086c1143c9270ac42a2bbd8a7ee477b78ac8e45b19abfb0cbede4b6f"
|
||||
checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"redox_syscall",
|
||||
"winapi 0.3.8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tokio"
|
||||
version = "0.2.18"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "34ef16d072d2b6dc8b4a56c70f5c5ced1a37752116f8e7c1e80c659aa7cb6713"
|
||||
checksum = "d099fa27b9702bed751524694adbe393e18b36b204da91eb1cbbbbb4a5ee2d58"
|
||||
dependencies = [
|
||||
"bytes",
|
||||
"fnv",
|
||||
"futures-core",
|
||||
"iovec",
|
||||
"lazy_static",
|
||||
"libc",
|
||||
"memchr",
|
||||
"mio",
|
||||
"mio-uds",
|
||||
"num_cpus",
|
||||
"pin-project-lite",
|
||||
"slab",
|
||||
|
|
@ -1224,9 +1324,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "tokio-tls"
|
||||
version = "0.3.0"
|
||||
version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7bde02a3a5291395f59b06ec6945a3077602fac2b07eeeaf0dee2122f3619828"
|
||||
checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343"
|
||||
dependencies = [
|
||||
"native-tls",
|
||||
"tokio",
|
||||
|
|
@ -1291,6 +1391,12 @@ dependencies = [
|
|||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-segmentation"
|
||||
version = "1.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0"
|
||||
|
||||
[[package]]
|
||||
name = "unicode-xid"
|
||||
version = "0.2.0"
|
||||
|
|
@ -1310,15 +1416,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "vcpkg"
|
||||
version = "0.2.8"
|
||||
version = "0.2.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3fc439f2794e98976c88a2a2dafce96b930fe8010b0a256b3c2199a773933168"
|
||||
checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c"
|
||||
|
||||
[[package]]
|
||||
name = "version_check"
|
||||
version = "0.9.1"
|
||||
version = "0.9.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "078775d0255232fb988e6fccf26ddc9d1ac274299aaedcedce21c6f72cc533ce"
|
||||
checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed"
|
||||
|
||||
[[package]]
|
||||
name = "want"
|
||||
|
|
@ -1338,9 +1444,9 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen"
|
||||
version = "0.2.60"
|
||||
version = "0.2.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2cc57ce05287f8376e998cbddfb4c8cb43b84a7ec55cf4551d7c00eef317a47f"
|
||||
checksum = "4c2dc4aa152834bc334f506c1a06b866416a8b6697d5c9f75b9a689c8486def0"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"serde",
|
||||
|
|
@ -1350,9 +1456,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-backend"
|
||||
version = "0.2.60"
|
||||
version = "0.2.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d967d37bf6c16cca2973ca3af071d0a2523392e4a594548155d89a678f4237cd"
|
||||
checksum = "ded84f06e0ed21499f6184df0e0cb3494727b0c5da89534e0fcc55c51d812101"
|
||||
dependencies = [
|
||||
"bumpalo",
|
||||
"lazy_static",
|
||||
|
|
@ -1365,9 +1471,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-futures"
|
||||
version = "0.4.10"
|
||||
version = "0.4.13"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7add542ea1ac7fdaa9dc25e031a6af33b7d63376292bd24140c637d00d1c312a"
|
||||
checksum = "64487204d863f109eb77e8462189d111f27cb5712cc9fdb3461297a76963a2f6"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
|
|
@ -1377,9 +1483,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro"
|
||||
version = "0.2.60"
|
||||
version = "0.2.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bd151b63e1ea881bb742cd20e1d6127cef28399558f3b5d415289bc41eee3a4"
|
||||
checksum = "838e423688dac18d73e31edce74ddfac468e37b1506ad163ffaf0a46f703ffe3"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"wasm-bindgen-macro-support",
|
||||
|
|
@ -1387,9 +1493,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-macro-support"
|
||||
version = "0.2.60"
|
||||
version = "0.2.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d68a5b36eef1be7868f668632863292e37739656a80fc4b9acec7b0bd35a4931"
|
||||
checksum = "3156052d8ec77142051a533cdd686cba889537b213f948cd1d20869926e68e92"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
|
|
@ -1400,15 +1506,15 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "wasm-bindgen-shared"
|
||||
version = "0.2.60"
|
||||
version = "0.2.63"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "daf76fe7d25ac79748a37538b7daeed1c7a6867c92d3245c12c6222e4a20d639"
|
||||
checksum = "c9ba19973a58daf4db6f352eda73dc0e289493cd29fb2632eb172085b6521acd"
|
||||
|
||||
[[package]]
|
||||
name = "web-sys"
|
||||
version = "0.3.37"
|
||||
version = "0.3.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d6f51648d8c56c366144378a33290049eafdd784071077f6fe37dae64c1c4cb"
|
||||
checksum = "7b72fe77fd39e4bd3eaa4412fd299a0be6b3dfe9d2597e2f1c20beb968f41d17"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
|
|
@ -1450,9 +1556,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
|
|||
|
||||
[[package]]
|
||||
name = "winreg"
|
||||
version = "0.6.2"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9"
|
||||
checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69"
|
||||
dependencies = [
|
||||
"winapi 0.3.8",
|
||||
]
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ authors = ["Robin Appelman <robin@icewind.nl>"]
|
|||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
sqlx = { version = "0.3", default_features = false, features = ["macros", "postgres", "json", "runtime-tokio"] }
|
||||
sqlx = { version = "0.3", default_features = false, features = ["macros", "postgres", "json", "runtime-tokio", "chrono"] }
|
||||
dotenv = "0.15.0"
|
||||
main_error = "0.1.0"
|
||||
tokio = { version = "0.2.13", features = ["macros", "time"] }
|
||||
|
|
@ -15,3 +15,6 @@ serde_json = "1.0"
|
|||
chrono = { version = "0.4", features = ["serde"] }
|
||||
steamid-ng = "0.3.4"
|
||||
test-case = "1.0.0"
|
||||
|
||||
[replace]
|
||||
"sqlx-macros:0.3.5" = { path = "../sqlx/sqlx-macros" }
|
||||
240
schema.sql
240
schema.sql
|
|
@ -1,231 +1,17 @@
|
|||
CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;
|
||||
|
||||
CREATE TYPE team AS ENUM ('Blue', 'Red');
|
||||
CREATE TYPE team AS ENUM ('blue', 'red');
|
||||
|
||||
CREATE TYPE class_type AS ENUM ('scout', 'soldier', 'pyro', 'demoman', 'heavyweapons', 'engineer', 'medic', 'sniper', 'spy');
|
||||
|
||||
CREATE TYPE game_mode AS ENUM ('ultiduo', '4v4', '6v6', '7v7', '9v9', 'other');
|
||||
|
||||
CREATE TYPE map_type AS ENUM ('stopwatch', 'cp', 'koth', 'ctf', 'ultiduo', 'bball', 'other');
|
||||
|
||||
CREATE TYPE event_type AS ENUM ('charge', 'pointcap', 'medic_death', 'round_win');
|
||||
|
||||
CREATE TYPE medigun AS ENUM ('medigun', 'kritzkrieg', 'quickfix', 'vacinator');
|
||||
|
||||
CREATE TYPE weapon_id AS ENUM (
|
||||
'sniperrifle',
|
||||
'taunt_sniper',
|
||||
'sydney_sleeper',
|
||||
'the_winger',
|
||||
'hot_hand',
|
||||
'deflect_rocket',
|
||||
'scout_sword',
|
||||
'voodoo_pin',
|
||||
'degreaser',
|
||||
'shortstop',
|
||||
'robot_arm',
|
||||
'tf_pumpkin_bomb',
|
||||
'kunai',
|
||||
'wrench',
|
||||
'necro_smasher',
|
||||
'headtaker',
|
||||
'proto_syringe',
|
||||
'eternal_reward',
|
||||
'eureka_effect',
|
||||
'dragons_fury_bonus',
|
||||
'grappling_hook',
|
||||
'pep_pistol',
|
||||
'guillotine',
|
||||
'lava_axe',
|
||||
'wrangler_kill',
|
||||
'panic_attack',
|
||||
'loose_cannon',
|
||||
'thirddegree',
|
||||
'taunt_pyro',
|
||||
'iron_bomber',
|
||||
'persian_persuader',
|
||||
'amputator',
|
||||
'tf_projectile_pipe',
|
||||
'awper_hand',
|
||||
'demokatana',
|
||||
'loose_cannon_reflect',
|
||||
'obj_minisentry',
|
||||
'back_scratcher',
|
||||
'pomson',
|
||||
'the_classic',
|
||||
'sandman',
|
||||
'axtinguisher',
|
||||
'obj_sentrygun2',
|
||||
'jar',
|
||||
'samrevolver',
|
||||
'deflect_flare',
|
||||
'loch_n_load',
|
||||
'tf_projectile_rocket',
|
||||
'annihilator',
|
||||
'rocketpack_stomp',
|
||||
'ullapool_caber_explosion',
|
||||
'minigun',
|
||||
'deflect_promode',
|
||||
'liberty_launcher',
|
||||
'nessieclub',
|
||||
'quickiebomb_launcher',
|
||||
'cow_mangler',
|
||||
'wrap_assassin',
|
||||
'blackbox',
|
||||
'candy_cane',
|
||||
'rocketlauncher_directhit',
|
||||
'ai_flamethrower',
|
||||
'soda_popper',
|
||||
'frontier_justice',
|
||||
'rescue_ranger_reflect',
|
||||
'warrior_spirit',
|
||||
'widowmaker',
|
||||
'quake_rl',
|
||||
'tf_projectile_arrow',
|
||||
'sledgehammer',
|
||||
'deflect_arrow',
|
||||
'market_gardener',
|
||||
'unique_pickaxe_escape',
|
||||
'pistol_scout',
|
||||
'boston_basher',
|
||||
'spellbook_bats',
|
||||
'holymackerel',
|
||||
'club',
|
||||
'ball',
|
||||
'fireaxe',
|
||||
'backburner',
|
||||
'eviction_notice',
|
||||
'holiday_punch',
|
||||
'taunt_soldier',
|
||||
'shotgun_primary',
|
||||
'nonnonviolent_protest',
|
||||
'force_a_nature',
|
||||
'paintrain',
|
||||
'freedom_staff',
|
||||
'shotgun_hwg',
|
||||
'long_heatmaker',
|
||||
'shotgun_soldier',
|
||||
'knife',
|
||||
'batsaber',
|
||||
'mailbox',
|
||||
'compound_bow',
|
||||
'ullapool_caber',
|
||||
'ambassador',
|
||||
'player_penetration',
|
||||
'powerjack',
|
||||
'crusaders_crossbow',
|
||||
'scotland_shard',
|
||||
'wrench_jag',
|
||||
'scattergun',
|
||||
'unknown',
|
||||
'shahanshah',
|
||||
'pistol',
|
||||
'spellbook_boss',
|
||||
'smg',
|
||||
'dragons_fury',
|
||||
'revolver',
|
||||
'player',
|
||||
'the_maul',
|
||||
'skullbat',
|
||||
'ham_shank',
|
||||
'solemn_vow',
|
||||
'iron_curtain',
|
||||
'bonesaw',
|
||||
'dumpster_device',
|
||||
'bushwacka',
|
||||
'builder',
|
||||
'bread_bite',
|
||||
'southern_hospitality',
|
||||
'tribalkukri',
|
||||
'the_capper',
|
||||
'fists',
|
||||
'disciplinary_action',
|
||||
'tf_projectile_flare',
|
||||
'bleed_kill',
|
||||
'black_rose',
|
||||
'letranger',
|
||||
'tomislav',
|
||||
'atomizer',
|
||||
'back_scatter',
|
||||
'pep_brawlerblaster',
|
||||
'tf_projectile_pipe_remote',
|
||||
'battleaxe',
|
||||
'deflect_flare_detonator',
|
||||
'taunt_medic',
|
||||
'telefrag',
|
||||
'stickybomb_defender',
|
||||
'splendid_screen',
|
||||
'claidheamohmor',
|
||||
'airstrike',
|
||||
'righteous_bison',
|
||||
'gloves_running_urgently',
|
||||
'sword',
|
||||
'mantreads',
|
||||
'deflect_sticky',
|
||||
'enforcer',
|
||||
'scorch_shot',
|
||||
'pro_rifle',
|
||||
'spy_cicle',
|
||||
'bat',
|
||||
'sharp_dresser',
|
||||
'spellbook_lightning',
|
||||
'tide_turner',
|
||||
'shotgun_pyro',
|
||||
'lava_bat',
|
||||
'taunt_heavy',
|
||||
'bottle',
|
||||
'unique_pickaxe',
|
||||
'phlogistinator',
|
||||
'crossing_guard',
|
||||
'giger_counter',
|
||||
'charged_smg',
|
||||
'syringegun_medic',
|
||||
'gloves',
|
||||
'bazaar_bargain',
|
||||
'spellbook_mirv',
|
||||
'big_earner',
|
||||
'battleneedle',
|
||||
'warfan',
|
||||
'obj_sentrygun',
|
||||
'manmelter',
|
||||
'family_business',
|
||||
'reserve_shooter',
|
||||
'short_circuit',
|
||||
'flaregun',
|
||||
'spellbook_fireball',
|
||||
'world',
|
||||
'jar_milk',
|
||||
'flamethrower',
|
||||
'shooting_star',
|
||||
'trigger_hurt',
|
||||
'blutsauger',
|
||||
'taunt_spy',
|
||||
'tf_projectile_energy_ball',
|
||||
'jar_gas',
|
||||
'tf_projectile_mechanicalarmorb',
|
||||
'obj_sentrygun3',
|
||||
'diamondback',
|
||||
'shovel',
|
||||
'brass_beast',
|
||||
'loose_cannon_impact',
|
||||
'demoshield',
|
||||
'prinny_machete',
|
||||
'machina',
|
||||
'rocketlauncher_fireball',
|
||||
'sticky_resistance',
|
||||
'detonator',
|
||||
'tf_projectile_sentryrocket',
|
||||
'unarmed_combat',
|
||||
'spellbook_skeleton',
|
||||
'ubersaw',
|
||||
'maxgun',
|
||||
'robot_arm_combo_kill',
|
||||
'rescue_ranger',
|
||||
'apocofists',
|
||||
'natascha',
|
||||
'pro_smg',
|
||||
'steel_fists',
|
||||
'fryingpan',
|
||||
);
|
||||
|
||||
CREATE TABLE logs (
|
||||
id INTEGER PRIMARY KEY,
|
||||
red_score INTEGER NOT NULL,
|
||||
|
|
@ -233,6 +19,7 @@ CREATE TABLE logs (
|
|||
length INTEGER NOT NULL,
|
||||
game_mode game_mode NOT NULL,
|
||||
map TEXT NOT NULL,
|
||||
type map_type NOT NULL,
|
||||
date TIMESTAMP WITHOUT TIME ZONE NOT NULL
|
||||
);
|
||||
|
||||
|
|
@ -309,6 +96,23 @@ CREATE TABLE events_medic_death (
|
|||
CREATE INDEX events_medic_death_round_id_idx
|
||||
ON events_medic_death USING BTREE (round_id);
|
||||
|
||||
CREATE INDEX events_medic_death_steam_id_idx
|
||||
ON events_medic_death USING BTREE (steam_id);
|
||||
|
||||
CREATE TABLE events_drop (
|
||||
id SERIAL PRIMARY KEY,
|
||||
round_id INTEGER NOT NULL REFERENCES rounds(id),
|
||||
time INTEGER NOT NULL,
|
||||
team team NOT NULL,
|
||||
steam_id BIGINT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX events_drop_round_id_idx
|
||||
ON events_drop USING BTREE (round_id);
|
||||
|
||||
CREATE INDEX events_drop_steam_id_idx
|
||||
ON events_drop USING BTREE (steam_id);
|
||||
|
||||
CREATE TABLE events_round_win (
|
||||
id SERIAL PRIMARY KEY,
|
||||
round_id INTEGER NOT NULL REFERENCES rounds(id),
|
||||
|
|
@ -382,7 +186,7 @@ CREATE UNIQUE INDEX class_stats_player_id_type_idx
|
|||
CREATE TABLE player_weapon_stats (
|
||||
id SERIAL PRIMARY KEY,
|
||||
class_stat_id INTEGER NOT NULL REFERENCES class_stats(id),
|
||||
weapon weapon_id NOT NULL,
|
||||
weapon TEXT NOT NULL,
|
||||
kills INTEGER NOT NULL,
|
||||
shots INTEGER NOT NULL,
|
||||
hits INTEGER NOT NULL,
|
||||
|
|
|
|||
249
src/data.rs
249
src/data.rs
|
|
@ -1,12 +1,17 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Deserialize, Eq, PartialEq)]
|
||||
#[sqlx(rename = "team")]
|
||||
#[sqlx(rename_all = "lowercase")]
|
||||
pub enum TeamId {
|
||||
Blue,
|
||||
Red,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Deserialize, Eq, PartialEq)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
#[sqlx(rename_all = "lowercase")]
|
||||
#[sqlx(rename = "class_type")]
|
||||
pub enum Class {
|
||||
Scout,
|
||||
Soldier,
|
||||
|
|
@ -19,13 +24,20 @@ pub enum Class {
|
|||
Spy,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Deserialize, Eq, PartialEq)]
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Eq, PartialEq)]
|
||||
#[sqlx(rename = "game_mode")]
|
||||
pub enum GameMode {
|
||||
#[sqlx(rename = "ultiduo")]
|
||||
UltiDuo,
|
||||
#[sqlx(rename = "4v4")]
|
||||
Fours,
|
||||
#[sqlx(rename = "6v6")]
|
||||
Sixes,
|
||||
#[sqlx(rename = "7v7")]
|
||||
Sevens,
|
||||
#[sqlx(rename = "9v9")]
|
||||
Highlander,
|
||||
#[sqlx(rename = "other")]
|
||||
Other,
|
||||
}
|
||||
|
||||
|
|
@ -39,6 +51,7 @@ pub enum EventType {
|
|||
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Deserialize, Hash, Eq, PartialEq)]
|
||||
#[serde(rename_all = "lowercase")]
|
||||
#[sqlx(rename_all = "lowercase")]
|
||||
pub enum Medigun {
|
||||
Medigun,
|
||||
KritzKrieg,
|
||||
|
|
@ -52,221 +65,21 @@ impl Default for Medigun {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Deserialize, Hash, Eq, PartialEq)]
|
||||
// #[sqlx(rename_all = "snake_case")]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum Weapon {
|
||||
Sniperrifle,
|
||||
TauntSniper,
|
||||
SydneySleeper,
|
||||
TheWinger,
|
||||
HotHand,
|
||||
DeflectRocket,
|
||||
ScoutSword,
|
||||
VoodooPin,
|
||||
Degreaser,
|
||||
Shortstop,
|
||||
RobotArm,
|
||||
TfPumpkinBomb,
|
||||
Kunai,
|
||||
Wrench,
|
||||
NecroSmasher,
|
||||
Headtaker,
|
||||
ProtoSyringe,
|
||||
EternalReward,
|
||||
EurekaEffect,
|
||||
DragonsFuryBonus,
|
||||
GrapplingHook,
|
||||
PepPistol,
|
||||
Guillotine,
|
||||
LavaAxe,
|
||||
WranglerKill,
|
||||
PanicAttack,
|
||||
LooseCannon,
|
||||
Thirddegree,
|
||||
TauntPyro,
|
||||
IronBomber,
|
||||
PersianPersuader,
|
||||
Amputator,
|
||||
TfProjectilePipe,
|
||||
AwperHand,
|
||||
Demokatana,
|
||||
LooseCannonReflect,
|
||||
ObjMinisentry,
|
||||
BackScratcher,
|
||||
Pomson,
|
||||
TheClassic,
|
||||
Sandman,
|
||||
Axtinguisher,
|
||||
ObjSentrygun2,
|
||||
Jar,
|
||||
Samrevolver,
|
||||
DeflectFlare,
|
||||
LochNLoad,
|
||||
TfProjectileRocket,
|
||||
Annihilator,
|
||||
RocketpackStomp,
|
||||
UllapoolCaberExplosion,
|
||||
Minigun,
|
||||
DeflectPromode,
|
||||
LibertyLauncher,
|
||||
Nessieclub,
|
||||
QuickiebombLauncher,
|
||||
CowMangler,
|
||||
WrapAssassin,
|
||||
Blackbox,
|
||||
CandyCane,
|
||||
RocketlauncherDirecthit,
|
||||
AiFlamethrower,
|
||||
SodaPopper,
|
||||
FrontierJustice,
|
||||
RescueRangerReflect,
|
||||
WarriorSpirit,
|
||||
Widowmaker,
|
||||
QuakeRl,
|
||||
TfProjectileArrow,
|
||||
Sledgehammer,
|
||||
DeflectArrow,
|
||||
MarketGardener,
|
||||
UniquePickaxeEscape,
|
||||
PistolScout,
|
||||
BostonBasher,
|
||||
SpellbookBats,
|
||||
Holymackerel,
|
||||
Club,
|
||||
Ball,
|
||||
Fireaxe,
|
||||
Backburner,
|
||||
EvictionNotice,
|
||||
HolidayPunch,
|
||||
TauntSoldier,
|
||||
ShotgunPrimary,
|
||||
NonnonviolentProtest,
|
||||
ForceANature,
|
||||
Paintrain,
|
||||
FreedomStaff,
|
||||
ShotgunHwg,
|
||||
LongHeatmaker,
|
||||
ShotgunSoldier,
|
||||
Knife,
|
||||
Batsaber,
|
||||
Mailbox,
|
||||
CompoundBow,
|
||||
UllapoolCaber,
|
||||
Ambassador,
|
||||
PlayerPenetration,
|
||||
Powerjack,
|
||||
CrusadersCrossbow,
|
||||
ScotlandShard,
|
||||
WrenchJag,
|
||||
Scattergun,
|
||||
Unknown,
|
||||
Shahanshah,
|
||||
Pistol,
|
||||
SpellbookBoss,
|
||||
Smg,
|
||||
DragonsFury,
|
||||
Revolver,
|
||||
Player,
|
||||
TheMaul,
|
||||
Skullbat,
|
||||
HamShank,
|
||||
SolemnVow,
|
||||
IronCurtain,
|
||||
Bonesaw,
|
||||
DumpsterDevice,
|
||||
Bushwacka,
|
||||
Builder,
|
||||
BreadBite,
|
||||
SouthernHospitality,
|
||||
Tribalkukri,
|
||||
TheCapper,
|
||||
Fists,
|
||||
DisciplinaryAction,
|
||||
TfProjectileFlare,
|
||||
BleedKill,
|
||||
BlackRose,
|
||||
Letranger,
|
||||
Tomislav,
|
||||
Atomizer,
|
||||
BackScatter,
|
||||
PepBrawlerblaster,
|
||||
TfProjectilePipeRemote,
|
||||
Battleaxe,
|
||||
DeflectFlareDetonator,
|
||||
TauntMedic,
|
||||
Telefrag,
|
||||
StickybombDefender,
|
||||
SplendidScreen,
|
||||
Claidheamohmor,
|
||||
Airstrike,
|
||||
RighteousBison,
|
||||
GlovesRunningUrgently,
|
||||
Sword,
|
||||
Mantreads,
|
||||
DeflectSticky,
|
||||
Enforcer,
|
||||
ScorchShot,
|
||||
ProRifle,
|
||||
SpyCicle,
|
||||
Bat,
|
||||
SharpDresser,
|
||||
SpellbookLightning,
|
||||
TideTurner,
|
||||
ShotgunPyro,
|
||||
LavaBat,
|
||||
TauntHeavy,
|
||||
Bottle,
|
||||
UniquePickaxe,
|
||||
Phlogistinator,
|
||||
CrossingGuard,
|
||||
GigerCounter,
|
||||
ChargedSmg,
|
||||
SyringegunMedic,
|
||||
Gloves,
|
||||
BazaarBargain,
|
||||
SpellbookMirv,
|
||||
BigEarner,
|
||||
Battleneedle,
|
||||
Warfan,
|
||||
ObjSentrygun,
|
||||
Manmelter,
|
||||
FamilyBusiness,
|
||||
ReserveShooter,
|
||||
ShortCircuit,
|
||||
Flaregun,
|
||||
SpellbookFireball,
|
||||
World,
|
||||
JarMilk,
|
||||
Flamethrower,
|
||||
ShootingStar,
|
||||
TriggerHurt,
|
||||
Blutsauger,
|
||||
TauntSpy,
|
||||
TfProjectileEnergyBall,
|
||||
JarGas,
|
||||
TfProjectileMechanicalarmorb,
|
||||
ObjSentrygun3,
|
||||
Diamondback,
|
||||
Shovel,
|
||||
BrassBeast,
|
||||
LooseCannonImpact,
|
||||
Demoshield,
|
||||
PrinnyMachete,
|
||||
Machina,
|
||||
RocketlauncherFireball,
|
||||
StickyResistance,
|
||||
Detonator,
|
||||
TfProjectileSentryrocket,
|
||||
UnarmedCombat,
|
||||
SpellbookSkeleton,
|
||||
Ubersaw,
|
||||
Maxgun,
|
||||
RobotArmComboKill,
|
||||
RescueRanger,
|
||||
Apocofists,
|
||||
Natascha,
|
||||
ProSmg,
|
||||
SteelFists,
|
||||
Fryingpan,
|
||||
#[derive(Debug, Clone, Copy, sqlx::Type, Eq, PartialEq)]
|
||||
#[sqlx(rename_all = "lowercase")]
|
||||
#[sqlx(rename = "map_type")]
|
||||
pub enum MapType {
|
||||
Stopwatch,
|
||||
Cp,
|
||||
KOTH,
|
||||
CTF,
|
||||
UltiDuo,
|
||||
BBall,
|
||||
Other,
|
||||
}
|
||||
|
||||
impl Default for MapType {
|
||||
fn default() -> Self {
|
||||
MapType::Other
|
||||
}
|
||||
}
|
||||
|
|
|
|||
257
src/database.rs
Normal file
257
src/database.rs
Normal file
|
|
@ -0,0 +1,257 @@
|
|||
use crate::data::{Class, GameMode, MapType, Medigun, TeamId};
|
||||
use crate::normalized::NormalizedLog;
|
||||
use crate::raw::Event;
|
||||
use chrono::{DateTime, Utc};
|
||||
use sqlx::PgPool;
|
||||
use std::collections::HashMap;
|
||||
use steamid_ng::SteamID;
|
||||
|
||||
pub async fn store_log(pool: &PgPool, id: u32, log: &NormalizedLog) -> Result<(), sqlx::Error> {
|
||||
sqlx::query!(
|
||||
"INSERT INTO logs(id, red_score, blue_score, length, game_mode, map, type, date)\
|
||||
VALUES($1, $2, $3, $4, $5, $6, $7, $8)",
|
||||
id as i32,
|
||||
log.teams.red.score as i32,
|
||||
log.teams.blue.score as i32,
|
||||
log.info.total_length as i32,
|
||||
log.game_mode() as GameMode,
|
||||
log.info.map,
|
||||
log.info.map_type() as MapType,
|
||||
log.info.date() as DateTime<Utc>
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
|
||||
for (num, round) in log.rounds.iter().enumerate() {
|
||||
let round_id: i32 = sqlx::query!(
|
||||
r#"INSERT INTO rounds(
|
||||
round, log_id, length, winner, first_cap, red_score, blue_score,
|
||||
red_kills, blue_kills, red_dmg, blue_dmg, red_ubers, blue_ubers
|
||||
)
|
||||
VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
||||
RETURNING id"#,
|
||||
num as i32,
|
||||
id as i32,
|
||||
round.length as i32,
|
||||
round.winner as TeamId,
|
||||
round.first_cap as TeamId,
|
||||
round.team.red.score as i32,
|
||||
round.team.blue.score as i32,
|
||||
round.team.red.kills as i32,
|
||||
round.team.blue.kills as i32,
|
||||
round.team.red.dmg as i32,
|
||||
round.team.blue.dmg as i32,
|
||||
round.team.red.charges as i32,
|
||||
round.team.blue.charges as i32,
|
||||
)
|
||||
.fetch_one(pool)
|
||||
.await?
|
||||
.id;
|
||||
|
||||
for event in &round.events {
|
||||
match event {
|
||||
Event::PointCap { time, team, point } => {
|
||||
sqlx::query!(
|
||||
"INSERT INTO events_point_cap(round_id, time, team, point)\
|
||||
VALUES($1, $2, $3, $4)",
|
||||
round_id,
|
||||
*time as i32,
|
||||
*team as TeamId,
|
||||
*point as i32,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
Event::RoundWin { time, team } => {
|
||||
sqlx::query!(
|
||||
"INSERT INTO events_round_win(round_id, time, team)\
|
||||
VALUES($1, $2, $3)",
|
||||
round_id,
|
||||
*time as i32,
|
||||
*team as TeamId,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
Event::MedicDeath {
|
||||
time,
|
||||
team,
|
||||
steamid,
|
||||
killer,
|
||||
} => {
|
||||
sqlx::query!(
|
||||
"INSERT INTO events_medic_death(round_id, time, team, steam_id, killer)\
|
||||
VALUES($1, $2, $3, $4, $5)",
|
||||
round_id,
|
||||
*time as i32,
|
||||
*team as TeamId,
|
||||
u64::from(*steamid) as i64,
|
||||
u64::from(*killer) as i64,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
Event::Drop {
|
||||
time,
|
||||
steamid,
|
||||
team,
|
||||
} => {
|
||||
sqlx::query!(
|
||||
"INSERT INTO events_drop(round_id, time, team, steam_id)\
|
||||
VALUES($1, $2, $3, $4)",
|
||||
round_id,
|
||||
*time as i32,
|
||||
*team as TeamId,
|
||||
u64::from(*steamid) as i64,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
Event::Charge {
|
||||
medigun,
|
||||
time,
|
||||
steamid,
|
||||
team,
|
||||
} => {
|
||||
sqlx::query!(
|
||||
"INSERT INTO events_charge(round_id, time, team, medigun, steam_id)\
|
||||
VALUES($1, $2, $3, $4, $5)",
|
||||
round_id,
|
||||
*time as i32,
|
||||
*team as TeamId,
|
||||
*medigun as Medigun,
|
||||
u64::from(*steamid) as i64,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let mut heals_received: HashMap<SteamID, u32> = HashMap::new();
|
||||
for heal_map in log.heal_spread.values() {
|
||||
for (steam_id, heals) in heal_map {
|
||||
heals_received
|
||||
.entry(*steam_id)
|
||||
.and_modify(|received| *received += heals)
|
||||
.or_insert(*heals);
|
||||
}
|
||||
}
|
||||
|
||||
for (steam_id, player) in &log.players {
|
||||
let kills = log.class_kills.get(steam_id).cloned().unwrap_or_default();
|
||||
let player_id: i32 = sqlx::query!(
|
||||
"INSERT INTO players (\
|
||||
log_id, steam_id, name, kills, deaths, assists,\
|
||||
suicides, dmg, damage_taken, ubers, medigun_ubers,\
|
||||
kritzkrieg_ubers, quickfix_ubers, vacinator_ubers,\
|
||||
drops, medkits, medkits_hp, backstabs, headshots,\
|
||||
heal, heals_received,\
|
||||
scout_kills, soldier_kills, pyro_kills, demoman_kills,\
|
||||
heavy_kills, engineer_kills, medic_kills, sniper_kills, spy_kills
|
||||
)\
|
||||
VALUES(\
|
||||
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10,\
|
||||
$11, $12, $13, $14, $15, $16, $17, $18, $19, $20,\
|
||||
$21, $22, $23, $24, $25, $26, $27, $28, $29, $30\
|
||||
)\
|
||||
RETURNING id",
|
||||
id as i32,
|
||||
u64::from(*steam_id) as i64,
|
||||
log.names.get(steam_id).cloned().unwrap_or_default(),
|
||||
player.kills as i32,
|
||||
player.deaths as i32,
|
||||
player.assists as i32,
|
||||
player.suicides as i32,
|
||||
player.dmg as i32,
|
||||
player.dt_real as i32,
|
||||
player.ubers as i32,
|
||||
player
|
||||
.ubertypes
|
||||
.get(&Medigun::Medigun)
|
||||
.copied()
|
||||
.unwrap_or_default() as i32,
|
||||
player
|
||||
.ubertypes
|
||||
.get(&Medigun::KritzKrieg)
|
||||
.copied()
|
||||
.unwrap_or_default() as i32,
|
||||
player
|
||||
.ubertypes
|
||||
.get(&Medigun::QuickFix)
|
||||
.copied()
|
||||
.unwrap_or_default() as i32,
|
||||
player
|
||||
.ubertypes
|
||||
.get(&Medigun::Vacinator)
|
||||
.copied()
|
||||
.unwrap_or_default() as i32,
|
||||
player.drops as i32,
|
||||
player.medkits as i32,
|
||||
player.medkits_hp as i32,
|
||||
player.backstabs as i32,
|
||||
player.headshots as i32,
|
||||
player.heal as i32,
|
||||
heals_received.get(steam_id).copied().unwrap_or_default() as i32,
|
||||
kills.scout as i32,
|
||||
kills.soldier as i32,
|
||||
kills.pyro as i32,
|
||||
kills.demoman as i32,
|
||||
kills.heavyweapons as i32,
|
||||
kills.engineer as i32,
|
||||
kills.medic as i32,
|
||||
kills.sniper as i32,
|
||||
kills.spy as i32
|
||||
)
|
||||
.fetch_one(pool)
|
||||
.await?
|
||||
.id;
|
||||
|
||||
for class in &player.class_stats {
|
||||
let class_stat_id: i32 = sqlx::query!(
|
||||
"INSERT INTO class_stats(player_id, type, time, kills, deaths, assists, dmg)\
|
||||
VALUES($1, $2, $3, $4, $5, $6, $7)\
|
||||
RETURNING id",
|
||||
player_id,
|
||||
class.class as Class,
|
||||
class.total_time as i32,
|
||||
class.kills as i32,
|
||||
class.deaths as i32,
|
||||
class.assists as i32,
|
||||
class.dmg as i32,
|
||||
)
|
||||
.fetch_one(pool)
|
||||
.await?
|
||||
.id;
|
||||
|
||||
for (weapon, stats) in &class.weapon {
|
||||
sqlx::query!(
|
||||
"INSERT INTO player_weapon_stats(class_stat_id, weapon, kills, shots, hits, dmg)\
|
||||
VALUES($1, $2, $3, $4, $5, $6)",
|
||||
class_stat_id as i32,
|
||||
*weapon,
|
||||
stats.kills as i32,
|
||||
stats.shots as i32,
|
||||
stats.hits as i32,
|
||||
stats.dmg as i32,
|
||||
)
|
||||
.execute(pool)
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// macro_rules! insert_fields {
|
||||
// ($table:ident, {
|
||||
// $($($field:ident => $value:expr),)+
|
||||
// }) => {
|
||||
// sqlx::query!(
|
||||
// concat!("INSERT INTO ", stringify!($table), "(", stringify!$(field)) ") VALUES ()"\
|
||||
// VALUES($1, $2, $3, $4, $5)",
|
||||
// )
|
||||
// };
|
||||
// }
|
||||
22
src/main.rs
22
src/main.rs
|
|
@ -1,7 +1,23 @@
|
|||
mod data;
|
||||
mod raw;
|
||||
mod database;
|
||||
mod normalized;
|
||||
mod raw;
|
||||
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use crate::database::store_log;
|
||||
use crate::normalized::NormalizedLog;
|
||||
use main_error::MainError;
|
||||
use sqlx::PgPool;
|
||||
use std::fs;
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), MainError> {
|
||||
let database_url = dotenv::var("DATABASE_URL")?;
|
||||
|
||||
let content = fs::read_to_string("tests/data/2522305.json").unwrap();
|
||||
let parsed: NormalizedLog = serde_json::from_str(&content).unwrap();
|
||||
|
||||
let pool = PgPool::builder().max_size(2).build(&database_url).await?;
|
||||
dbg!(store_log(&pool, 2522305, &parsed).await)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
pub use crate::data::TeamId;
|
||||
use crate::data::{GameMode, MapType};
|
||||
use crate::raw::RawLog;
|
||||
pub use crate::raw::{
|
||||
ChatMessage, ClassNumbers, Event, Player, RoundPlayer, Team, Teams, Uploader,
|
||||
};
|
||||
use chrono::{DateTime, NaiveDateTime, Utc};
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
use steamid_ng::SteamID;
|
||||
|
|
@ -24,6 +26,22 @@ pub struct NormalizedLog {
|
|||
pub info: Info,
|
||||
}
|
||||
|
||||
impl NormalizedLog {
|
||||
pub fn game_mode(&self) -> GameMode {
|
||||
if self.info.map_type() == MapType::UltiDuo {
|
||||
return GameMode::UltiDuo;
|
||||
}
|
||||
|
||||
match self.players.len() {
|
||||
7..=9 => GameMode::Fours,
|
||||
11..=13 => GameMode::Sixes,
|
||||
14 => GameMode::Sevens,
|
||||
17..=19 => GameMode::Highlander,
|
||||
_ => GameMode::Other,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Info {
|
||||
pub map: String,
|
||||
|
|
@ -49,6 +67,30 @@ pub struct Info {
|
|||
pub uploader: Uploader,
|
||||
}
|
||||
|
||||
impl Info {
|
||||
pub fn map_type(&self) -> MapType {
|
||||
if map_is_stopwatch(&self.map) {
|
||||
MapType::Stopwatch
|
||||
} else if self.map.starts_with("cp") {
|
||||
MapType::Cp
|
||||
} else if self.map.starts_with("koth") {
|
||||
MapType::KOTH
|
||||
} else if self.map.starts_with("ctf") {
|
||||
MapType::CTF
|
||||
} else if self.map.starts_with("ultiduo") {
|
||||
MapType::UltiDuo
|
||||
} else if self.map.starts_with("bball") {
|
||||
MapType::BBall
|
||||
} else {
|
||||
MapType::Other
|
||||
}
|
||||
}
|
||||
|
||||
pub fn date(&self) -> DateTime<Utc> {
|
||||
DateTime::from_utc(NaiveDateTime::from_timestamp(self.date as i64, 0), Utc)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct Round {
|
||||
pub start_time: u64,
|
||||
|
|
|
|||
53
src/raw.rs
53
src/raw.rs
|
|
@ -1,4 +1,4 @@
|
|||
use crate::data::{Class, Medigun, TeamId, Weapon};
|
||||
use crate::data::{Class, Medigun, TeamId};
|
||||
use serde::export::TryFrom;
|
||||
use serde::Deserialize;
|
||||
use std::collections::HashMap;
|
||||
|
|
@ -54,6 +54,7 @@ pub struct Team {
|
|||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct Player {
|
||||
pub class_stats: Vec<ClassStat>,
|
||||
pub team: TeamId,
|
||||
pub kills: u16,
|
||||
pub deaths: u16,
|
||||
|
|
@ -106,20 +107,64 @@ pub struct ClassStat {
|
|||
#[serde(rename = "type")]
|
||||
pub class: Class,
|
||||
pub kills: u16,
|
||||
pub assists: u16,
|
||||
pub deaths: u16,
|
||||
pub dmg: u32,
|
||||
pub total_time: u32,
|
||||
pub weapon: HashMap<Weapon, WeaponStat>,
|
||||
#[serde(default)]
|
||||
pub weapon: HashMap<String, WeaponStat>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
#[serde(untagged)]
|
||||
pub enum RawWeaponStats {
|
||||
Kills(u32),
|
||||
Stats {
|
||||
kills: u32,
|
||||
dmg: u32,
|
||||
avg_dmg: f32,
|
||||
shots: u32,
|
||||
hits: u32,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
#[serde(from = "RawWeaponStats")]
|
||||
pub struct WeaponStat {
|
||||
pub kills: u32,
|
||||
pub dmg: u32,
|
||||
pub avg_dmg: u32,
|
||||
pub avg_dmg: f32,
|
||||
pub shots: u32,
|
||||
pub hits: u32,
|
||||
}
|
||||
|
||||
impl From<RawWeaponStats> for WeaponStat {
|
||||
fn from(raw: RawWeaponStats) -> Self {
|
||||
match raw {
|
||||
RawWeaponStats::Kills(kills) => WeaponStat {
|
||||
kills,
|
||||
dmg: 0,
|
||||
avg_dmg: 0.0,
|
||||
shots: 0,
|
||||
hits: 0,
|
||||
},
|
||||
RawWeaponStats::Stats {
|
||||
kills,
|
||||
dmg,
|
||||
avg_dmg,
|
||||
shots,
|
||||
hits,
|
||||
} => WeaponStat {
|
||||
kills,
|
||||
dmg,
|
||||
avg_dmg,
|
||||
shots,
|
||||
hits,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
pub struct Round {
|
||||
#[serde(default)]
|
||||
|
|
@ -187,7 +232,7 @@ impl Event {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize)]
|
||||
#[derive(Debug, Clone, Deserialize, Default)]
|
||||
pub struct ClassNumbers {
|
||||
#[serde(default)]
|
||||
pub scout: u8,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue