[INFO] cloning repository https://github.com/shuyuzheng19/axum_blog_api
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/shuyuzheng19/axum_blog_api" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshuyuzheng19%2Faxum_blog_api", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshuyuzheng19%2Faxum_blog_api'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 6e220e5719f7ee6192562a283d680bd2e489d466
[INFO] checking shuyuzheng19/axum_blog_api against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fshuyuzheng19%2Faxum_blog_api" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/shuyuzheng19/axum_blog_api
[INFO] finished tweaking git repo https://github.com/shuyuzheng19/axum_blog_api
[INFO] tweaked toml for git repo https://github.com/shuyuzheng19/axum_blog_api written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/shuyuzheng19/axum_blog_api 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/shuyuzheng19/axum_blog_api 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]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/lionsoul2014/ip2region.git`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded validator_derive v0.19.0
[INFO] [stderr]   Downloaded security-framework-sys v2.13.0
[INFO] [stderr]   Downloaded validator v0.19.0
[INFO] [stderr]   Downloaded email_address v0.2.9
[INFO] [stderr]   Downloaded quoted_printable v0.5.1
[INFO] [stderr]   Downloaded async-trait v0.1.84
[INFO] [stderr]   Downloaded deadpool-redis v0.18.0
[INFO] [stderr]   Downloaded email-encoding v0.3.1
[INFO] [stderr]   Downloaded bcrypt v0.16.0
[INFO] [stderr]   Downloaded jsonwebtoken v9.3.0
[INFO] [stderr]   Downloaded pem v3.0.4
[INFO] [stderr]   Downloaded lettre v0.11.11
[INFO] [stderr]   Downloaded chumsky v0.9.3
[INFO] [stderr]   Downloaded redis v0.27.6
[INFO] [stderr]   Downloaded syn v2.0.94
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] d03c27afc884fdeb8b13d5acde0d24464a7b760ac1d82857f2400e905e92d12a
[INFO] running `Command { std: "docker" "start" "-a" "d03c27afc884fdeb8b13d5acde0d24464a7b760ac1d82857f2400e905e92d12a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d03c27afc884fdeb8b13d5acde0d24464a7b760ac1d82857f2400e905e92d12a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d03c27afc884fdeb8b13d5acde0d24464a7b760ac1d82857f2400e905e92d12a", kill_on_drop: false }`
[INFO] [stdout] d03c27afc884fdeb8b13d5acde0d24464a7b760ac1d82857f2400e905e92d12a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 36c7506dc4479e9e5aa5c6e30de80fd445cf5f830729652b4dab65cc7bb8dc7f
[INFO] running `Command { std: "docker" "start" "-a" "36c7506dc4479e9e5aa5c6e30de80fd445cf5f830729652b4dab65cc7bb8dc7f", kill_on_drop: false }`
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling serde_json v1.0.134
[INFO] [stderr]    Compiling syn v2.0.94
[INFO] [stderr]     Checking socket2 v0.5.8
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]     Checking http v1.2.0
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking indexmap v2.7.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling pin-project-lite v0.2.15
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling native-tls v0.2.12
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling tinyvec v1.8.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling rustix v0.38.42
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling tokio v1.42.0
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling event-listener v5.3.1
[INFO] [stderr]    Compiling sha2 v0.10.8
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling psm v0.1.24
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling unicode-properties v0.1.3
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]    Compiling time-macros v0.2.19
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling stacker v0.1.17
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling rustversion v1.0.19
[INFO] [stderr]    Compiling home v0.5.11
[INFO] [stderr]    Compiling whoami v1.5.2
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking inout v0.1.3
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]     Checking http-body-util v0.1.2
[INFO] [stderr]    Compiling ring v0.17.8
[INFO] [stderr]     Checking sqlformat v0.2.6
[INFO] [stderr]     Checking thread_local v1.1.8
[INFO] [stderr]    Compiling multer v3.1.0
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking rustls-pki-types v1.10.1
[INFO] [stderr]     Checking arc-swap v1.7.1
[INFO] [stderr]     Checking blowfish v0.9.1
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking time v0.3.37
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking email-encoding v0.3.1
[INFO] [stderr]     Checking rustls-pemfile v2.2.0
[INFO] [stderr]     Checking pem v3.0.4
[INFO] [stderr]     Checking crossbeam-channel v0.5.14
[INFO] [stderr]     Checking hostname v0.4.0
[INFO] [stderr]     Checking email_address v0.2.9
[INFO] [stderr]     Checking quoted_printable v0.5.1
[INFO] [stderr]     Checking matchit v0.7.3
[INFO] [stderr]     Checking chrono v0.4.39
[INFO] [stderr]     Checking bcrypt v0.16.0
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking uuid v1.11.0
[INFO] [stderr]    Compiling tempfile v3.15.0
[INFO] [stderr]    Compiling synstructure v0.13.1
[INFO] [stderr]    Compiling darling_core v0.20.10
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling serde_derive v1.0.217
[INFO] [stderr]    Compiling zerofrom-derive v0.1.5
[INFO] [stderr]    Compiling yoke-derive v0.7.5
[INFO] [stderr]    Compiling zerovec-derive v0.10.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling icu_provider_macros v1.5.0
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling tokio-macros v2.4.0
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking openssl v0.10.68
[INFO] [stderr]    Compiling async-trait v0.1.84
[INFO] [stderr]    Compiling zerocopy v0.7.35
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]     Checking zerofrom v0.1.5
[INFO] [stderr]     Checking simple_asn1 v0.6.2
[INFO] [stderr]     Checking yoke v0.7.5
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerovec v0.10.4
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]    Compiling ppv-lite86 v0.2.20
[INFO] [stderr]     Checking tower-http v0.6.2
[INFO] [stderr]    Compiling darling_macro v0.20.10
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling darling v0.20.10
[INFO] [stderr]    Compiling validator_derive v0.19.0
[INFO] [stderr]    Compiling hashlink v0.9.1
[INFO] [stderr]     Checking tinystr v0.7.6
[INFO] [stderr]     Checking icu_collections v1.5.0
[INFO] [stderr]     Checking serde v1.0.217
[INFO] [stderr]     Checking icu_locid v1.5.0
[INFO] [stderr]     Checking chumsky v0.9.3
[INFO] [stderr]     Checking icu_provider v1.5.0
[INFO] [stderr]    Compiling icu_locid_transform v1.5.0
[INFO] [stderr]    Compiling icu_properties v1.5.1
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.16
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking futures-intrusive v0.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking jsonwebtoken v9.3.0
[INFO] [stderr]     Checking icu_normalizer v1.5.0
[INFO] [stderr]     Checking xdb v0.1.0 (https://github.com/lionsoul2014/ip2region.git?branch=master#06eb5c6e)
[INFO] [stderr]     Checking tracing-appender v0.2.3
[INFO] [stderr]     Checking idna_adapter v1.2.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking lettre v0.11.11
[INFO] [stderr]     Checking validator v0.19.0
[INFO] [stderr]    Compiling sqlx-core v0.8.2
[INFO] [stderr]     Checking tokio-util v0.7.13
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking deadpool v0.12.1
[INFO] [stderr]     Checking h2 v0.4.7
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]    Compiling sqlx-postgres v0.8.2
[INFO] [stderr]     Checking hyper v1.5.2
[INFO] [stderr]     Checking redis v0.27.6
[INFO] [stderr]     Checking hyper-util v0.1.10
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.2
[INFO] [stderr]    Compiling sqlx-macros v0.8.2
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]     Checking reqwest v0.12.12
[INFO] [stderr]     Checking sqlx v0.8.2
[INFO] [stderr]     Checking deadpool-redis v0.18.0
[INFO] [stderr]     Checking blog_rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `redis::Commands`
[INFO] [stdout]  --> src/lib.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     use redis::Commands;
[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 imports: `search_by_ip` and `searcher_init`
[INFO] [stdout]  --> src/lib.rs:9:15
[INFO] [stdout]   |
[INFO] [stdout] 9 |     use xdb::{search_by_ip, searcher_init};
[INFO] [stdout]   |               ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]   --> src/lib.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 |     use super::*;
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ACCEPT`, `AUTHORIZATION`, and `CONTENT_TYPE`
[INFO] [stdout]  --> src/main.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |         header::{ACCEPT, AUTHORIZATION, CONTENT_TYPE},
[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: `sync::LazyLock`
[INFO] [stdout]  --> src/config/mod.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fs, sync::LazyLock};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lazy`
[INFO] [stdout]  --> src/config/mod.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use once_cell::sync::{Lazy, OnceCell};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parse::AiConfig`
[INFO] [stdout]  --> src/config/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use parse::AiConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PgPool`
[INFO] [stdout]  --> src/config/database.rs:5:37
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sqlx::{postgres::PgPoolOptions, PgPool, Pool, Postgres};
[INFO] [stdout]   |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Level` and `level_filters::LevelFilter`
[INFO] [stdout]  --> src/config/database.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, level_filters::LevelFilter, Level};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CONFIG`
[INFO] [stdout]  --> src/config/database.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::config::{get_global_config, CONFIG};
[INFO] [stdout]   |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GeminiConfig`
[INFO] [stdout]  --> src/config/config.rs:3:77
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{database::DataBaseConfig, email::EmailConfig, parse::{AiConfig, GeminiConfig}, redis::RedisConfig, search::SearchConfig, uplo...
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::LazyLock`
[INFO] [stdout]  --> src/handler/user.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{net::SocketAddr, sync::LazyLock};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]  --> src/handler/user.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json::{json, Value};
[INFO] [stdout]   |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blog::BlogRepository`
[INFO] [stdout]   --> src/handler/user.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |     }, repositorys::{blog::BlogRepository, topic::TopicRepository, user::UserRepository}, services::user::{UserCache, UserService}, utils...
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchPage`
[INFO] [stdout]   --> src/handler/blog.rs:13:61
[INFO] [stdout]    |
[INFO] [stdout] 13 |         result::{custom, ok, success, validate_error, Page, SearchPage},
[INFO] [stdout]    |                                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Page` and `vo::blog::BlogVo`
[INFO] [stdout]  --> src/handler/tag.rs:6:51
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...uccess, Page}, models::{dto::{admin::{AdminCategoryRequest, AdminRequest}, blog::BlogQueryRequest}, tag::Tag, vo::blog::BlogVo, Model}...
[INFO] [stdout]   |            ^^^^                                                                                                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/handler/topic.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info,error};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `tag::TagRepository`, `tag::TagService`, `utils::date::get_now_timestamp`, and `vo::blog::BlogVo`
[INFO] [stdout]   --> src/handler/topic.rs:8:102
[INFO] [stdout]    |
[INFO] [stdout]  8 |     models::{dto::{admin::{AdminRequest, AdminTopicRequest}, blog::BlogQueryRequest}, user::JwtUser, vo::blog::BlogVo},
[INFO] [stdout]    |                                                                                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     repositorys::{tag::TagRepository, topic::TopicRepository},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     services::{tag::TagService, topic::TopicService}, utils::date::get_now_timestamp,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::user`
[INFO] [stdout]   --> src/handler/topic.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::user;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `email::EmailConfig`
[INFO] [stdout]   --> src/handler/file.rs:24:14
[INFO] [stdout]    |
[INFO] [stdout] 24 |     config::{email::EmailConfig, get_global_config, redis::RedisManager, upload::UploadConfig},
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Statistics`
[INFO] [stdout]  --> src/handler/console.rs:4:81
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{common::result::success, services::console::{get_system_statistics, Statistics, SystemInfo}};
[INFO] [stdout]   |                                                                                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/handler/beifen.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 |     extract::{Multipart, Path, Query},
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::prelude::FromRow`
[INFO] [stdout]  --> src/models/dto/user.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sqlx::prelude::FromRow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::DateTime`
[INFO] [stdout]  --> src/models/dto/blog.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::DateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/models/vo/blog.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UserVo`
[INFO] [stdout]  --> src/models/vo/admin.rs:4:78
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::{category::CategoryVo, topic::SimpleTopicVo, user::{SimpleUserVo, UserVo}};
[INFO] [stdout]   |                                                                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jsonwebtoken::get_current_timestamp`
[INFO] [stdout]  --> src/models/files.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use jsonwebtoken::get_current_timestamp;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UserVo`, `email`, and `self`
[INFO] [stdout]  --> src/repositorys/user.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 |     config::{database::DB, email},
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 7 |     models::{
[INFO] [stdout] 8 |         dto::{admin::AdminRequest, user::UpdateUserRequest}, role::Role, user::{JwtUser, User}, vo::user::{AdminUserVo, UserVo}
[INFO] [stdout]   |                                                                                                                         ^^^^^^
[INFO] [stdout] 9 |     }, utils::{date::get_now_timestamp, pass::{self, hash_password}},
[INFO] [stdout]   |                                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/repositorys/tag.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdminTopicRequest`
[INFO] [stdout]  --> src/repositorys/topic.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 |             admin::{AdminRequest, AdminTopicRequest},
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Local`
[INFO] [stdout]  --> src/repositorys/other.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Local};
[INFO] [stdout]   |              ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transaction`
[INFO] [stdout]  --> src/repositorys/other.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{Pool, Postgres, Transaction};
[INFO] [stdout]   |                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::date::get_now_timestamp`
[INFO] [stdout]  --> src/repositorys/other.rs:5:35
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{config::database::DB, utils::date::get_now_timestamp};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemLogInfo` and `log`
[INFO] [stdout]   --> src/routes/user.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 |     middware::{ip::ip_logger, jwt::auth, log}, SystemLogInfo,
[INFO] [stdout]    |                                          ^^^   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemLogInfo` and `log`
[INFO] [stdout]   --> src/routes/blog.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 |     middware::{ip, jwt::auth, log}, SystemLogInfo,
[INFO] [stdout]    |                               ^^^   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/tag.rs:22:43
[INFO] [stdout]    |
[INFO] [stdout] 22 |     .layer(Extension(ADMIN_ROLE.clone()));;
[INFO] [stdout]    |                                           ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/tag.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     ;
[INFO] [stdout]    |     ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/topic.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ;
[INFO] [stdout]    |     ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `post` and `put`
[INFO] [stdout]  --> src/routes/console.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 |     routing::{get, post, put},
[INFO] [stdout]   |                    ^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get` and `put`
[INFO] [stdout]  --> src/routes/db.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 |     middleware, routing::{get, post, put}, Extension, Router
[INFO] [stdout]   |                           ^^^        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/services/lib.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 |     use std::fmt::format;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `user::UserCache`
[INFO] [stdout]  --> src/services/lib.rs:4:48
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use crate::services::{console::SystemInfo, user::UserCache};
[INFO] [stdout]   |                                                ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemTime` and `UNIX_EPOCH`
[INFO] [stdout]  --> src/services/blog.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, time::{SystemTime, UNIX_EPOCH}};
[INFO] [stdout]   |                                        ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::http::response`
[INFO] [stdout]  --> src/services/blog.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use axum::http::response;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RedisResult`
[INFO] [stdout]  --> src/services/blog.rs:6:40
[INFO] [stdout]   |
[INFO] [stdout] 6 | use redis::{AsyncCommands, RedisError, RedisResult};
[INFO] [stdout]   |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ACCEPT`, `AUTHORIZATION`, and `CONTENT_TYPE`
[INFO] [stdout]  --> src/main.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |         header::{ACCEPT, AUTHORIZATION, CONTENT_TYPE},
[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: `sync::LazyLock`
[INFO] [stdout]  --> src/config/mod.rs:1:15
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fs, sync::LazyLock};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lazy`
[INFO] [stdout]  --> src/config/mod.rs:4:23
[INFO] [stdout]   |
[INFO] [stdout] 4 | use once_cell::sync::{Lazy, OnceCell};
[INFO] [stdout]   |                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parse::AiConfig`
[INFO] [stdout]  --> src/config/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use parse::AiConfig;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PgPool`
[INFO] [stdout]  --> src/config/database.rs:5:37
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sqlx::{postgres::PgPoolOptions, PgPool, Pool, Postgres};
[INFO] [stdout]   |                                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Level` and `level_filters::LevelFilter`
[INFO] [stdout]  --> src/config/database.rs:6:21
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, level_filters::LevelFilter, Level};
[INFO] [stdout]   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blog::BlogRepository`
[INFO] [stdout]   --> src/services/file.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |     }, repositorys::{blog::BlogRepository, file::FileRepository}, store::local::save_file_to_local, utils::{get_file_extension, pass::cal...
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CONFIG`
[INFO] [stdout]  --> src/config/database.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::config::{get_global_config, CONFIG};
[INFO] [stdout]   |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GeminiConfig`
[INFO] [stdout]  --> src/config/config.rs:3:77
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{database::DataBaseConfig, email::EmailConfig, parse::{AiConfig, GeminiConfig}, redis::RedisConfig, search::SearchConfig, uplo...
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Local`
[INFO] [stdout]  --> src/services/console.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use chrono::{DateTime, Days, Local, Months, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/services/console.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::date::get_now_timestamp`
[INFO] [stdout]    --> src/services/console.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 282 | use crate::utils::date::get_now_timestamp;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs` and `path::Path`
[INFO] [stdout]  --> src/utils/lib.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 |     use std::{fs, path::Path};
[INFO] [stdout]   |               ^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ua::get_client_platform_info`
[INFO] [stdout]  --> src/utils/lib.rs:4:44
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use crate::utils::{get_file_extension, ua::get_client_platform_info};
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bytes`, `FromRequest`, `Json`, `RequestExt`, `http`, and `to_bytes`
[INFO] [stdout]  --> src/middware/log.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     body::{to_bytes, Body, Bytes},
[INFO] [stdout]   |            ^^^^^^^^        ^^^^^
[INFO] [stdout] 3 |     extract::{FromRequest, OriginalUri, Request, State},
[INFO] [stdout]   |               ^^^^^^^^^^^
[INFO] [stdout] 4 |     http,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Json, RequestExt,
[INFO] [stdout]   |     ^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::CONTENT_TYPE`
[INFO] [stdout]  --> src/middware/log.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use reqwest::header::CONTENT_TYPE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/middware/log.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `net::SocketAddr`, and `os::linux::raw::stat`
[INFO] [stdout]   --> src/middware/log.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     net::SocketAddr, os::linux::raw::stat, time::{Duration, Instant}
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^         ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> src/middware/log.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ip_address`
[INFO] [stdout]   --> src/middware/log.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 |         ip::{get_ip_address, get_ip_city},
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `File`
[INFO] [stdout]  --> src/store/lib.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 |         fs::{self, File},
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `body::Bytes`, `extract::Multipart`, and `http::HeaderMap`
[INFO] [stdout]  --> src/store/lib.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use axum::{body::Bytes, extract::Multipart, http::HeaderMap};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sync::LazyLock`
[INFO] [stdout]  --> src/handler/user.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{net::SocketAddr, sync::LazyLock};
[INFO] [stdout]   |                            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CONTENT_TYPE`, `ClientBuilder`, `Form`, `Proxy`, `REFERER`, `RequestBuilder`, `Request`, `USER_AGENT`, `self`, and `tls::Version`
[INFO] [stdout]   --> src/store/lib.rs:9:18
[INFO] [stdout]    |
[INFO] [stdout]  9 |         header::{CONTENT_TYPE, COOKIE, REFERER, USER_AGENT},
[INFO] [stdout]    |                  ^^^^^^^^^^^^          ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 10 |         multipart::{self, Form, Part},
[INFO] [stdout]    |                     ^^^^  ^^^^
[INFO] [stdout] 11 |         tls::Version,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 12 |         Client, ClientBuilder, Proxy, Request, RequestBuilder,
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]  --> src/store/local.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{AsyncWriteExt, BufWriter},
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `models::vo::file::SimpleFileVo`
[INFO] [stdout]  --> src/store/local.rs:8:77
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{config::upload::UploadConfig, handler::file::get_upload_config, models::vo::file::SimpleFileVo};
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `json`
[INFO] [stdout]  --> src/handler/user.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json::{json, Value};
[INFO] [stdout]   |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchQuery`
[INFO] [stdout]  --> src/search/client.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::{SearchQuery, SearchResponse};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blog::BlogRepository`
[INFO] [stdout]   --> src/handler/user.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |     }, repositorys::{blog::BlogRepository, topic::TopicRepository, user::UserRepository}, services::user::{UserCache, UserService}, utils...
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchPage`
[INFO] [stdout]   --> src/handler/blog.rs:13:61
[INFO] [stdout]    |
[INFO] [stdout] 13 |         result::{custom, ok, success, validate_error, Page, SearchPage},
[INFO] [stdout]    |                                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Page` and `vo::blog::BlogVo`
[INFO] [stdout]  --> src/handler/tag.rs:6:51
[INFO] [stdout]   |
[INFO] [stdout] 6 | ...uccess, Page}, models::{dto::{admin::{AdminCategoryRequest, AdminRequest}, blog::BlogQueryRequest}, tag::Tag, vo::blog::BlogVo, Model}...
[INFO] [stdout]   |            ^^^^                                                                                                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `info`
[INFO] [stdout]  --> src/handler/topic.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info,error};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `tag::TagRepository`, `tag::TagService`, `utils::date::get_now_timestamp`, and `vo::blog::BlogVo`
[INFO] [stdout]   --> src/handler/topic.rs:8:102
[INFO] [stdout]    |
[INFO] [stdout]  8 |     models::{dto::{admin::{AdminRequest, AdminTopicRequest}, blog::BlogQueryRequest}, user::JwtUser, vo::blog::BlogVo},
[INFO] [stdout]    |                                                                                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     repositorys::{tag::TagRepository, topic::TopicRepository},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     services::{tag::TagService, topic::TopicService}, utils::date::get_now_timestamp,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::user`
[INFO] [stdout]   --> src/handler/topic.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::user;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `email::EmailConfig`
[INFO] [stdout]   --> src/handler/file.rs:24:14
[INFO] [stdout]    |
[INFO] [stdout] 24 |     config::{email::EmailConfig, get_global_config, redis::RedisManager, upload::UploadConfig},
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Statistics`
[INFO] [stdout]  --> src/handler/console.rs:4:81
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{common::result::success, services::console::{get_system_statistics, Statistics, SystemInfo}};
[INFO] [stdout]   |                                                                                 ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/handler/beifen.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 |     extract::{Multipart, Path, Query},
[INFO] [stdout]   |                          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqlx::prelude::FromRow`
[INFO] [stdout]  --> src/models/dto/user.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sqlx::prelude::FromRow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::DateTime`
[INFO] [stdout]  --> src/models/dto/blog.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::DateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/models/vo/blog.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `UserVo`
[INFO] [stdout]  --> src/models/vo/admin.rs:4:78
[INFO] [stdout]   |
[INFO] [stdout] 4 | use super::{category::CategoryVo, topic::SimpleTopicVo, user::{SimpleUserVo, UserVo}};
[INFO] [stdout]   |                                                                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `jsonwebtoken::get_current_timestamp`
[INFO] [stdout]  --> src/models/files.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use jsonwebtoken::get_current_timestamp;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `UserVo`, `email`, and `self`
[INFO] [stdout]  --> src/repositorys/user.rs:6:28
[INFO] [stdout]   |
[INFO] [stdout] 6 |     config::{database::DB, email},
[INFO] [stdout]   |                            ^^^^^
[INFO] [stdout] 7 |     models::{
[INFO] [stdout] 8 |         dto::{admin::AdminRequest, user::UpdateUserRequest}, role::Role, user::{JwtUser, User}, vo::user::{AdminUserVo, UserVo}
[INFO] [stdout]   |                                                                                                                         ^^^^^^
[INFO] [stdout] 9 |     }, utils::{date::get_now_timestamp, pass::{self, hash_password}},
[INFO] [stdout]   |                                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]  --> src/repositorys/tag.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tracing::info;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdminTopicRequest`
[INFO] [stdout]  --> src/repositorys/topic.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 |             admin::{AdminRequest, AdminTopicRequest},
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Local`
[INFO] [stdout]  --> src/repositorys/other.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use chrono::{DateTime, Local};
[INFO] [stdout]   |              ^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Transaction`
[INFO] [stdout]  --> src/repositorys/other.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sqlx::{Pool, Postgres, Transaction};
[INFO] [stdout]   |                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `utils::date::get_now_timestamp`
[INFO] [stdout]  --> src/repositorys/other.rs:5:35
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::{config::database::DB, utils::date::get_now_timestamp};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemLogInfo` and `log`
[INFO] [stdout]   --> src/routes/user.rs:10:42
[INFO] [stdout]    |
[INFO] [stdout] 10 |     middware::{ip::ip_logger, jwt::auth, log}, SystemLogInfo,
[INFO] [stdout]    |                                          ^^^   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemLogInfo` and `log`
[INFO] [stdout]   --> src/routes/blog.rs:10:31
[INFO] [stdout]    |
[INFO] [stdout] 10 |     middware::{ip, jwt::auth, log}, SystemLogInfo,
[INFO] [stdout]    |                               ^^^   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/tag.rs:22:43
[INFO] [stdout]    |
[INFO] [stdout] 22 |     .layer(Extension(ADMIN_ROLE.clone()));;
[INFO] [stdout]    |                                           ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/tag.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     ;
[INFO] [stdout]    |     ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/routes/topic.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     ;
[INFO] [stdout]    |     ^ help: remove this semicolon
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `post` and `put`
[INFO] [stdout]  --> src/routes/console.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 |     routing::{get, post, put},
[INFO] [stdout]   |                    ^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get` and `put`
[INFO] [stdout]  --> src/routes/db.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 |     middleware, routing::{get, post, put}, Extension, Router
[INFO] [stdout]   |                           ^^^        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::format`
[INFO] [stdout]  --> src/services/lib.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 2 |     use std::fmt::format;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `console::SystemInfo` and `user::UserCache`
[INFO] [stdout]  --> src/services/lib.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use crate::services::{console::SystemInfo, user::UserCache};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SystemTime` and `UNIX_EPOCH`
[INFO] [stdout]  --> src/services/blog.rs:1:40
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, time::{SystemTime, UNIX_EPOCH}};
[INFO] [stdout]   |                                        ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `axum::http::response`
[INFO] [stdout]  --> src/services/blog.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use axum::http::response;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RedisResult`
[INFO] [stdout]  --> src/services/blog.rs:6:40
[INFO] [stdout]   |
[INFO] [stdout] 6 | use redis::{AsyncCommands, RedisError, RedisResult};
[INFO] [stdout]   |                                        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blog::BlogRepository`
[INFO] [stdout]   --> src/services/file.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |     }, repositorys::{blog::BlogRepository, file::FileRepository}, store::local::save_file_to_local, utils::{get_file_extension, pass::cal...
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DateTime` and `Local`
[INFO] [stdout]  --> src/services/console.rs:7:14
[INFO] [stdout]   |
[INFO] [stdout] 7 | use chrono::{DateTime, Days, Local, Months, NaiveDateTime};
[INFO] [stdout]   |              ^^^^^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/services/console.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::date::get_now_timestamp`
[INFO] [stdout]    --> src/services/console.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 282 | use crate::utils::date::get_now_timestamp;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `fs` and `path::Path`
[INFO] [stdout]  --> src/utils/lib.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 |     use std::{fs, path::Path};
[INFO] [stdout]   |               ^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_file_extension` and `ua::get_client_platform_info`
[INFO] [stdout]  --> src/utils/lib.rs:4:24
[INFO] [stdout]   |
[INFO] [stdout] 4 |     use crate::utils::{get_file_extension, ua::get_client_platform_info};
[INFO] [stdout]   |                        ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Bytes`, `FromRequest`, `Json`, `RequestExt`, `http`, and `to_bytes`
[INFO] [stdout]  --> src/middware/log.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 |     body::{to_bytes, Body, Bytes},
[INFO] [stdout]   |            ^^^^^^^^        ^^^^^
[INFO] [stdout] 3 |     extract::{FromRequest, OriginalUri, Request, State},
[INFO] [stdout]   |               ^^^^^^^^^^^
[INFO] [stdout] 4 |     http,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 7 |     Json, RequestExt,
[INFO] [stdout]   |     ^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `reqwest::header::CONTENT_TYPE`
[INFO] [stdout]  --> src/middware/log.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use reqwest::header::CONTENT_TYPE;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]   --> src/middware/log.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use serde_json::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Duration`, `Instant`, `net::SocketAddr`, and `os::linux::raw::stat`
[INFO] [stdout]   --> src/middware/log.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     net::SocketAddr, os::linux::raw::stat, time::{Duration, Instant}
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^         ^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tracing::info`
[INFO] [stdout]   --> src/middware/log.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::info;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ip_address`
[INFO] [stdout]   --> src/middware/log.rs:20:14
[INFO] [stdout]    |
[INFO] [stdout] 20 |         ip::{get_ip_address, get_ip_city},
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `File` and `self`
[INFO] [stdout]  --> src/store/lib.rs:3:14
[INFO] [stdout]   |
[INFO] [stdout] 3 |         fs::{self, File},
[INFO] [stdout]   |              ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `body::Bytes`, `extract::Multipart`, and `http::HeaderMap`
[INFO] [stdout]  --> src/store/lib.rs:7:16
[INFO] [stdout]   |
[INFO] [stdout] 7 |     use axum::{body::Bytes, extract::Multipart, http::HeaderMap};
[INFO] [stdout]   |                ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CONTENT_TYPE`, `ClientBuilder`, `Form`, `Proxy`, `REFERER`, `RequestBuilder`, `Request`, `USER_AGENT`, `self`, and `tls::Version`
[INFO] [stdout]   --> src/store/lib.rs:9:18
[INFO] [stdout]    |
[INFO] [stdout]  9 |         header::{CONTENT_TYPE, COOKIE, REFERER, USER_AGENT},
[INFO] [stdout]    |                  ^^^^^^^^^^^^          ^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 10 |         multipart::{self, Form, Part},
[INFO] [stdout]    |                     ^^^^  ^^^^
[INFO] [stdout] 11 |         tls::Version,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 12 |         Client, ClientBuilder, Proxy, Request, RequestBuilder,
[INFO] [stdout]    |                 ^^^^^^^^^^^^^  ^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufWriter`
[INFO] [stdout]  --> src/store/local.rs:4:25
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{AsyncWriteExt, BufWriter},
[INFO] [stdout]   |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `models::vo::file::SimpleFileVo`
[INFO] [stdout]  --> src/store/local.rs:8:77
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::{config::upload::UploadConfig, handler::file::get_upload_config, models::vo::file::SimpleFileVo};
[INFO] [stdout]   |                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SearchQuery`
[INFO] [stdout]  --> src/search/client.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::{SearchQuery, SearchResponse};
[INFO] [stdout]   |             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `std::os::linux::raw::stat`: these type aliases are no longer supported by the standard library, the `libc` crate on crates.io should be used instead for the correct definitions
[INFO] [stdout]   --> src/middware/log.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 |     net::SocketAddr, os::linux::raw::stat, time::{Duration, Instant}
[INFO] [stdout]    |                                      ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated struct `std::os::linux::raw::stat`: these type aliases are no longer supported by the standard library, the `libc` crate on crates.io should be used instead for the correct definitions
[INFO] [stdout]   --> src/middware/log.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 |     net::SocketAddr, os::linux::raw::stat, time::{Duration, Instant}
[INFO] [stdout]    |                                      ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this function depends on never type fallback being `()`
[INFO] [stdout]    --> src/services/blog.rs:458:5
[INFO] [stdout]     |
[INFO] [stdout] 458 |     pub async fn update_eye_count_pv()-> Result<(), RedisError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/never-type-fallback.html>
[INFO] [stdout]     = help: specify the types explicitly
[INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail
[INFO] [stdout]    --> src/services/blog.rs:459:44
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let _ = REDIS.get().await.unwrap().incr(EYE_VIEW_PV, 1).await?;
[INFO] [stdout]     |                                            ^^^^
[INFO] [stdout]     = note: `#[warn(dependency_on_unit_never_type_fallback)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `()` annotations to avoid fallback changes
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let _: () = REDIS.get().await.unwrap().incr(EYE_VIEW_PV, 1).await?;
[INFO] [stdout]     |              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this function depends on never type fallback being `()`
[INFO] [stdout]    --> src/services/blog.rs:458:5
[INFO] [stdout]     |
[INFO] [stdout] 458 |     pub async fn update_eye_count_pv()-> Result<(), RedisError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in Rust 2024 and in a future release in all editions!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/never-type-fallback.html>
[INFO] [stdout]     = help: specify the types explicitly
[INFO] [stdout] note: in edition 2024, the requirement `!: FromRedisValue` will fail
[INFO] [stdout]    --> src/services/blog.rs:459:44
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let _ = REDIS.get().await.unwrap().incr(EYE_VIEW_PV, 1).await?;
[INFO] [stdout]     |                                            ^^^^
[INFO] [stdout]     = note: `#[warn(dependency_on_unit_never_type_fallback)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] help: use `()` annotations to avoid fallback changes
[INFO] [stdout]     |
[INFO] [stdout] 459 |         let _: () = REDIS.get().await.unwrap().incr(EYE_VIEW_PV, 1).await?;
[INFO] [stdout]     |              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/handler/file.rs:67:31
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub async fn upload_image(mut multipart: Multipart) -> Json<Value> {
[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/handler/file.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |         mut multipart: Multipart,
[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/handler/file.rs:93:32
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub async fn upload_avatar(mut multipart: Multipart) -> Json<Value> {
[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/handler/file.rs:67:31
[INFO] [stdout]    |
[INFO] [stdout] 67 |     pub async fn upload_image(mut multipart: Multipart) -> Json<Value> {
[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/handler/file.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 85 |         mut multipart: Multipart,
[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/handler/file.rs:93:32
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub async fn upload_avatar(mut multipart: Multipart) -> Json<Value> {
[INFO] [stdout]    |                                ----^^^^^^^^^
[INFO] [stdout]    |                                |
[INFO] [stdout]    |                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDateTime::timestamp`: use `.and_utc().timestamp()` instead
[INFO] [stdout]    --> src/services/console.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 |         .timestamp();
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `chrono::NaiveDateTime::timestamp`: use `.and_utc().timestamp()` instead
[INFO] [stdout]    --> src/services/console.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 |         .timestamp();
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/handler/beifen.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io::Write};
[INFO] [stdout]   |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Read`
[INFO] [stdout]  --> src/store/lib.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |         io::Read,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Write`
[INFO] [stdout]  --> src/handler/beifen.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io::Write};
[INFO] [stdout]   |                                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io::Read`
[INFO] [stdout]  --> src/store/lib.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 |         io::Read,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]   --> src/search/client.rs:51:39
[INFO] [stdout]    |
[INFO] [stdout] 51 |         request.send().await.map_err(|err| {
[INFO] [stdout]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/services/blog.rs:398:17
[INFO] [stdout]     |
[INFO] [stdout] 398 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]   --> src/search/client.rs:51:39
[INFO] [stdout]    |
[INFO] [stdout] 51 |         request.send().await.map_err(|err| {
[INFO] [stdout]    |                                       ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `err`
[INFO] [stdout]    --> src/services/blog.rs:398:17
[INFO] [stdout]     |
[INFO] [stdout] 398 |             Err(err) => {
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output2`
[INFO] [stdout]    --> src/handler/beifen.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |             let output2 = tokio::process::Command::new("sh")
[INFO] [stdout]     |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output2`
[INFO] [stdout]    --> src/handler/beifen.rs:147:17
[INFO] [stdout]     |
[INFO] [stdout] 147 |             let output2 = tokio::process::Command::new("sh")
[INFO] [stdout]     |                 ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_output2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/services/token.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let mut validation = Validation::new(Algorithm::HS256);
[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/token.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let mut validation = Validation::new(Algorithm::HS256);
[INFO] [stdout]    |         ----^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]   --> src/store/lib.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let response = client
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `response`
[INFO] [stdout]   --> src/store/lib.rs:29:13
[INFO] [stdout]    |
[INFO] [stdout] 29 |         let response = client
[INFO] [stdout]    |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_response`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Claims` is more private than the item `parse_token`
[INFO] [stdout]   --> src/services/token.rs:60:1
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn parse_token(token: &str) -> Result<Claims, Error> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `parse_token` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Claims` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/services/token.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Claims {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `deleted_at` is never read
[INFO] [stdout]   --> src/models/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Model{
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub deleted_at:Option<i64>
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Model` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Role` is never constructed
[INFO] [stdout]  --> src/models/role.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Role{
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `login_ip`, `login_city`, `reg_time`, and `last_login` are never read
[INFO] [stdout]   --> src/models/user.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct User {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub id: i64,       
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub login_ip: Option<String>, 
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 29 |     #[sqlx(rename="login_city")]
[INFO] [stdout] 30 |     pub login_city: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub reg_time: Option<i64>,    
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     #[sqlx(rename="last_login")]
[INFO] [stdout] 38 |     pub last_login: Option<i64>,  
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RoleCreate` is never constructed
[INFO] [stdout]   --> src/models/dto/user.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct RoleCreate {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_role_model` is never used
[INFO] [stdout]   --> src/models/dto/user.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl RoleCreate {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 17 |     pub fn to_role_model(&self) -> Role {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `order` is never read
[INFO] [stdout]   --> src/models/blog.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Blog {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub order: Option<i64>,            
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Blog` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/models/files.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct FileInfo{
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 21 |     pub model:Model,
[INFO] [stdout] 22 |     pub id:i64,
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `add_role` is never used
[INFO] [stdout]    --> src/repositorys/user.rs:160:18
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl UserRepository {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn add_role(role: Role) -> Result<Role, Error> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/common/result.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl Page<()>{
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn new<T>(page:i32,size:i32,total:i64,list:Vec<T>)->Page<T>{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_tar_gz` is never used
[INFO] [stdout]   --> src/services/file.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn create_tar_gz(source_dir: &str, output_file: &str) -> std::io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/utils/ua.rs:86:4
[INFO] [stdout]    |
[INFO] [stdout] 86 | fn main() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemLog` is never constructed
[INFO] [stdout]   --> src/middware/log.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SystemLog {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `system_logger` is never used
[INFO] [stdout]   --> src/middware/log.rs:46:14
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub async fn system_logger(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]   --> src/search/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct SearchQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/search/mod.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl SearchQuery {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  48 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn set_attributes_to_highlight(mut self, highlight: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn set_show_matches_position(mut self, show: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn set_q(mut self, q: String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn set_offset(mut self, offset: i64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn set_limit(mut self, limit: i64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_highlight_pre_tag(mut self, highlight_pre_tag: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set_highlight_post_tag(mut self, highlight_post_tag: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_sort(mut self, sort: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn build(self) -> SearchQuery {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_index` and `drop_index` are never used
[INFO] [stdout]   --> src/search/client.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MeiliSearchClient {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub async fn create_index(&self, index: &str) -> Result<(), Value> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub async fn drop_index(&self, index: &str) -> Result<(), Value> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `Claims` is more private than the item `parse_token`
[INFO] [stdout]   --> src/services/token.rs:60:1
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn parse_token(token: &str) -> Result<Claims, Error> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ function `parse_token` is reachable at visibility `pub(crate)`
[INFO] [stdout]    |
[INFO] [stdout] note: but type `Claims` is only usable at visibility `pub(self)`
[INFO] [stdout]   --> src/services/token.rs:9:1
[INFO] [stdout]    |
[INFO] [stdout]  9 | struct Claims {
[INFO] [stdout]    | ^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `deleted_at` is never read
[INFO] [stdout]   --> src/models/mod.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Model{
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub deleted_at:Option<i64>
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Model` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Role` is never constructed
[INFO] [stdout]  --> src/models/role.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Role{
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `login_ip`, `login_city`, `reg_time`, and `last_login` are never read
[INFO] [stdout]   --> src/models/user.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct User {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub id: i64,       
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub login_ip: Option<String>, 
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 29 |     #[sqlx(rename="login_city")]
[INFO] [stdout] 30 |     pub login_city: Option<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub reg_time: Option<i64>,    
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     #[sqlx(rename="last_login")]
[INFO] [stdout] 38 |     pub last_login: Option<i64>,  
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RoleCreate` is never constructed
[INFO] [stdout]   --> src/models/dto/user.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct RoleCreate {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_role_model` is never used
[INFO] [stdout]   --> src/models/dto/user.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl RoleCreate {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 17 |     pub fn to_role_model(&self) -> Role {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `order` is never read
[INFO] [stdout]   --> src/models/blog.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Blog {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub order: Option<i64>,            
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Blog` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/models/files.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct FileInfo{
[INFO] [stdout]    |            -------- field in this struct
[INFO] [stdout] 21 |     pub model:Model,
[INFO] [stdout] 22 |     pub id:i64,
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `FileInfo` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `add_role` is never used
[INFO] [stdout]    --> src/repositorys/user.rs:160:18
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl UserRepository {
[INFO] [stdout]     | ------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub async fn add_role(role: Role) -> Result<Role, Error> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/common/result.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl Page<()>{
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn new<T>(page:i32,size:i32,total:i64,list:Vec<T>)->Page<T>{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_tar_gz` is never used
[INFO] [stdout]   --> src/services/file.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn create_tar_gz(source_dir: &str, output_file: &str) -> std::io::Result<()> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `main` is never used
[INFO] [stdout]   --> src/utils/ua.rs:86:4
[INFO] [stdout]    |
[INFO] [stdout] 86 | fn main() {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemLog` is never constructed
[INFO] [stdout]   --> src/middware/log.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct SystemLog {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `system_logger` is never used
[INFO] [stdout]   --> src/middware/log.rs:46:14
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub async fn system_logger(
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `upload` is never used
[INFO] [stdout]   --> src/store/lib.rs:15:14
[INFO] [stdout]    |
[INFO] [stdout] 15 |     async fn upload(buff: Vec<u8>, token: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SearchQuery` is never constructed
[INFO] [stdout]   --> src/search/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct SearchQuery {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/search/mod.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  47 | impl SearchQuery {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  48 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn set_attributes_to_highlight(mut self, highlight: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn set_show_matches_position(mut self, show: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn set_q(mut self, q: String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn set_offset(mut self, offset: i64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn set_limit(mut self, limit: i64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn set_highlight_pre_tag(mut self, highlight_pre_tag: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn set_highlight_post_tag(mut self, highlight_post_tag: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_sort(mut self, sort: Vec<String>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn build(self) -> SearchQuery {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `create_index` and `drop_index` are never used
[INFO] [stdout]   --> src/search/client.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl MeiliSearchClient {
[INFO] [stdout]    | ---------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub async fn create_index(&self, index: &str) -> Result<(), Value> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 67 |     pub async fn drop_index(&self, index: &str) -> Result<(), Value> {
[INFO] [stdout]    |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 25s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: blog_rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "36c7506dc4479e9e5aa5c6e30de80fd445cf5f830729652b4dab65cc7bb8dc7f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "36c7506dc4479e9e5aa5c6e30de80fd445cf5f830729652b4dab65cc7bb8dc7f", kill_on_drop: false }`
[INFO] [stdout] 36c7506dc4479e9e5aa5c6e30de80fd445cf5f830729652b4dab65cc7bb8dc7f
