[INFO] cloning repository https://github.com/Bit-Zero0/NexusCode_Blog_backend
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Bit-Zero0/NexusCode_Blog_backend" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBit-Zero0%2FNexusCode_Blog_backend", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBit-Zero0%2FNexusCode_Blog_backend'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 8aa605acf7ad732936700253257effc5cbf8365c
[INFO] checking Bit-Zero0/NexusCode_Blog_backend against master#779e19d8baa3e3625bd4fc5c85cbb2ad47b43155 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBit-Zero0%2FNexusCode_Blog_backend" "/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/Bit-Zero0/NexusCode_Blog_backend
[INFO] finished tweaking git repo https://github.com/Bit-Zero0/NexusCode_Blog_backend
[INFO] tweaked toml for git repo https://github.com/Bit-Zero0/NexusCode_Blog_backend written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Bit-Zero0/NexusCode_Blog_backend 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/Bit-Zero0/NexusCode_Blog_backend 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 getopts v0.2.23
[INFO] [stderr]   Downloaded deunicode v1.6.2
[INFO] [stderr]   Downloaded pulldown-cmark v0.11.3
[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] 0230e1ae3c388e07791bda8294754577efc625316272cd68695d9f67ebcd09ff
[INFO] running `Command { std: "docker" "start" "-a" "0230e1ae3c388e07791bda8294754577efc625316272cd68695d9f67ebcd09ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0230e1ae3c388e07791bda8294754577efc625316272cd68695d9f67ebcd09ff", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0230e1ae3c388e07791bda8294754577efc625316272cd68695d9f67ebcd09ff", kill_on_drop: false }`
[INFO] [stdout] 0230e1ae3c388e07791bda8294754577efc625316272cd68695d9f67ebcd09ff
[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] 3b31502eb0f81b4a2f2cc644a5ba6d8324bca1a0ab072ca1f51dc9336ac8b896
[INFO] running `Command { std: "docker" "start" "-a" "3b31502eb0f81b4a2f2cc644a5ba6d8324bca1a0ab072ca1f51dc9336ac8b896", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling zerovec v0.11.2
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling slab v0.4.10
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling uuid v1.17.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling whoami v1.6.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]    Compiling pulldown-cmark v0.11.3
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]     Checking getopts v0.2.23
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking deunicode v1.6.2
[INFO] [stderr]     Checking unicase v2.8.1
[INFO] [stderr]     Checking pulldown-cmark-escape v0.11.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking slug v0.1.6
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking hyper-util v0.1.14
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]    Compiling sqlx-postgres v0.7.4
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking nexuscode_blog_backend v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 27 | |         Category,
[INFO] [stdout] 28 | |         "INSERT INTO categories (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] 30 | |         slug
[INFO] [stdout] 31 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:43:22
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let categories = sqlx::query_as!(Category, "SELECT * FROM categories")
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let category = sqlx::query_as!(Category, "SELECT * FROM categories WHERE id = $1", id)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 79 | |         Category,
[INFO] [stdout] 80 | |         "UPDATE categories SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 81 | |         payload.name,
[INFO] [stdout] 82 | |         slug,
[INFO] [stdout] 83 | |         id
[INFO] [stdout] 84 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/category_handler.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let result = sqlx::query!("DELETE FROM categories WHERE id = $1", id)
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 27 | |         Tag,
[INFO] [stdout] 28 | |         "INSERT INTO tags (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] 30 | |         slug
[INFO] [stdout] 31 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let tags = sqlx::query_as!(Tag, "SELECT * FROM tags")
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let tag = sqlx::query_as!(Tag, "SELECT * FROM tags WHERE id = $1", id)
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 76 | |         Tag,
[INFO] [stdout] 77 | |         "UPDATE tags SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 78 | |         payload.name,
[INFO] [stdout] 79 | |         slug,
[INFO] [stdout] 80 | |         id
[INFO] [stdout] 81 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let result = sqlx::query!("DELETE FROM tags WHERE id = $1", id)
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 41 | |          Post,
[INFO] [stdout] 42 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 43 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:56:16
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let post = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 57 | |         Post,
[INFO] [stdout] 58 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 59 | |         id
[INFO] [stdout] 60 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:67:22
[INFO] [stdout]    |
[INFO] [stdout] 67 |       let categories = sqlx::query_as!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 68 | |         Category,
[INFO] [stdout] 69 | |         r#"
[INFO] [stdout] 70 | |         SELECT c.id, c.name, c.slug FROM categories c
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         id
[INFO] [stdout] 75 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:81:16
[INFO] [stdout]    |
[INFO] [stdout] 81 |       let tags = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 82 | |         Tag,
[INFO] [stdout] 83 | |         r#"
[INFO] [stdout] 84 | |         SELECT t.id, t.name, t.slug FROM tags t
[INFO] [stdout] ...  |
[INFO] [stdout] 88 | |         id
[INFO] [stdout] 89 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:95:19
[INFO] [stdout]    |
[INFO] [stdout] 95 |       let anchors = sqlx::query_as!(
[INFO] [stdout]    |  ___________________^
[INFO] [stdout] 96 | |         Anchor,
[INFO] [stdout] 97 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 98 | |         id
[INFO] [stdout] 99 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |     let result = sqlx::query!("DELETE FROM posts WHERE id = $1", id)
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |       let related_drafts = sqlx::query_as!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 176 | |         Post,
[INFO] [stdout] 177 | |         r#"
[INFO] [stdout] 178 | |         SELECT DISTINCT
[INFO] [stdout] ...   |
[INFO] [stdout] 187 | |         id
[INFO] [stdout] 188 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:208:5
[INFO] [stdout]     |
[INFO] [stdout] 208 | /     sqlx::query!(
[INFO] [stdout] 209 | |         r#"
[INFO] [stdout] 210 | |         UPDATE posts
[INFO] [stdout] 211 | |         SET status = 'published', published_at = now()
[INFO] [stdout] ...   |
[INFO] [stdout] 214 | |         &payload.post_ids
[INFO] [stdout] 215 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/public_handler.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 40 | |         Post,
[INFO] [stdout] 41 | |         r#"
[INFO] [stdout] 42 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] 43 | |         FROM posts WHERE status = 'published' ORDER BY published_at DESC
[INFO] [stdout] 44 | |         "#
[INFO] [stdout] 45 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:104:16
[INFO] [stdout]     |
[INFO] [stdout] 104 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 105 | |          Post,
[INFO] [stdout] 106 | |         r#"
[INFO] [stdout] 107 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         slug
[INFO] [stdout] 112 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 27 | |         Category,
[INFO] [stdout] 28 | |         "INSERT INTO categories (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] 30 | |         slug
[INFO] [stdout] 31 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:43:22
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let categories = sqlx::query_as!(Category, "SELECT * FROM categories")
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:119:22
[INFO] [stdout]     |
[INFO] [stdout] 119 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 120 | |         Category,
[INFO] [stdout] 121 | |         "SELECT c.id, c.name, c.slug FROM categories c JOIN post_categories pc ON c.id = pc.category_id WHERE pc.post_id = $1",
[INFO] [stdout] 122 | |         post.id
[INFO] [stdout] 123 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let category = sqlx::query_as!(Category, "SELECT * FROM categories WHERE id = $1", id)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:125:16
[INFO] [stdout]     |
[INFO] [stdout] 125 |       let tags = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 126 | |         Tag,
[INFO] [stdout] 127 | |         "SELECT t.id, t.name, t.slug FROM tags t JOIN post_tags pt ON t.id = pt.tag_id WHERE pt.post_id = $1",
[INFO] [stdout] 128 | |         post.id
[INFO] [stdout] 129 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:132:19
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 133 | |         Anchor,
[INFO] [stdout] 134 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 135 | |         post.id
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/category_handler.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 79 | |         Category,
[INFO] [stdout] 80 | |         "UPDATE categories SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 81 | |         payload.name,
[INFO] [stdout] 82 | |         slug,
[INFO] [stdout] 83 | |         id
[INFO] [stdout] 84 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/category_handler.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let result = sqlx::query!("DELETE FROM categories WHERE id = $1", id)
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:164:31
[INFO] [stdout]     |
[INFO] [stdout] 164 |     let target_anchor = match sqlx::query_as!(Anchor, "SELECT * FROM anchors WHERE id = $1", id)
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |       let backlinks = sqlx::query_as!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 172 | |         Backlink,
[INFO] [stdout] 173 | |         r#"
[INFO] [stdout] 174 | |         SELECT
[INFO] [stdout] ...   |
[INFO] [stdout] 187 | |         target_anchor.post_id
[INFO] [stdout] 188 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 27 | |         Tag,
[INFO] [stdout] 28 | |         "INSERT INTO tags (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] 30 | |         slug
[INFO] [stdout] 31 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 |     let tags = sqlx::query_as!(Tag, "SELECT * FROM tags")
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let tag = sqlx::query_as!(Tag, "SELECT * FROM tags WHERE id = $1", id)
[INFO] [stdout]    |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 215 | |         Category,
[INFO] [stdout] 216 | |         r#"
[INFO] [stdout] 217 | |         SELECT DISTINCT c.id, c.name, c.slug
[INFO] [stdout] ...   |
[INFO] [stdout] 223 | |         "#
[INFO] [stdout] 224 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 76 | |         Tag,
[INFO] [stdout] 77 | |         "UPDATE tags SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 78 | |         payload.name,
[INFO] [stdout] 79 | |         slug,
[INFO] [stdout] 80 | |         id
[INFO] [stdout] 81 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/tag_handler.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let result = sqlx::query!("DELETE FROM tags WHERE id = $1", id)
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 41 | |          Post,
[INFO] [stdout] 42 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 43 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:56:16
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let post = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 57 | |         Post,
[INFO] [stdout] 58 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 59 | |         id
[INFO] [stdout] 60 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:67:22
[INFO] [stdout]    |
[INFO] [stdout] 67 |       let categories = sqlx::query_as!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 68 | |         Category,
[INFO] [stdout] 69 | |         r#"
[INFO] [stdout] 70 | |         SELECT c.id, c.name, c.slug FROM categories c
[INFO] [stdout] ...  |
[INFO] [stdout] 74 | |         id
[INFO] [stdout] 75 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:81:16
[INFO] [stdout]    |
[INFO] [stdout] 81 |       let tags = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 82 | |         Tag,
[INFO] [stdout] 83 | |         r#"
[INFO] [stdout] 84 | |         SELECT t.id, t.name, t.slug FROM tags t
[INFO] [stdout] ...  |
[INFO] [stdout] 88 | |         id
[INFO] [stdout] 89 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/post_handler.rs:95:19
[INFO] [stdout]    |
[INFO] [stdout] 95 |       let anchors = sqlx::query_as!(
[INFO] [stdout]    |  ___________________^
[INFO] [stdout] 96 | |         Anchor,
[INFO] [stdout] 97 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 98 | |         id
[INFO] [stdout] 99 | |     )
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |     let result = sqlx::query!("DELETE FROM posts WHERE id = $1", id)
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |       let related_drafts = sqlx::query_as!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 176 | |         Post,
[INFO] [stdout] 177 | |         r#"
[INFO] [stdout] 178 | |         SELECT DISTINCT
[INFO] [stdout] ...   |
[INFO] [stdout] 187 | |         id
[INFO] [stdout] 188 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/post_handler.rs:208:5
[INFO] [stdout]     |
[INFO] [stdout] 208 | /     sqlx::query!(
[INFO] [stdout] 209 | |         r#"
[INFO] [stdout] 210 | |         UPDATE posts
[INFO] [stdout] 211 | |         SET status = 'published', published_at = now()
[INFO] [stdout] ...   |
[INFO] [stdout] 214 | |         &payload.post_ids
[INFO] [stdout] 215 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/services/post_service.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/services/post_service.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | ...ch sqlx::query_as!(Post, r#"SELECT id, title, slug, content_markdown, status AS "status: _", created_at, updated_at, published_at , cover_image_url FROM posts WHERE slug = $1 AND status = 'published'"#, post_slug)
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 | ...   sqlx::query!("INSERT INTO links (source_anchor_id, target_anchor_id) VALUES ($1, $2) ON CONFLICT DO NOTHING", source_anchor_id, target_anchor_id).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 133 | |         Post,
[INFO] [stdout] 134 | |         r#"
[INFO] [stdout] 135 | |         INSERT INTO posts (title, slug, content_markdown, cover_image_url) VALUES ($1, $2, $3, $4)
[INFO] [stdout] ...   |
[INFO] [stdout] 141 | |         payload.cover_image_url
[INFO] [stdout] 142 | |     ).fetch_one(&mut *tx).await?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:144:48
[INFO] [stdout]     |
[INFO] [stdout] 144 | ...category_ids { sqlx::query!("INSERT INTO post_categories (post_id, category_id) VALUES ($1, $2)", post.id, category_id).execute(&mut *...
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:145:38
[INFO] [stdout]     |
[INFO] [stdout] 145 |     for tag_id in &payload.tag_ids { sqlx::query!("INSERT INTO post_tags (post_id, tag_id) VALUES ($1, $2)", post.id, tag_id).execute(&mu...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:146:23
[INFO] [stdout]     |
[INFO] [stdout] 146 | ... = sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, 'root', $2, 'root', 0) RETURNING id", post.id, post.title).fe...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:149:37
[INFO] [stdout]     |
[INFO] [stdout] 149 | ... { sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, $2, $3, $4, $5)", post.id, anchor.anchor_type, anchor.text, anchor.slug, anchor.level).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | /     sqlx::query!(
[INFO] [stdout] 162 | |         "UPDATE posts SET title = $1, slug = $2, content_markdown = $3, cover_image_url = $4, updated_at = now() WHERE id = $5",
[INFO] [stdout] 163 | |         payload.title,
[INFO] [stdout] 164 | |         new_slug,
[INFO] [stdout] ...   |
[INFO] [stdout] 167 | |         post_id
[INFO] [stdout] 168 | |     ).execute(&mut *tx).await?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     sqlx::query!("DELETE FROM post_categories WHERE post_id = $1", post_id).execute(&mut *tx).await?;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:171:48
[INFO] [stdout]     |
[INFO] [stdout] 171 | ...category_ids { sqlx::query!("INSERT INTO post_categories (post_id, category_id) VALUES ($1, $2)", post_id, category_id).execute(&mut *...
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 |     sqlx::query!("DELETE FROM post_tags WHERE post_id = $1", post_id).execute(&mut *tx).await?;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:173:38
[INFO] [stdout]     |
[INFO] [stdout] 173 |     for tag_id in &payload.tag_ids { sqlx::query!("INSERT INTO post_tags (post_id, tag_id) VALUES ($1, $2)", post_id, tag_id).execute(&mu...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:182:36
[INFO] [stdout]     |
[INFO] [stdout] 182 | ... { sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, $2, $3, $4, $5)", post_id, anchor.anchor_type, anchor.text, anchor.slug, anchor.level).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:190:23
[INFO] [stdout]     |
[INFO] [stdout] 190 | ...r = sqlx::query!("UPDATE anchors SET text = $1 WHERE post_id = $2 AND anchor_type = 'root' RETURNING id", payload.title, post_id).fetc...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/handlers/public_handler.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 40 | |         Post,
[INFO] [stdout] 41 | |         r#"
[INFO] [stdout] 42 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] 43 | |         FROM posts WHERE status = 'published' ORDER BY published_at DESC
[INFO] [stdout] 44 | |         "#
[INFO] [stdout] 45 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    | |_____^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:104:16
[INFO] [stdout]     |
[INFO] [stdout] 104 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 105 | |          Post,
[INFO] [stdout] 106 | |         r#"
[INFO] [stdout] 107 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] ...   |
[INFO] [stdout] 111 | |         slug
[INFO] [stdout] 112 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Category`
[INFO] [stdout]   --> src/handlers/category_handler.rs:10:30
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::category_model::{Category, CreateCategory, UpdateCategory},
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:119:22
[INFO] [stdout]     |
[INFO] [stdout] 119 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 120 | |         Category,
[INFO] [stdout] 121 | |         "SELECT c.id, c.name, c.slug FROM categories c JOIN post_categories pc ON c.id = pc.category_id WHERE pc.post_id = $1",
[INFO] [stdout] 122 | |         post.id
[INFO] [stdout] 123 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Tag`
[INFO] [stdout]   --> src/handlers/tag_handler.rs:10:36
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::tag_model::{CreateTag, Tag, UpdateTag},
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:125:16
[INFO] [stdout]     |
[INFO] [stdout] 125 |       let tags = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 126 | |         Tag,
[INFO] [stdout] 127 | |         "SELECT t.id, t.name, t.slug FROM tags t JOIN post_tags pt ON t.id = pt.tag_id WHERE pt.post_id = $1",
[INFO] [stdout] 128 | |         post.id
[INFO] [stdout] 129 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:132:19
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 133 | |         Anchor,
[INFO] [stdout] 134 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 135 | |         post.id
[INFO] [stdout] 136 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Post`, `anchor_model::Anchor`, `category_model::Category`, and `tag_model::Tag`
[INFO] [stdout]   --> src/handlers/post_handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     category_model::Category,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     anchor_model::Anchor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     post_model::{CreatePostRequest, Post, PostDetailResponse, UpdatePostRequest}, // 移除了未使用的 UpdatePostRequest
[INFO] [stdout]    |                                     ^^^^
[INFO] [stdout] 16 |     tag_model::Tag,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:164:31
[INFO] [stdout]     |
[INFO] [stdout] 164 |     let target_anchor = match sqlx::query_as!(Anchor, "SELECT * FROM anchors WHERE id = $1", id)
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Anchor`
[INFO] [stdout]  --> src/handlers/public_handler.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::anchor_model::{Anchor, Backlink};
[INFO] [stdout]   |                                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Post`
[INFO] [stdout]   --> src/handlers/public_handler.rs:10:70
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::post_model::{PostDetailResponse, PublicPostListResponse, Post},
[INFO] [stdout]    |                                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |       let backlinks = sqlx::query_as!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 172 | |         Backlink,
[INFO] [stdout] 173 | |         r#"
[INFO] [stdout] 174 | |         SELECT
[INFO] [stdout] ...   |
[INFO] [stdout] 187 | |         target_anchor.post_id
[INFO] [stdout] 188 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/handlers/public_handler.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 215 | |         Category,
[INFO] [stdout] 216 | |         r#"
[INFO] [stdout] 217 | |         SELECT DISTINCT c.id, c.name, c.slug
[INFO] [stdout] ...   |
[INFO] [stdout] 223 | |         "#
[INFO] [stdout] 224 | |     )
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/services/post_service.rs:20:20
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]   --> src/services/post_service.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 | ...ch sqlx::query_as!(Post, r#"SELECT id, title, slug, content_markdown, status AS "status: _", created_at, updated_at, published_at , cover_image_url FROM posts WHERE slug = $1 AND status = 'published'"#, post_slug)
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:120:13
[INFO] [stdout]     |
[INFO] [stdout] 120 | ...   sqlx::query!("INSERT INTO links (source_anchor_id, target_anchor_id) VALUES ($1, $2) ON CONFLICT DO NOTHING", source_anchor_id, target_anchor_id).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:132:16
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 133 | |         Post,
[INFO] [stdout] 134 | |         r#"
[INFO] [stdout] 135 | |         INSERT INTO posts (title, slug, content_markdown, cover_image_url) VALUES ($1, $2, $3, $4)
[INFO] [stdout] ...   |
[INFO] [stdout] 141 | |         payload.cover_image_url
[INFO] [stdout] 142 | |     ).fetch_one(&mut *tx).await?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query_as` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:144:48
[INFO] [stdout]     |
[INFO] [stdout] 144 | ...category_ids { sqlx::query!("INSERT INTO post_categories (post_id, category_id) VALUES ($1, $2)", post.id, category_id).execute(&mut *...
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:145:38
[INFO] [stdout]     |
[INFO] [stdout] 145 |     for tag_id in &payload.tag_ids { sqlx::query!("INSERT INTO post_tags (post_id, tag_id) VALUES ($1, $2)", post.id, tag_id).execute(&mu...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:146:23
[INFO] [stdout]     |
[INFO] [stdout] 146 | ... = sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, 'root', $2, 'root', 0) RETURNING id", post.id, post.title).fe...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:149:37
[INFO] [stdout]     |
[INFO] [stdout] 149 | ... { sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, $2, $3, $4, $5)", post.id, anchor.anchor_type, anchor.text, anchor.slug, anchor.level).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | /     sqlx::query!(
[INFO] [stdout] 162 | |         "UPDATE posts SET title = $1, slug = $2, content_markdown = $3, cover_image_url = $4, updated_at = now() WHERE id = $5",
[INFO] [stdout] 163 | |         payload.title,
[INFO] [stdout] 164 | |         new_slug,
[INFO] [stdout] ...   |
[INFO] [stdout] 167 | |         post_id
[INFO] [stdout] 168 | |     ).execute(&mut *tx).await?;
[INFO] [stdout]     | |_____^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     sqlx::query!("DELETE FROM post_categories WHERE post_id = $1", post_id).execute(&mut *tx).await?;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:171:48
[INFO] [stdout]     |
[INFO] [stdout] 171 | ...category_ids { sqlx::query!("INSERT INTO post_categories (post_id, category_id) VALUES ($1, $2)", post_id, category_id).execute(&mut *...
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 172 |     sqlx::query!("DELETE FROM post_tags WHERE post_id = $1", post_id).execute(&mut *tx).await?;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:173:38
[INFO] [stdout]     |
[INFO] [stdout] 173 |     for tag_id in &payload.tag_ids { sqlx::query!("INSERT INTO post_tags (post_id, tag_id) VALUES ($1, $2)", post_id, tag_id).execute(&mu...
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:182:36
[INFO] [stdout]     |
[INFO] [stdout] 182 | ... { sqlx::query!("INSERT INTO anchors (post_id, anchor_type, text, slug, level) VALUES ($1, $2, $3, $4, $5)", post_id, anchor.anchor_type, anchor.text, anchor.slug, anchor.level).ex...
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: error communicating with database: Connection refused (os error 111)
[INFO] [stdout]    --> src/services/post_service.rs:190:23
[INFO] [stdout]     |
[INFO] [stdout] 190 | ...r = sqlx::query!("UPDATE anchors SET text = $1 WHERE post_id = $2 AND anchor_type = 'root' RETURNING id", payload.title, post_id).fetc...
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this error originates in the macro `$crate::sqlx_macros::expand_query` which comes from the expansion of the macro `sqlx::query` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Category`
[INFO] [stdout]   --> src/handlers/category_handler.rs:10:30
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::category_model::{Category, CreateCategory, UpdateCategory},
[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: `Tag`
[INFO] [stdout]   --> src/handlers/tag_handler.rs:10:36
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::tag_model::{CreateTag, Tag, UpdateTag},
[INFO] [stdout]    |                                    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Post`, `anchor_model::Anchor`, `category_model::Category`, and `tag_model::Tag`
[INFO] [stdout]   --> src/handlers/post_handler.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 |     category_model::Category,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     anchor_model::Anchor,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     post_model::{CreatePostRequest, Post, PostDetailResponse, UpdatePostRequest}, // 移除了未使用的 UpdatePostRequest
[INFO] [stdout]    |                                     ^^^^
[INFO] [stdout] 16 |     tag_model::Tag,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Anchor`
[INFO] [stdout]  --> src/handlers/public_handler.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::models::anchor_model::{Anchor, Backlink};
[INFO] [stdout]   |                                   ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Post`
[INFO] [stdout]   --> src/handlers/public_handler.rs:10:70
[INFO] [stdout]    |
[INFO] [stdout] 10 |     models::post_model::{PostDetailResponse, PublicPostListResponse, Post},
[INFO] [stdout]    |                                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 27 | |         Category,
[INFO] [stdout] 28 | |         "INSERT INTO categories (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 32 | |         .fetch_one(&state.db_pool)
[INFO] [stdout] 33 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:43:22
[INFO] [stdout]    |
[INFO] [stdout] 43 |       let categories = sqlx::query_as!(Category, "SELECT * FROM categories")
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 44 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let category = sqlx::query_as!(Category, "SELECT * FROM categories WHERE id = $1", id)
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 57 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 58 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 79 | |         Category,
[INFO] [stdout] 80 | |         "UPDATE categories SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 81 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 85 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 86 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:87:19
[INFO] [stdout]    |
[INFO] [stdout] 87 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 87 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/category_handler.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 |       let result = sqlx::query!("DELETE FROM categories WHERE id = $1", id)
[INFO] [stdout]     |  __________________^
[INFO] [stdout] 104 | |         .execute(&state.db_pool)
[INFO] [stdout] 105 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/category_handler.rs:106:19
[INFO] [stdout]     |
[INFO] [stdout] 106 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 106 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 27 | |         Tag,
[INFO] [stdout] 28 | |         "INSERT INTO tags (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 32 | |         .fetch_one(&state.db_pool)
[INFO] [stdout] 33 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 |       let tags = sqlx::query_as!(Tag, "SELECT * FROM tags")
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 44 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let tag = sqlx::query_as!(Tag, "SELECT * FROM tags WHERE id = $1", id)
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 57 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 58 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 76 | |         Tag,
[INFO] [stdout] 77 | |         "UPDATE tags SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 78 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 83 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:84:19
[INFO] [stdout]    |
[INFO] [stdout] 84 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 84 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |       let result = sqlx::query!("DELETE FROM tags WHERE id = $1", id)
[INFO] [stdout]    |  __________________^
[INFO] [stdout] 98 | |         .execute(&state.db_pool)
[INFO] [stdout] 99 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/tag_handler.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 100 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 41 | |          Post,
[INFO] [stdout] 42 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] ...  |
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:56:16
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let post = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 57 | |         Post,
[INFO] [stdout] 58 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 59 | |         id
[INFO] [stdout] 60 | |     )
[INFO] [stdout] 61 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 62 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:67:22
[INFO] [stdout]    |
[INFO] [stdout] 67 |       let categories = sqlx::query_as!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 68 | |         Category,
[INFO] [stdout] 69 | |         r#"
[INFO] [stdout] 70 | |         SELECT c.id, c.name, c.slug FROM categories c
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 77 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:78:19
[INFO] [stdout]    |
[INFO] [stdout] 78 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 78 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:81:16
[INFO] [stdout]    |
[INFO] [stdout] 81 |       let tags = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 82 | |         Tag,
[INFO] [stdout] 83 | |         r#"
[INFO] [stdout] 84 | |         SELECT t.id, t.name, t.slug FROM tags t
[INFO] [stdout] ...  |
[INFO] [stdout] 90 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 91 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 92 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:95:19
[INFO] [stdout]     |
[INFO] [stdout]  95 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout]  96 | |         Anchor,
[INFO] [stdout]  97 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout]  98 | |         id
[INFO] [stdout]  99 | |     )
[INFO] [stdout] 100 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 101 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:102:19
[INFO] [stdout]     |
[INFO] [stdout] 102 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 102 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |       let result = sqlx::query!("DELETE FROM posts WHERE id = $1", id)
[INFO] [stdout]     |  __________________^
[INFO] [stdout] 154 | |         .execute(&state.db_pool)
[INFO] [stdout] 155 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:156:19
[INFO] [stdout]     |
[INFO] [stdout] 156 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 156 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |       let related_drafts = sqlx::query_as!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 176 | |         Post,
[INFO] [stdout] 177 | |         r#"
[INFO] [stdout] 178 | |         SELECT DISTINCT
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 190 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:208:5
[INFO] [stdout]     |
[INFO] [stdout] 208 | /     sqlx::query!(
[INFO] [stdout] 209 | |         r#"
[INFO] [stdout] 210 | |         UPDATE posts
[INFO] [stdout] 211 | |         SET status = 'published', published_at = now()
[INFO] [stdout] ...   |
[INFO] [stdout] 216 | |         .execute(&state.db_pool)
[INFO] [stdout] 217 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:218:19
[INFO] [stdout]     |
[INFO] [stdout] 218 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 218 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/public_handler.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 40 | |         Post,
[INFO] [stdout] 41 | |         r#"
[INFO] [stdout] 42 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] 43 | |         FROM posts WHERE status = 'published' ORDER BY published_at DESC
[INFO] [stdout] 44 | |         "#
[INFO] [stdout] 45 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/public_handler.rs:45:48
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                                                ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:26:20
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 27 | |         Category,
[INFO] [stdout] 28 | |         "INSERT INTO categories (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 32 | |         .fetch_one(&state.db_pool)
[INFO] [stdout] 33 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:104:16
[INFO] [stdout]     |
[INFO] [stdout] 104 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 105 | |          Post,
[INFO] [stdout] 106 | |         r#"
[INFO] [stdout] 107 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] ...   |
[INFO] [stdout] 113 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 114 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 115 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:119:22
[INFO] [stdout]     |
[INFO] [stdout] 119 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 120 | |         Category,
[INFO] [stdout] 121 | |         "SELECT c.id, c.name, c.slug FROM categories c JOIN post_categories pc ON c.id = pc.category_id WHERE pc.post_id = $1",
[INFO] [stdout] 122 | |         post.id
[INFO] [stdout] 123 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:43:22
[INFO] [stdout]    |
[INFO] [stdout] 43 |       let categories = sqlx::query_as!(Category, "SELECT * FROM categories")
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 44 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:123:48
[INFO] [stdout]     |
[INFO] [stdout] 123 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 123 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:125:16
[INFO] [stdout]     |
[INFO] [stdout] 125 |       let tags = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 126 | |         Tag,
[INFO] [stdout] 127 | |         "SELECT t.id, t.name, t.slug FROM tags t JOIN post_tags pt ON t.id = pt.tag_id WHERE pt.post_id = $1",
[INFO] [stdout] 128 | |         post.id
[INFO] [stdout] 129 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:129:48
[INFO] [stdout]     |
[INFO] [stdout] 129 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 129 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:56:20
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let category = sqlx::query_as!(Category, "SELECT * FROM categories WHERE id = $1", id)
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 57 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 58 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:132:19
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 133 | |         Anchor,
[INFO] [stdout] 134 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 135 | |         post.id
[INFO] [stdout] 136 | |     )
[INFO] [stdout] 137 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 138 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:139:19
[INFO] [stdout]     |
[INFO] [stdout] 139 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 139 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:164:31
[INFO] [stdout]     |
[INFO] [stdout] 164 |       let target_anchor = match sqlx::query_as!(Anchor, "SELECT * FROM anchors WHERE id = $1", id)
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 165 | |         .fetch_optional(&state.db_pool).await
[INFO] [stdout]     | |_____________________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:166:19
[INFO] [stdout]     |
[INFO] [stdout] 166 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))? {
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 166 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))? {
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:78:20
[INFO] [stdout]    |
[INFO] [stdout] 78 |       let category = sqlx::query_as!(
[INFO] [stdout]    |  ____________________^
[INFO] [stdout] 79 | |         Category,
[INFO] [stdout] 80 | |         "UPDATE categories SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 81 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 85 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 86 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |       let backlinks = sqlx::query_as!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 172 | |         Backlink,
[INFO] [stdout] 173 | |         r#"
[INFO] [stdout] 174 | |         SELECT
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 190 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/category_handler.rs:87:19
[INFO] [stdout]    |
[INFO] [stdout] 87 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 87 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/category_handler.rs:103:18
[INFO] [stdout]     |
[INFO] [stdout] 103 |       let result = sqlx::query!("DELETE FROM categories WHERE id = $1", id)
[INFO] [stdout]     |  __________________^
[INFO] [stdout] 104 | |         .execute(&state.db_pool)
[INFO] [stdout] 105 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/category_handler.rs:106:19
[INFO] [stdout]     |
[INFO] [stdout] 106 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 106 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:26:15
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 27 | |         Tag,
[INFO] [stdout] 28 | |         "INSERT INTO tags (name, slug) VALUES ($1, $2) RETURNING id, name, slug",
[INFO] [stdout] 29 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 32 | |         .fetch_one(&state.db_pool)
[INFO] [stdout] 33 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 215 | |         Category,
[INFO] [stdout] 216 | |         r#"
[INFO] [stdout] 217 | |         SELECT DISTINCT c.id, c.name, c.slug
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 226 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 34 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:227:19
[INFO] [stdout]     |
[INFO] [stdout] 227 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 227 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:43:16
[INFO] [stdout]    |
[INFO] [stdout] 43 |       let tags = sqlx::query_as!(Tag, "SELECT * FROM tags")
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 44 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:56:15
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let tag = sqlx::query_as!(Tag, "SELECT * FROM tags WHERE id = $1", id)
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 57 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 58 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:59:19
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 59 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/services/post_service.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |             ^^^^
[INFO] [stdout] 21 |             .fetch_optional(db_pool).await?;
[INFO] [stdout] 22 |         return Ok(post.map(|p| p.content_markdown));
[INFO] [stdout]    |                   ---- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `post` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post: /* Type */ = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:75:15
[INFO] [stdout]    |
[INFO] [stdout] 75 |       let tag = sqlx::query_as!(
[INFO] [stdout]    |  _______________^
[INFO] [stdout] 76 | |         Tag,
[INFO] [stdout] 77 | |         "UPDATE tags SET name = $1, slug = $2 WHERE id = $3 RETURNING id, name, slug",
[INFO] [stdout] 78 | |         payload.name,
[INFO] [stdout] ...  |
[INFO] [stdout] 82 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 83 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:84:19
[INFO] [stdout]    |
[INFO] [stdout] 84 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 84 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]    |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/tag_handler.rs:97:18
[INFO] [stdout]    |
[INFO] [stdout] 97 |       let result = sqlx::query!("DELETE FROM tags WHERE id = $1", id)
[INFO] [stdout]    |  __________________^
[INFO] [stdout] 98 | |         .execute(&state.db_pool)
[INFO] [stdout] 99 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/tag_handler.rs:100:19
[INFO] [stdout]     |
[INFO] [stdout] 100 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 100 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:40:17
[INFO] [stdout]    |
[INFO] [stdout] 40 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 41 | |          Post,
[INFO] [stdout] 42 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] ...  |
[INFO] [stdout] 45 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:46:19
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 46 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:56:16
[INFO] [stdout]    |
[INFO] [stdout] 56 |       let post = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 57 | |         Post,
[INFO] [stdout] 58 | |         r#"SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at FROM po...
[INFO] [stdout] 59 | |         id
[INFO] [stdout] 60 | |     )
[INFO] [stdout] 61 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 62 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:63:19
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 63 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:67:22
[INFO] [stdout]    |
[INFO] [stdout] 67 |       let categories = sqlx::query_as!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 68 | |         Category,
[INFO] [stdout] 69 | |         r#"
[INFO] [stdout] 70 | |         SELECT c.id, c.name, c.slug FROM categories c
[INFO] [stdout] ...  |
[INFO] [stdout] 76 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 77 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:78:19
[INFO] [stdout]    |
[INFO] [stdout] 78 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 78 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:81:16
[INFO] [stdout]    |
[INFO] [stdout] 81 |       let tags = sqlx::query_as!(
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 82 | |         Tag,
[INFO] [stdout] 83 | |         r#"
[INFO] [stdout] 84 | |         SELECT t.id, t.name, t.slug FROM tags t
[INFO] [stdout] ...  |
[INFO] [stdout] 90 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 91 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/post_handler.rs:92:19
[INFO] [stdout]    |
[INFO] [stdout] 92 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                   ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 92 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:95:19
[INFO] [stdout]     |
[INFO] [stdout]  95 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout]  96 | |         Anchor,
[INFO] [stdout]  97 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout]  98 | |         id
[INFO] [stdout]  99 | |     )
[INFO] [stdout] 100 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 101 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:102:19
[INFO] [stdout]     |
[INFO] [stdout] 102 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 102 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:153:18
[INFO] [stdout]     |
[INFO] [stdout] 153 |       let result = sqlx::query!("DELETE FROM posts WHERE id = $1", id)
[INFO] [stdout]     |  __________________^
[INFO] [stdout] 154 | |         .execute(&state.db_pool)
[INFO] [stdout] 155 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:156:19
[INFO] [stdout]     |
[INFO] [stdout] 156 |         .map_err(|err| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                   ^^^                                      --- type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 156 |         .map_err(|err: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, err.to_string()))?;
[INFO] [stdout]     |                      ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:175:26
[INFO] [stdout]     |
[INFO] [stdout] 175 |       let related_drafts = sqlx::query_as!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 176 | |         Post,
[INFO] [stdout] 177 | |         r#"
[INFO] [stdout] 178 | |         SELECT DISTINCT
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 190 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:208:5
[INFO] [stdout]     |
[INFO] [stdout] 208 | /     sqlx::query!(
[INFO] [stdout] 209 | |         r#"
[INFO] [stdout] 210 | |         UPDATE posts
[INFO] [stdout] 211 | |         SET status = 'published', published_at = now()
[INFO] [stdout] ...   |
[INFO] [stdout] 216 | |         .execute(&state.db_pool)
[INFO] [stdout] 217 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/post_handler.rs:218:19
[INFO] [stdout]     |
[INFO] [stdout] 218 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 218 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/public_handler.rs:39:17
[INFO] [stdout]    |
[INFO] [stdout] 39 |       let posts = sqlx::query_as!(
[INFO] [stdout]    |  _________________^
[INFO] [stdout] 40 | |         Post,
[INFO] [stdout] 41 | |         r#"
[INFO] [stdout] 42 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] 43 | |         FROM posts WHERE status = 'published' ORDER BY published_at DESC
[INFO] [stdout] 44 | |         "#
[INFO] [stdout] 45 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/handlers/public_handler.rs:45:48
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                                                ^                                      - type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 45 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]    |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:104:16
[INFO] [stdout]     |
[INFO] [stdout] 104 |       let post = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 105 | |          Post,
[INFO] [stdout] 106 | |         r#"
[INFO] [stdout] 107 | |         SELECT id, title, slug, content_markdown, cover_image_url, status AS "status: _", created_at, updated_at, published_at
[INFO] [stdout] ...   |
[INFO] [stdout] 113 | |         .fetch_optional(&state.db_pool)
[INFO] [stdout] 114 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 115 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 115 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:119:22
[INFO] [stdout]     |
[INFO] [stdout] 119 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 120 | |         Category,
[INFO] [stdout] 121 | |         "SELECT c.id, c.name, c.slug FROM categories c JOIN post_categories pc ON c.id = pc.category_id WHERE pc.post_id = $1",
[INFO] [stdout] 122 | |         post.id
[INFO] [stdout] 123 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:123:48
[INFO] [stdout]     |
[INFO] [stdout] 123 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 123 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:125:16
[INFO] [stdout]     |
[INFO] [stdout] 125 |       let tags = sqlx::query_as!(
[INFO] [stdout]     |  ________________^
[INFO] [stdout] 126 | |         Tag,
[INFO] [stdout] 127 | |         "SELECT t.id, t.name, t.slug FROM tags t JOIN post_tags pt ON t.id = pt.tag_id WHERE pt.post_id = $1",
[INFO] [stdout] 128 | |         post.id
[INFO] [stdout] 129 | |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     | |_____________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:129:48
[INFO] [stdout]     |
[INFO] [stdout] 129 |     ).fetch_all(&state.db_pool).await.map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 129 |     ).fetch_all(&state.db_pool).await.map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                                                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:132:19
[INFO] [stdout]     |
[INFO] [stdout] 132 |       let anchors = sqlx::query_as!(
[INFO] [stdout]     |  ___________________^
[INFO] [stdout] 133 | |         Anchor,
[INFO] [stdout] 134 | |         "SELECT * FROM anchors WHERE post_id = $1 ORDER BY text",
[INFO] [stdout] 135 | |         post.id
[INFO] [stdout] 136 | |     )
[INFO] [stdout] 137 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 138 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:139:19
[INFO] [stdout]     |
[INFO] [stdout] 139 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 139 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:164:31
[INFO] [stdout]     |
[INFO] [stdout] 164 |       let target_anchor = match sqlx::query_as!(Anchor, "SELECT * FROM anchors WHERE id = $1", id)
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 165 | |         .fetch_optional(&state.db_pool).await
[INFO] [stdout]     | |_____________________________________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:166:19
[INFO] [stdout]     |
[INFO] [stdout] 166 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))? {
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 166 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))? {
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:171:21
[INFO] [stdout]     |
[INFO] [stdout] 171 |       let backlinks = sqlx::query_as!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 172 | |         Backlink,
[INFO] [stdout] 173 | |         r#"
[INFO] [stdout] 174 | |         SELECT
[INFO] [stdout] ...   |
[INFO] [stdout] 189 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 190 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:191:19
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 191 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:214:22
[INFO] [stdout]     |
[INFO] [stdout] 214 |       let categories = sqlx::query_as!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 215 | |         Category,
[INFO] [stdout] 216 | |         r#"
[INFO] [stdout] 217 | |         SELECT DISTINCT c.id, c.name, c.slug
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |         .fetch_all(&state.db_pool)
[INFO] [stdout] 226 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/handlers/public_handler.rs:227:19
[INFO] [stdout]     |
[INFO] [stdout] 227 |         .map_err(|e| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                   ^                                      - type must be known at this point
[INFO] [stdout]     |
[INFO] [stdout] help: consider giving this closure parameter an explicit type
[INFO] [stdout]     |
[INFO] [stdout] 227 |         .map_err(|e: /* Type */| (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()))?;
[INFO] [stdout]     |                    ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/services/post_service.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |             ^^^^
[INFO] [stdout] 21 |             .fetch_optional(db_pool).await?;
[INFO] [stdout] 22 |         return Ok(post.map(|p| p.content_markdown));
[INFO] [stdout]    |                   ---- type must be known at this point
[INFO] [stdout]    |
[INFO] [stdout] help: consider giving `post` an explicit type
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let post: /* Type */ = sqlx::query!("SELECT content_markdown FROM posts WHERE slug = $1 AND status = 'published'", post_slug)
[INFO] [stdout]    |                 ++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `nexuscode_blog_backend` (bin "nexuscode_blog_backend" test) due to 94 previous errors; 5 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about this error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `nexuscode_blog_backend` (bin "nexuscode_blog_backend") due to 94 previous errors; 5 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "3b31502eb0f81b4a2f2cc644a5ba6d8324bca1a0ab072ca1f51dc9336ac8b896", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b31502eb0f81b4a2f2cc644a5ba6d8324bca1a0ab072ca1f51dc9336ac8b896", kill_on_drop: false }`
[INFO] [stdout] 3b31502eb0f81b4a2f2cc644a5ba6d8324bca1a0ab072ca1f51dc9336ac8b896
