[INFO] cloning repository https://github.com/Wysten-Hgg/RainbowAI
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Wysten-Hgg/RainbowAI" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWysten-Hgg%2FRainbowAI", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWysten-Hgg%2FRainbowAI'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5fa2d89e5fa9657701ef485fe296bf221fe8c390
[INFO] checking Wysten-Hgg/RainbowAI against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWysten-Hgg%2FRainbowAI" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Wysten-Hgg/RainbowAI
[INFO] finished tweaking git repo https://github.com/Wysten-Hgg/RainbowAI
[INFO] tweaked toml for git repo https://github.com/Wysten-Hgg/RainbowAI written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Wysten-Hgg/RainbowAI on toolchain 779e19d8baa3e3625bd4fc5c85cbb2ad47b43155
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Wysten-Hgg/RainbowAI already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded blowfish v0.8.0
[INFO] [stderr]   Downloaded bcrypt v0.10.1
[INFO] [stderr]   Downloaded cordyceps v0.3.3
[INFO] [stderr]   Downloaded generator v0.8.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 59125abd0af6c03e1f9c4e6ca1dc693bbf635528f07d624c6fe09cb23b28705d
[INFO] running `Command { std: "docker" "start" "-a" "59125abd0af6c03e1f9c4e6ca1dc693bbf635528f07d624c6fe09cb23b28705d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "59125abd0af6c03e1f9c4e6ca1dc693bbf635528f07d624c6fe09cb23b28705d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59125abd0af6c03e1f9c4e6ca1dc693bbf635528f07d624c6fe09cb23b28705d", kill_on_drop: false }`
[INFO] [stdout] 59125abd0af6c03e1f9c4e6ca1dc693bbf635528f07d624c6fe09cb23b28705d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+779e19d8baa3e3625bd4fc5c85cbb2ad47b43155" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 577ba5474db28103a4f8deb9ba9182ac697ab75469ee9e13a644a6dc59c64b50
[INFO] running `Command { std: "docker" "start" "-a" "577ba5474db28103a4f8deb9ba9182ac697ab75469ee9e13a644a6dc59c64b50", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling syn v2.0.100
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking subtle v2.6.1
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling dirs-sys-next v0.1.2
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling crunchy v0.2.3
[INFO] [stderr]    Compiling dirs-next v2.0.0
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling tiny-keccak v2.0.2
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]    Compiling heapless v0.7.17
[INFO] [stderr]    Compiling term v0.7.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling precomputed-hash v0.1.1
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling fixedbitset v0.4.2
[INFO] [stderr]    Compiling bit-vec v0.6.3
[INFO] [stderr]     Checking tinyvec v1.9.0
[INFO] [stderr]    Compiling bit-set v0.5.3
[INFO] [stderr]    Compiling petgraph v0.6.5
[INFO] [stderr]    Compiling string_cache v0.8.9
[INFO] [stderr]    Compiling itertools v0.11.0
[INFO] [stderr]    Compiling ena v0.14.3
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]    Compiling ascii-canvas v3.0.0
[INFO] [stderr]     Checking getrandom v0.3.2
[INFO] [stderr]     Checking hash32 v0.2.1
[INFO] [stderr]    Compiling psm v0.1.25
[INFO] [stderr]    Compiling pico-args v0.5.0
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]     Checking unicode-normalization v0.1.24
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]    Compiling stacker v0.1.20
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking rstar v0.11.0
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling regex v1.11.1
[INFO] [stderr]    Compiling lalrpop-util v0.20.2
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling lalrpop v0.20.2
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking robust v1.1.0
[INFO] [stderr]     Checking arbitrary v1.4.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking rustc_lexer v0.1.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking earcutr v0.4.3
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking tokio v1.44.2
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling serde_with_macros v3.12.0
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]    Compiling miette-derive v5.10.0
[INFO] [stderr]     Checking icu_locid_transform v1.5.0
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking icu_properties v1.5.1
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking geographiclib-rs v0.2.4
[INFO] [stderr]    Compiling ring v0.16.20
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking miette v5.10.0
[INFO] [stderr]    Compiling rust_decimal v1.37.1
[INFO] [stderr]     Checking bitflags v2.9.0
[INFO] [stderr]     Checking float_next_after v1.0.0
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]    Compiling ref-cast v1.0.24
[INFO] [stderr]     Checking futures-lite v2.6.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling snafu-derive v0.7.5
[INFO] [stderr]     Checking unicode-security v0.1.2
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling ref-cast-impl v1.0.24
[INFO] [stderr]     Checking tokio-util v0.7.14
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tokio-rustls v0.24.1
[INFO] [stderr]     Checking openssl-sys v0.9.107
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking bytemuck v1.22.0
[INFO] [stderr]     Checking geo-types v0.7.16
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking chrono v0.4.40
[INFO] [stderr]    Compiling rustversion v1.0.20
[INFO] [stderr]    Compiling fst v0.4.7
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]    Compiling snap v1.1.1
[INFO] [stderr]     Checking geo v0.26.0
[INFO] [stderr]     Checking snafu v0.7.5
[INFO] [stderr]     Checking roaring v0.10.12
[INFO] [stderr]     Checking h2 v0.3.26
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking openssl v0.10.72
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking uuid v1.16.0
[INFO] [stderr]     Checking serde_with v3.12.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]    Compiling revision-derive v0.7.0
[INFO] [stderr]     Checking rand v0.9.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking spade v2.13.1
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking salsa20 v0.10.2
[INFO] [stderr]     Checking pem v2.0.1
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking nibble_vec v0.1.0
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking cordyceps v0.3.3
[INFO] [stderr]     Checking webpki-roots v0.25.4
[INFO] [stderr]     Checking psl-types v2.0.11
[INFO] [stderr]     Checking trice v0.4.0
[INFO] [stderr]     Checking endian-type v0.1.2
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking diatomic-waker v0.2.3
[INFO] [stderr]     Checking any_ascii v0.3.2
[INFO] [stderr]     Checking geo v0.27.0
[INFO] [stderr]     Checking futures-buffered v0.2.11
[INFO] [stderr]     Checking lexicmp v0.1.0
[INFO] [stderr]     Checking radix_trie v0.2.1
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]     Checking dmp v0.2.3
[INFO] [stderr]     Checking quick_cache v0.4.3
[INFO] [stderr]     Checking async-executor v1.13.1
[INFO] [stderr]     Checking tungstenite v0.20.1
[INFO] [stderr]     Checking addr v0.15.6
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]     Checking native-tls v0.2.14
[INFO] [stderr]     Checking bcrypt v0.15.1
[INFO] [stderr]     Checking object_store v0.8.0
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking fuzzy-matcher v0.3.7
[INFO] [stderr]     Checking hyper v0.14.32
[INFO] [stderr]     Checking surrealdb-jsonwebtoken v8.3.0-surreal.1
[INFO] [stderr]     Checking scrypt v0.11.0
[INFO] [stderr]     Checking revision v0.7.1
[INFO] [stderr]     Checking ulid v1.2.1
[INFO] [stderr]    Compiling cedar-policy-core v2.4.2
[INFO] [stderr]     Checking storekey v0.5.0
[INFO] [stderr]     Checking rust-stemmers v1.2.0
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking nanoid v0.4.0
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]    Compiling surrealdb-derive v0.12.0
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking cipher v0.3.0
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking deunicode v1.6.1
[INFO] [stderr]     Checking unicode-bidi v0.3.18
[INFO] [stderr]     Checking match_cfg v0.1.0
[INFO] [stderr]     Checking hostname v0.3.1
[INFO] [stderr]     Checking blowfish v0.8.0
[INFO] [stderr]     Checking futures-concurrency v7.6.3
[INFO] [stderr]     Checking hyper-util v0.1.11
[INFO] [stderr]     Checking flume v0.11.1
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking tokio-tungstenite v0.20.1
[INFO] [stderr]     Checking idna v0.3.0
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]     Checking email-encoding v0.2.1
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking http-range-header v0.3.1
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]     Checking quoted_printable v0.4.8
[INFO] [stderr]     Checking path-clean v1.0.1
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking lettre v0.10.4
[INFO] [stderr]     Checking tower-http v0.4.4
[INFO] [stderr]     Checking bcrypt v0.10.1
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking hyper-rustls v0.24.2
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]     Checking reqwest v0.11.27
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking cedar-policy-validator v2.4.2
[INFO] [stderr]     Checking cedar-policy v2.4.2
[INFO] [stderr]     Checking surrealdb-core v1.5.6
[INFO] [stderr]     Checking surrealdb v1.5.6
[INFO] [stderr]     Checking rainbow_ai v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Router` and `routing::post`
[INFO] [stdout]  --> src/routes/user.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Router, routing::post,
[INFO] [stdout]   |     ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VipLevel`
[INFO] [stdout]   --> src/routes/user.rs:16:68
[INFO] [stdout]    |
[INFO] [stdout] 16 |     models::{User, PromoterType, FrontendUserRole, VipLevelConfig, VipLevel},
[INFO] [stdout]    |                                                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/ai.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::{AI, AIType, User},
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/routes/coupon.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BackendUserRole`
[INFO] [stdout]   --> src/routes/coupon.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::user::{VipStatus, BackendUserRole};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/routes/points.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TxType`
[INFO] [stdout]   --> src/routes/points.rs:13:58
[INFO] [stdout]    |
[INFO] [stdout] 13 |     WalletTx, CurrencyType, Gift, GiftRecord, LuckyCard, TxType,
[INFO] [stdout]    |                                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/invite.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 |     models::{Invite, User, VipLevel},
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/admin.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     models::{User, AuditLog, AuditAction},
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/routes/promoter.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::{State, Path, Json},
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus` and `VerificationStatus`
[INFO] [stdout]   --> src/routes/promoter.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 |     PromoterType, VerificationStatus, CommissionStatus
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Json`, `Router`, `State`, `http::StatusCode`, and `routing::get`
[INFO] [stdout]  --> src/routes/audit.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::{State, Json},
[INFO] [stdout]   |               ^^^^^  ^^^^
[INFO] [stdout] 3 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 4 |     routing::get,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 5 |     Router,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/routes/audit.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::Database`
[INFO] [stdout]  --> src/routes/audit.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::db::Database;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuditAction` and `AuditLog`
[INFO] [stdout]  --> src/routes/audit.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::{AuditLog, AuditAction};
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::middleware::auth::AuthenticatedUser`
[INFO] [stdout]   --> src/routes/audit.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::middleware::auth::AuthenticatedUser;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/im.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/im.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Friend`, `GroupApply`, `GroupUser`, and `Group`
[INFO] [stdout]   --> src/routes/im.rs:12:49
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::chat::{Message, MessageType, Group, GroupUser, GroupApply, Friend, ChatFile};
[INFO] [stdout]    |                                                 ^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::extract::multipart::Field`
[INFO] [stdout]    --> src/routes/im.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |     use axum::extract::multipart::Field;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::StreamExt`
[INFO] [stdout]    --> src/routes/im.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |     use futures_util::StreamExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Query`
[INFO] [stdout]  --> src/routes/friend.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 |     extract::{State, Path, Query},
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/friend.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/friend.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/group.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/group.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GroupSetting`
[INFO] [stdout]   --> src/routes/group.rs:12:57
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::chat::{Group, GroupUser, GroupApply, GroupSetting};
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AIStatus`
[INFO] [stdout]   --> src/models/mod.rs:15:26
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use ai::{AI, AIType, AIStatus};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChatFile`, `Friend`, `GroupApply`, `GroupSetting`, `GroupUser`, `Group`, `MessageType`, and `Message`
[INFO] [stdout]   --> src/models/mod.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use chat::{Message, MessageType, Group, GroupSetting, GroupUser, GroupApply, Friend, ChatFile};
[INFO] [stdout]    |                ^^^^^^^  ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/db/surreal.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::engine::remote::http::Client`
[INFO] [stdout]  --> src/db/points.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use surrealdb::engine::remote::http::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::Surreal`
[INFO] [stdout]  --> src/db/points.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use surrealdb::Surreal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::engine::remote::http::Client`
[INFO] [stdout]  --> src/db/promoter.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use surrealdb::engine::remote::http::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::Surreal`
[INFO] [stdout]  --> src/db/promoter.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use surrealdb::Surreal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus`, `PromoterType`, and `User`
[INFO] [stdout]  --> src/db/promoter.rs:7:25
[INFO] [stdout]   |
[INFO] [stdout] 7 |     VerificationStatus, CommissionStatus, CommissionType, User, PromoterType
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^                  ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::sql::Thing`
[INFO] [stdout]  --> src/db/chat.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use surrealdb::sql::Thing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Request`, `State`, `body::Body`, and `middleware::Next`
[INFO] [stdout]  --> src/middleware/auth.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 |     extract::{FromRequestParts, State},
[INFO] [stdout]   |                                 ^^^^^
[INFO] [stdout] 4 |     http::{request::Parts, StatusCode, Request},
[INFO] [stdout]   |                                        ^^^^^^^
[INFO] [stdout] 5 |     middleware::Next,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     response::Response,
[INFO] [stdout] 7 |     body::Body,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::Database`
[INFO] [stdout]   --> src/middleware/auth.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::db::Database;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShopItemType`
[INFO] [stdout]  --> src/services/points_service.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 |     LuckyCard, CardLevel, ShopItem, ShopItemType, PurchaseRecord,
[INFO] [stdout]   |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus` and `User`
[INFO] [stdout]  --> src/services/promoter_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     User, Promoter, PromotionRecord, CommissionLog, WithdrawalRequest,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 4 |     VerificationStatus, CommissionStatus, CommissionType, PromoterType
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::User`
[INFO] [stdout]   --> src/services/websocket.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::User;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Router` and `routing::post`
[INFO] [stdout]  --> src/routes/user.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     Router, routing::post,
[INFO] [stdout]   |     ^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VipLevel`
[INFO] [stdout]   --> src/routes/user.rs:16:68
[INFO] [stdout]    |
[INFO] [stdout] 16 |     models::{User, PromoterType, FrontendUserRole, VipLevelConfig, VipLevel},
[INFO] [stdout]    |                                                                    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/ai.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::{AI, AIType, User},
[INFO] [stdout]    |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/routes/coupon.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BackendUserRole`
[INFO] [stdout]   --> src/routes/coupon.rs:12:38
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::user::{VipStatus, BackendUserRole};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/routes/points.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TxType`
[INFO] [stdout]   --> src/routes/points.rs:13:58
[INFO] [stdout]    |
[INFO] [stdout] 13 |     WalletTx, CurrencyType, Gift, GiftRecord, LuckyCard, TxType,
[INFO] [stdout]    |                                                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/invite.rs:12:22
[INFO] [stdout]    |
[INFO] [stdout] 12 |     models::{Invite, User, VipLevel},
[INFO] [stdout]    |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `User`
[INFO] [stdout]   --> src/routes/admin.rs:11:14
[INFO] [stdout]    |
[INFO] [stdout] 11 |     models::{User, AuditLog, AuditAction},
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/routes/promoter.rs:2:22
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::{State, Path, Json},
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus` and `VerificationStatus`
[INFO] [stdout]   --> src/routes/promoter.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 |     PromoterType, VerificationStatus, CommissionStatus
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Json`, `Router`, `State`, `http::StatusCode`, and `routing::get`
[INFO] [stdout]  --> src/routes/audit.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 |     extract::{State, Json},
[INFO] [stdout]   |               ^^^^^  ^^^^
[INFO] [stdout] 3 |     http::StatusCode,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 4 |     routing::get,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 5 |     Router,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/routes/audit.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::Database`
[INFO] [stdout]  --> src/routes/audit.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::db::Database;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AuditAction` and `AuditLog`
[INFO] [stdout]  --> src/routes/audit.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::models::{AuditLog, AuditAction};
[INFO] [stdout]   |                     ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::middleware::auth::AuthenticatedUser`
[INFO] [stdout]   --> src/routes/audit.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::middleware::auth::AuthenticatedUser;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/im.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/im.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Friend`, `GroupApply`, `GroupUser`, and `Group`
[INFO] [stdout]   --> src/routes/im.rs:12:49
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::chat::{Message, MessageType, Group, GroupUser, GroupApply, Friend, ChatFile};
[INFO] [stdout]    |                                                 ^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::extract::multipart::Field`
[INFO] [stdout]    --> src/routes/im.rs:290:9
[INFO] [stdout]     |
[INFO] [stdout] 290 |     use axum::extract::multipart::Field;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `futures_util::StreamExt`
[INFO] [stdout]    --> src/routes/im.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |     use futures_util::StreamExt;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Query`
[INFO] [stdout]  --> src/routes/friend.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 |     extract::{State, Path, Query},
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/friend.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/friend.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> src/routes/group.rs:8:26
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]  --> src/routes/group.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use uuid::Uuid;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GroupSetting`
[INFO] [stdout]   --> src/routes/group.rs:12:57
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::models::chat::{Group, GroupUser, GroupApply, GroupSetting};
[INFO] [stdout]    |                                                         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AIStatus`
[INFO] [stdout]   --> src/models/mod.rs:15:26
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use ai::{AI, AIType, AIStatus};
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ChatFile`, `Friend`, `GroupApply`, `GroupSetting`, `GroupUser`, `Group`, `MessageType`, and `Message`
[INFO] [stdout]   --> src/models/mod.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use chat::{Message, MessageType, Group, GroupSetting, GroupUser, GroupApply, Friend, ChatFile};
[INFO] [stdout]    |                ^^^^^^^  ^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^  ^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/db/surreal.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::engine::remote::http::Client`
[INFO] [stdout]  --> src/db/points.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use surrealdb::engine::remote::http::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::Surreal`
[INFO] [stdout]  --> src/db/points.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use surrealdb::Surreal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::engine::remote::http::Client`
[INFO] [stdout]  --> src/db/promoter.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use surrealdb::engine::remote::http::Client;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::Surreal`
[INFO] [stdout]  --> src/db/promoter.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use surrealdb::Surreal;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus`, `PromoterType`, and `User`
[INFO] [stdout]  --> src/db/promoter.rs:7:25
[INFO] [stdout]   |
[INFO] [stdout] 7 |     VerificationStatus, CommissionStatus, CommissionType, User, PromoterType
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^                  ^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `surrealdb::sql::Thing`
[INFO] [stdout]  --> src/db/chat.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use surrealdb::sql::Thing;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Request`, `State`, `body::Body`, and `middleware::Next`
[INFO] [stdout]  --> src/middleware/auth.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 |     extract::{FromRequestParts, State},
[INFO] [stdout]   |                                 ^^^^^
[INFO] [stdout] 4 |     http::{request::Parts, StatusCode, Request},
[INFO] [stdout]   |                                        ^^^^^^^
[INFO] [stdout] 5 |     middleware::Next,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     response::Response,
[INFO] [stdout] 7 |     body::Body,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::Database`
[INFO] [stdout]   --> src/middleware/auth.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::db::Database;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShopItemType`
[INFO] [stdout]  --> src/services/points_service.rs:4:37
[INFO] [stdout]   |
[INFO] [stdout] 4 |     LuckyCard, CardLevel, ShopItem, ShopItemType, PurchaseRecord,
[INFO] [stdout]   |                                     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommissionStatus` and `User`
[INFO] [stdout]  --> src/services/promoter_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     User, Promoter, PromotionRecord, CommissionLog, WithdrawalRequest,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 4 |     VerificationStatus, CommissionStatus, CommissionType, PromoterType
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::models::User`
[INFO] [stdout]   --> src/services/websocket.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::models::User;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:784:25
[INFO] [stdout]     |
[INFO] [stdout] 784 |                     let mut stat: Option<MonthlyRedemptionStat> = self.client
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:826:25
[INFO] [stdout]     |
[INFO] [stdout] 826 |                     let mut stat: Option<MonthlyRedemptionStat> = self.client
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:975:17
[INFO] [stdout]     |
[INFO] [stdout] 975 |             let mut result = self
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:784:25
[INFO] [stdout]     |
[INFO] [stdout] 784 |                     let mut stat: Option<MonthlyRedemptionStat> = self.client
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:826:25
[INFO] [stdout]     |
[INFO] [stdout] 826 |                     let mut stat: Option<MonthlyRedemptionStat> = self.client
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/db/points.rs:975:17
[INFO] [stdout]     |
[INFO] [stdout] 975 |             let mut result = self
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/services/points_service.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut result = self.db
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/services/points_service.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut result = self.db
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/surreal.rs:163:13
[INFO] [stdout]     |
[INFO] [stdout] 163 |         let result = self.client
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next`
[INFO] [stdout]   --> src/routes/user.rs:82:45
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn admin_auth(req: AxumRequest<Body>, next: Next, State(db): State<Arc<Database>>) -> Result<Response, StatusCode> {
[INFO] [stdout]    |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_next`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/points.rs:975:17
[INFO] [stdout]     |
[INFO] [stdout] 975 |             let mut result = self
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/points.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let result = self
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/db/points.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let result = self
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/points.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/points.rs:307:5
[INFO] [stdout]     |
[INFO] [stdout] 307 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_id`
[INFO] [stdout]    --> src/routes/points.rs:308:20
[INFO] [stdout]     |
[INFO] [stdout] 308 |     Path((gift_id, ai_id)): Path<(String, String)>,
[INFO] [stdout]     |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]   --> src/routes/store.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     auth_user: AuthenticatedUser,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]   --> src/routes/store.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     auth_user: AuthenticatedUser,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 239 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:240:5
[INFO] [stdout]     |
[INFO] [stdout] 240 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/routes/im.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 |     Json(payload): Json<ChatActionRequest>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:258:5
[INFO] [stdout]     |
[INFO] [stdout] 258 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/routes/im.rs:259:10
[INFO] [stdout]     |
[INFO] [stdout] 259 |     Json(payload): Json<ChatActionRequest>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 266 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:267:5
[INFO] [stdout]     |
[INFO] [stdout] 267 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chat_id`
[INFO] [stdout]    --> src/routes/im.rs:268:10
[INFO] [stdout]     |
[INFO] [stdout] 268 |     Path(chat_id): Path<String>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chat_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 276 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:277:5
[INFO] [stdout]     |
[INFO] [stdout] 277 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_storage`
[INFO] [stdout]   --> src/routes/group.rs:87:16
[INFO] [stdout]    |
[INFO] [stdout] 87 |     State((db, file_storage)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]    |                ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_storage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/surreal.rs:163:13
[INFO] [stdout]     |
[INFO] [stdout] 163 |         let result = self.client
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `next`
[INFO] [stdout]   --> src/routes/user.rs:82:45
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn admin_auth(req: AxumRequest<Body>, next: Next, State(db): State<Arc<Database>>) -> Result<Response, StatusCode> {
[INFO] [stdout]    |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_next`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/points.rs:975:17
[INFO] [stdout]     |
[INFO] [stdout] 975 |             let mut result = self
[INFO] [stdout]     |                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/db/points.rs:143:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |         let result = self
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/db/points.rs:32:13
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let result = self
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/points.rs:191:5
[INFO] [stdout]     |
[INFO] [stdout] 191 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/points.rs:307:5
[INFO] [stdout]     |
[INFO] [stdout] 307 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_id`
[INFO] [stdout]    --> src/routes/points.rs:308:20
[INFO] [stdout]     |
[INFO] [stdout] 308 |     Path((gift_id, ai_id)): Path<(String, String)>,
[INFO] [stdout]     |                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]   --> src/routes/store.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 |     auth_user: AuthenticatedUser,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]   --> src/routes/store.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     auth_user: AuthenticatedUser,
[INFO] [stdout]    |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/services/points_service.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut result = self.db
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:167:5
[INFO] [stdout]     |
[INFO] [stdout] 167 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 239 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:240:5
[INFO] [stdout]     |
[INFO] [stdout] 240 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:249:5
[INFO] [stdout]     |
[INFO] [stdout] 249 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/routes/im.rs:250:10
[INFO] [stdout]     |
[INFO] [stdout] 250 |     Json(payload): Json<ChatActionRequest>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 257 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:258:5
[INFO] [stdout]     |
[INFO] [stdout] 258 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `payload`
[INFO] [stdout]    --> src/routes/im.rs:259:10
[INFO] [stdout]     |
[INFO] [stdout] 259 |     Json(payload): Json<ChatActionRequest>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_payload`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:266:12
[INFO] [stdout]     |
[INFO] [stdout] 266 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:267:5
[INFO] [stdout]     |
[INFO] [stdout] 267 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chat_id`
[INFO] [stdout]    --> src/routes/im.rs:268:10
[INFO] [stdout]     |
[INFO] [stdout] 268 |     Path(chat_id): Path<String>,
[INFO] [stdout]     |          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_chat_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `db`
[INFO] [stdout]    --> src/routes/im.rs:276:12
[INFO] [stdout]     |
[INFO] [stdout] 276 |     State((db, _)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_db`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:277:5
[INFO] [stdout]     |
[INFO] [stdout] 277 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `auth_user`
[INFO] [stdout]    --> src/routes/im.rs:340:5
[INFO] [stdout]     |
[INFO] [stdout] 340 |     auth_user: AuthenticatedUser,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_auth_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file_storage`
[INFO] [stdout]   --> src/routes/group.rs:87:16
[INFO] [stdout]    |
[INFO] [stdout] 87 |     State((db, file_storage)): State<(Database, Arc<FileStorage>)>,
[INFO] [stdout]    |                ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file_storage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]   --> src/routes/auth.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct TokenResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_auth` is never used
[INFO] [stdout]   --> src/routes/user.rs:82:10
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn admin_auth(req: AxumRequest<Body>, next: Next, State(db): State<Arc<Database>>) -> Result<Response, StatusCode> {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyCheckinRequest` is never constructed
[INFO] [stdout]   --> src/routes/points.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct DailyCheckinRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `forward_type` is never read
[INFO] [stdout]   --> src/routes/im.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ForwardMessageRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     forward_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_group` is never read
[INFO] [stdout]   --> src/routes/im.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SetReadRequest {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 46 |     chat_id: String,
[INFO] [stdout] 47 |     is_group: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `chat_id` and `is_group` are never read
[INFO] [stdout]   --> src/routes/im.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ChatActionRequest {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 52 |     chat_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 53 |     is_group: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `daily_chat_limit` and `daily_lio_limit` are never used
[INFO] [stdout]   --> src/models/user.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl VipLevel {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn daily_chat_limit(&self, db: &Database) -> Result<u32, surrealdb::Error> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub async fn daily_lio_limit(&self, db: &Database) -> Result<u32, surrealdb::Error> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_awaken_ai`, `is_backend_user`, `is_frontend_user`, `revoke_promoter_if_vip_expired`, `has_free_mapping_quota`, and `use_free_mapping` are never used
[INFO] [stdout]    --> src/models/user.rs:178:18
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl User {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub async fn can_awaken_ai(&self, db: &Database) -> Result<bool, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn is_backend_user(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn is_frontend_user(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub async fn revoke_promoter_if_vip_expired(&mut self, db: &Database) -> Result<(), surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn has_free_mapping_quota(&self, db: &Database) -> Result<bool, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn use_free_mapping(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_compatible_with_vip` and `to_string` are never used
[INFO] [stdout]   --> src/models/ai.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AIType {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 18 |     pub fn is_compatible_with_vip(&self, vip_level: &VipLevel) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn to_string(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `awaken` is never used
[INFO] [stdout]   --> src/models/ai.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AI {
[INFO] [stdout]    | ------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn awaken(&mut self, user_id: String) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_initiate_ai` is never used
[INFO] [stdout]   --> src/models/ai.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl User {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 85 |     pub fn can_initiate_ai(&self, ai_type: AIType) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_multiplier` and `max_multiplier` are never used
[INFO] [stdout]   --> src/models/lucky_card.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl CardLevel {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 15 |     // 获取倍率范围下限
[INFO] [stdout] 16 |     pub fn min_multiplier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn max_multiplier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/lucky_card.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl LuckyCard {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 52 |     pub fn new(level: CardLevel, owner_id: String, issued_by_ai_id: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `activate` is never used
[INFO] [stdout]    --> src/models/point_shop.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl PurchaseRecord {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn activate(&mut self) -> Result<(), &'static str> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_receive_commission` and `add_pending_commission` are never used
[INFO] [stdout]   --> src/models/promoter.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Promoter {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn can_receive_commission(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn add_pending_commission(&mut self, amount: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cancel` is never used
[INFO] [stdout]    --> src/models/promoter.rs:180:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl CommissionLog {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn cancel(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_verification` is never used
[INFO] [stdout]    --> src/db/surreal.rs:147:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Database {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_verification(&self, email: &str, code: &str) -> Result<Option<EmailVerification>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_lucky_card` and `purchase_shop_item` are never used
[INFO] [stdout]    --> src/db/points.rs:497:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub async fn create_lucky_card(&self, level: CardLevel, owner_id: &str, issued_by_ai_id: Option<String>) 
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub async fn purchase_shop_item(&self, user_id: &str, item_id: &str) 
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_promotion_records_by_user`, `update_commission_log`, `get_pending_commission_logs`, and `process_payment_commission` are never used
[INFO] [stdout]    --> src/db/promoter.rs:131:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub async fn get_promotion_records_by_user(&self, user_id: &str) -> Result<Vec<PromotionRecord>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn update_commission_log(&self, log: &CommissionLog) -> Result<(), surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn get_pending_commission_logs(&self) -> Result<Vec<CommissionLog>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub async fn process_payment_commission(&self, user_id: &str, payment_amount: f32, is_renewal: bool) -> Result<Option<CommissionLog>,...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_user_groups` is never used
[INFO] [stdout]    --> src/db/chat.rs:155:18
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl Database {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub async fn get_user_groups(&self, user_id: &str) -> Result<Vec<GroupUser>, Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/services/points_service.rs:29:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl PointsService {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn reward_dialogue_points(&self, user_id: &str, message_count: u32) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub async fn reward_invitation_points(&self, inviter_id: &str, invitee_id: &str) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn issue_random_lucky_card(&self, user_id: &str, ai_id: Option<String>) -> Result<Option<LuckyCard>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn get_available_shop_items(&self) -> Result<Vec<ShopItem>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub async fn purchase_shop_item(&self, user_id: &str, item_id: &str) -> Result<bool, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub async fn get_user_purchases(&self, user_id: &str, limit: usize) -> Result<Vec<PurchaseRecord>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub async fn calculate_promoter_commission(&self, promoter_id: &str, amount: u32) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `process_payment` is never used
[INFO] [stdout]    --> src/services/promoter_service.rs:318:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PromoterService {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub async fn process_payment(&self, user_id: &str, payment_amount: f32, is_renewal: bool) -> Result<Option<CommissionLog>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_file_from_bytes`, `get_file_info`, `get_file_url`, and `delete_file` are never used
[INFO] [stdout]    --> src/services/file_storage.rs:67:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl FileStorage {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn save_file_from_bytes(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub async fn get_file_info(&self, file_path: &str) -> Result<(Vec<u8>, String), std::io::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_file_url(&self, file_path: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub async fn delete_file(&self, file_path: &str) -> Result<(), std::io::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]   --> src/services/points_service.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let mut result = self.db
[INFO] [stdout]    |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TokenResponse` is never constructed
[INFO] [stdout]   --> src/routes/auth.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct TokenResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `admin_auth` is never used
[INFO] [stdout]   --> src/routes/user.rs:82:10
[INFO] [stdout]    |
[INFO] [stdout] 82 | async fn admin_auth(req: AxumRequest<Body>, next: Next, State(db): State<Arc<Database>>) -> Result<Response, StatusCode> {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyCheckinRequest` is never constructed
[INFO] [stdout]   --> src/routes/points.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct DailyCheckinRequest {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `forward_type` is never read
[INFO] [stdout]   --> src/routes/im.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct ForwardMessageRequest {
[INFO] [stdout]    |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 34 |     forward_type: String,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `is_group` is never read
[INFO] [stdout]   --> src/routes/im.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct SetReadRequest {
[INFO] [stdout]    |            -------------- field in this struct
[INFO] [stdout] 46 |     chat_id: String,
[INFO] [stdout] 47 |     is_group: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `chat_id` and `is_group` are never read
[INFO] [stdout]   --> src/routes/im.rs:52:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct ChatActionRequest {
[INFO] [stdout]    |            ----------------- fields in this struct
[INFO] [stdout] 52 |     chat_id: String,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 53 |     is_group: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `daily_chat_limit` and `daily_lio_limit` are never used
[INFO] [stdout]   --> src/models/user.rs:32:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl VipLevel {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub async fn daily_chat_limit(&self, db: &Database) -> Result<u32, surrealdb::Error> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub async fn daily_lio_limit(&self, db: &Database) -> Result<u32, surrealdb::Error> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_awaken_ai`, `is_backend_user`, `is_frontend_user`, `revoke_promoter_if_vip_expired`, `has_free_mapping_quota`, and `use_free_mapping` are never used
[INFO] [stdout]    --> src/models/user.rs:178:18
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl User {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 178 |     pub async fn can_awaken_ai(&self, db: &Database) -> Result<bool, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn is_backend_user(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn is_frontend_user(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub async fn revoke_promoter_if_vip_expired(&mut self, db: &Database) -> Result<(), surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub async fn has_free_mapping_quota(&self, db: &Database) -> Result<bool, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     pub fn use_free_mapping(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_compatible_with_vip` and `to_string` are never used
[INFO] [stdout]   --> src/models/ai.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AIType {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 18 |     pub fn is_compatible_with_vip(&self, vip_level: &VipLevel) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn to_string(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `awaken` is never used
[INFO] [stdout]   --> src/models/ai.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl AI {
[INFO] [stdout]    | ------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn awaken(&mut self, user_id: String) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `can_initiate_ai` is never used
[INFO] [stdout]   --> src/models/ai.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 84 | impl User {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 85 |     pub fn can_initiate_ai(&self, ai_type: AIType) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_multiplier` and `max_multiplier` are never used
[INFO] [stdout]   --> src/models/lucky_card.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl CardLevel {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 15 |     // 获取倍率范围下限
[INFO] [stdout] 16 |     pub fn min_multiplier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn max_multiplier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/lucky_card.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl LuckyCard {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 52 |     pub fn new(level: CardLevel, owner_id: String, issued_by_ai_id: Option<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `activate` is never used
[INFO] [stdout]    --> src/models/point_shop.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 130 | impl PurchaseRecord {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn activate(&mut self) -> Result<(), &'static str> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_receive_commission` and `add_pending_commission` are never used
[INFO] [stdout]   --> src/models/promoter.rs:76:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Promoter {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn can_receive_commission(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn add_pending_commission(&mut self, amount: f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `cancel` is never used
[INFO] [stdout]    --> src/models/promoter.rs:180:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl CommissionLog {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn cancel(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_verification` is never used
[INFO] [stdout]    --> src/db/surreal.rs:147:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Database {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub async fn get_verification(&self, email: &str, code: &str) -> Result<Option<EmailVerification>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_lucky_card` and `purchase_shop_item` are never used
[INFO] [stdout]    --> src/db/points.rs:497:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 497 |     pub async fn create_lucky_card(&self, level: CardLevel, owner_id: &str, issued_by_ai_id: Option<String>) 
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub async fn purchase_shop_item(&self, user_id: &str, item_id: &str) 
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_promotion_records_by_user`, `update_commission_log`, `get_pending_commission_logs`, and `process_payment_commission` are never used
[INFO] [stdout]    --> src/db/promoter.rs:131:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl Database {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub async fn get_promotion_records_by_user(&self, user_id: &str) -> Result<Vec<PromotionRecord>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub async fn update_commission_log(&self, log: &CommissionLog) -> Result<(), surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub async fn get_pending_commission_logs(&self) -> Result<Vec<CommissionLog>, surrealdb::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub async fn process_payment_commission(&self, user_id: &str, payment_amount: f32, is_renewal: bool) -> Result<Option<CommissionLog>,...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_user_groups` is never used
[INFO] [stdout]    --> src/db/chat.rs:155:18
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl Database {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub async fn get_user_groups(&self, user_id: &str) -> Result<Vec<GroupUser>, Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/services/points_service.rs:29:18
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl PointsService {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn reward_dialogue_points(&self, user_id: &str, message_count: u32) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub async fn reward_invitation_points(&self, inviter_id: &str, invitee_id: &str) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn issue_random_lucky_card(&self, user_id: &str, ai_id: Option<String>) -> Result<Option<LuckyCard>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     pub async fn get_available_shop_items(&self) -> Result<Vec<ShopItem>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub async fn purchase_shop_item(&self, user_id: &str, item_id: &str) -> Result<bool, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub async fn get_user_purchases(&self, user_id: &str, limit: usize) -> Result<Vec<PurchaseRecord>, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub async fn calculate_promoter_commission(&self, promoter_id: &str, amount: u32) -> Result<u32, anyhow::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `process_payment` is never used
[INFO] [stdout]    --> src/services/promoter_service.rs:318:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl PromoterService {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 318 |     pub async fn process_payment(&self, user_id: &str, payment_amount: f32, is_renewal: bool) -> Result<Option<CommissionLog>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_file_from_bytes`, `get_file_info`, `get_file_url`, and `delete_file` are never used
[INFO] [stdout]    --> src/services/file_storage.rs:67:18
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl FileStorage {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub async fn save_file_from_bytes(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub async fn get_file_info(&self, file_path: &str) -> Result<(Vec<u8>, String), std::io::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_file_url(&self, file_path: &str) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub async fn delete_file(&self, file_path: &str) -> Result<(), std::io::Error> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 51s
[INFO] running `Command { std: "docker" "inspect" "577ba5474db28103a4f8deb9ba9182ac697ab75469ee9e13a644a6dc59c64b50", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "577ba5474db28103a4f8deb9ba9182ac697ab75469ee9e13a644a6dc59c64b50", kill_on_drop: false }`
[INFO] [stdout] 577ba5474db28103a4f8deb9ba9182ac697ab75469ee9e13a644a6dc59c64b50
