[INFO] cloning repository https://github.com/CodeZobac/rust-auth-system
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/CodeZobac/rust-auth-system" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeZobac%2Frust-auth-system", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeZobac%2Frust-auth-system'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4366a74365654c6036fa5764cda196b9468bb028
[INFO] checking CodeZobac/rust-auth-system against try#ddcf048784667508cd676fef4667f88ae15628a3 for pr-148271
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FCodeZobac%2Frust-auth-system" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/CodeZobac/rust-auth-system
[INFO] finished tweaking git repo https://github.com/CodeZobac/rust-auth-system
[INFO] tweaked toml for git repo https://github.com/CodeZobac/rust-auth-system written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/CodeZobac/rust-auth-system on toolchain ddcf048784667508cd676fef4667f88ae15628a3
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ddcf048784667508cd676fef4667f88ae15628a3" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/CodeZobac/rust-auth-system 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" "+ddcf048784667508cd676fef4667f88ae15628a3" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "+ddcf048784667508cd676fef4667f88ae15628a3" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] de77e8a153556176d2ed5ddfa2afddc0b9376659b34fc218d2b1c78356cbd202
[INFO] running `Command { std: "docker" "start" "-a" "de77e8a153556176d2ed5ddfa2afddc0b9376659b34fc218d2b1c78356cbd202", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "de77e8a153556176d2ed5ddfa2afddc0b9376659b34fc218d2b1c78356cbd202", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "de77e8a153556176d2ed5ddfa2afddc0b9376659b34fc218d2b1c78356cbd202", kill_on_drop: false }`
[INFO] [stdout] de77e8a153556176d2ed5ddfa2afddc0b9376659b34fc218d2b1c78356cbd202
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/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" "+ddcf048784667508cd676fef4667f88ae15628a3" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] dfb6c4c40e3bedd462c8abaac78c054210877ffacf1d93fee71008f748ae24a1
[INFO] running `Command { std: "docker" "start" "-a" "dfb6c4c40e3bedd462c8abaac78c054210877ffacf1d93fee71008f748ae24a1", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling cc v1.2.33
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking getrandom v0.3.3
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking bitflags v2.9.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling minimal-lexical v0.2.1
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]     Checking rusticata-macros v4.1.0
[INFO] [stderr]    Compiling deranged v0.4.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]    Compiling thiserror v2.0.15
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling pastey v0.1.1
[INFO] [stderr]    Compiling uuid v1.18.0
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling oid-registry v0.7.1
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]     Checking sct v0.7.1
[INFO] [stderr]     Checking rustls-webpki v0.101.7
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking zerovec v0.11.4
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking tokio v1.47.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling asn1-rs-impl v0.2.0
[INFO] [stderr]    Compiling asn1-rs-derive v0.5.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling thiserror-impl v2.0.15
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling cookie v0.18.1
[INFO] [stderr]    Compiling webauthn-attestation-ca v0.5.2
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]     Checking tokio-util v0.7.16
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]     Checking base64urlsafedata v0.5.2
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]    Compiling darling_core v0.13.4
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking axum-core v0.4.5
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]    Compiling curve25519-dalek v4.1.3
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking asn1-rs v0.6.2
[INFO] [stderr]     Checking hdrhistogram v7.5.4
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling webauthn-rs-core v0.5.2
[INFO] [stderr]     Checking half v1.8.3
[INFO] [stderr]    Compiling protobuf v2.28.0
[INFO] [stderr]     Checking der-parser v9.0.0
[INFO] [stderr]     Checking zeroize v1.8.1
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking opentelemetry v0.21.0
[INFO] [stderr]     Checking serde_cbor_2 v0.12.0-dev
[INFO] [stderr]     Checking tower v0.4.13
[INFO] [stderr]    Compiling darling_macro v0.13.4
[INFO] [stderr]     Checking x509-parser v0.16.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking hyper-util v0.1.16
[INFO] [stderr]     Checking webauthn-rs-proto v0.5.2
[INFO] [stderr]     Checking tracing-serde v0.2.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking serde_path_to_error v0.1.17
[INFO] [stderr]    Compiling sqlx-postgres v0.7.4
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking hkdf v0.12.4
[INFO] [stderr]    Compiling axum-macros v0.4.2
[INFO] [stderr]    Compiling curve25519-dalek-derive v0.1.1
[INFO] [stderr]     Checking raw-cpuid v11.5.0
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking ordered-float v4.6.0
[INFO] [stderr]    Compiling prometheus v0.13.4
[INFO] [stderr]     Checking signature v2.2.0
[INFO] [stderr]    Compiling unicase v2.8.1
[INFO] [stderr]     Checking glob v0.3.3
[INFO] [stderr]     Checking clap_builder v4.5.44
[INFO] [stderr]     Checking ed25519 v2.2.3
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]     Checking opentelemetry_sdk v0.21.2
[INFO] [stderr]    Compiling clap_derive v4.5.45
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking axum v0.7.9
[INFO] [stderr]    Compiling darling v0.13.4
[INFO] [stderr]     Checking simple_asn1 v0.6.3
[INFO] [stderr]     Checking combine v4.6.7
[INFO] [stderr]     Checking tokio-retry v0.3.0
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]     Checking socket2 v0.4.10
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking ct-codecs v1.1.6
[INFO] [stderr]     Checking no-std-compat v0.4.1
[INFO] [stderr]     Checking fiat-crypto v0.3.0
[INFO] [stderr]     Checking webauthn-rs v0.5.2
[INFO] [stderr]     Checking governor v0.6.3
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking jsonwebtoken v9.3.1
[INFO] [stderr]     Checking clap v4.5.45
[INFO] [stderr]     Checking ed25519-dalek v2.2.0
[INFO] [stderr]     Checking tracing-opentelemetry v0.22.0
[INFO] [stderr]    Compiling serde_with_macros v1.5.2
[INFO] [stderr]     Checking tower-http v0.5.2
[INFO] [stderr]     Checking tower-cookies v0.10.0
[INFO] [stderr]     Checking metrics v0.22.4
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]     Checking wait-timeout v0.2.1
[INFO] [stderr]     Checking bit-vec v0.8.0
[INFO] [stderr]     Checking diff v0.1.13
[INFO] [stderr]     Checking serde_with v1.14.0
[INFO] [stderr]     Checking yansi v1.0.1
[INFO] [stderr]     Checking rusty-fork v0.3.0
[INFO] [stderr]     Checking bit-set v0.8.0
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking rust-multipart-rfc7578_2 v0.6.1
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking pretty_assertions v1.4.1
[INFO] [stderr]     Checking reserve-port v2.3.0
[INFO] [stderr]     Checking unarray v0.1.4
[INFO] [stderr]     Checking auto-future v1.0.0
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking axum-test v14.10.0
[INFO] [stderr]     Checking proptest v1.7.0
[INFO] [stderr]     Checking redis v0.24.0
[INFO] [stderr]     Checking bollard-stubs v1.42.0-rc.3
[INFO] [stderr]     Checking orion v0.17.11
[INFO] [stderr]     Checking rust-identity-system v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/migrations.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |           let result = sqlx::query_scalar!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 52 | |             "SELECT version FROM _sqlx_migrations ORDER BY version DESC LIMIT 1"
[INFO] [stdout] 53 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/migrations.rs:102:26
[INFO] [stdout]     |
[INFO] [stdout] 102 |               let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 103 | |                 "SELECT EXISTS (
[INFO] [stdout] 104 | |                     SELECT FROM information_schema.tables 
[INFO] [stdout] 105 | |                     WHERE table_schema = 'public' 
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |                 table
[INFO] [stdout] 109 | |             )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/repositories.rs:42:30
[INFO] [stdout]    |
[INFO] [stdout] 42 |           let created_record = sqlx::query_as!(
[INFO] [stdout]    |  ______________________________^
[INFO] [stdout] 43 | |             crate::models::user::UserRecord,
[INFO] [stdout] 44 | |             r#"
[INFO] [stdout] 45 | |             INSERT INTO users (
[INFO] [stdout] ...  |
[INFO] [stdout] 62 | |             record.flags
[INFO] [stdout] 63 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/repositories.rs:73:27
[INFO] [stdout]    |
[INFO] [stdout] 73 |           let user_record = sqlx::query_as!(
[INFO] [stdout]    |  ___________________________^
[INFO] [stdout] 74 | |             crate::models::user::UserRecord,
[INFO] [stdout] 75 | |             r#"
[INFO] [stdout] 76 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...  |
[INFO] [stdout] 81 | |             id
[INFO] [stdout] 82 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:92:27
[INFO] [stdout]     |
[INFO] [stdout]  92 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout]  93 | |             crate::models::user::UserRecord,
[INFO] [stdout]  94 | |             r#"
[INFO] [stdout]  95 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 100 | |             external_id
[INFO] [stdout] 101 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 114 | |             crate::models::user::UserRecord,
[INFO] [stdout] 115 | |             r#"
[INFO] [stdout] 116 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 121 | |             email_hash
[INFO] [stdout] 122 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:141:22
[INFO] [stdout]     |
[INFO] [stdout] 141 |           let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 142 | |             "SELECT EXISTS(SELECT 1 FROM users WHERE email_hash = $1 AND deleted_at IS NULL)",
[INFO] [stdout] 143 | |             email_hash
[INFO] [stdout] 144 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:163:30
[INFO] [stdout]     |
[INFO] [stdout] 163 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 164 | |             crate::models::user::UserRecord,
[INFO] [stdout] 165 | |             r#"
[INFO] [stdout] 166 | |             UPDATE users SET
[INFO] [stdout] ...   |
[INFO] [stdout] 188 | |             record.flags
[INFO] [stdout] 189 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | /         sqlx::query!(
[INFO] [stdout] 200 | |             "UPDATE users SET deleted_at = NOW(), updated_at = NOW() WHERE id = $1",
[INFO] [stdout] 201 | |             id
[INFO] [stdout] 202 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:212:28
[INFO] [stdout]     |
[INFO] [stdout] 212 |           let user_records = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 213 | |             crate::models::user::UserRecord,
[INFO] [stdout] 214 | |             r#"
[INFO] [stdout] 215 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 223 | |             offset
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:234:21
[INFO] [stdout]     |
[INFO] [stdout] 234 |           let count = sqlx::query_scalar!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 235 | |             "SELECT COUNT(*) FROM users WHERE deleted_at IS NULL"
[INFO] [stdout] 236 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:257:30
[INFO] [stdout]     |
[INFO] [stdout] 257 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 258 | |             PasswordCredentialRecord,
[INFO] [stdout] 259 | |             r#"
[INFO] [stdout] 260 | |             INSERT INTO password_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 270 | |             credential.updated_at
[INFO] [stdout] 271 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:281:33
[INFO] [stdout]     |
[INFO] [stdout] 281 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 282 | |             PasswordCredentialRecord,
[INFO] [stdout] 283 | |             r#"
[INFO] [stdout] 284 | |             SELECT user_id, argon2_hash, params_json, last_rotated_at, created_at, updated_at
[INFO] [stdout] ...   |
[INFO] [stdout] 288 | |             user_id
[INFO] [stdout] 289 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:299:30
[INFO] [stdout]     |
[INFO] [stdout] 299 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 300 | |             PasswordCredentialRecord,
[INFO] [stdout] 301 | |             r#"
[INFO] [stdout] 302 | |             UPDATE password_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 313 | |             credential.last_rotated_at
[INFO] [stdout] 314 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 | /         sqlx::query!(
[INFO] [stdout] 325 | |             "DELETE FROM password_credentials WHERE user_id = $1",
[INFO] [stdout] 326 | |             user_id
[INFO] [stdout] 327 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:348:30
[INFO] [stdout]     |
[INFO] [stdout] 348 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 349 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 350 | |             r#"
[INFO] [stdout] 351 | |             INSERT INTO webauthn_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 367 | |             credential.last_used_at
[INFO] [stdout] 368 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:378:33
[INFO] [stdout]     |
[INFO] [stdout] 378 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 379 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 380 | |             r#"
[INFO] [stdout] 381 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 386 | |             id
[INFO] [stdout] 387 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:397:33
[INFO] [stdout]     |
[INFO] [stdout] 397 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 398 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 399 | |             r#"
[INFO] [stdout] 400 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 405 | |             credential_id
[INFO] [stdout] 406 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:416:34
[INFO] [stdout]     |
[INFO] [stdout] 416 |           let credential_records = sqlx::query_as!(
[INFO] [stdout]     |  __________________________________^
[INFO] [stdout] 417 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 418 | |             r#"
[INFO] [stdout] 419 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 425 | |             user_id
[INFO] [stdout] 426 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 437 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 438 | |             r#"
[INFO] [stdout] 439 | |             UPDATE webauthn_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 450 | |             credential.last_used_at
[INFO] [stdout] 451 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 | /         sqlx::query!(
[INFO] [stdout] 462 | |             "DELETE FROM webauthn_credentials WHERE id = $1",
[INFO] [stdout] 463 | |             id
[INFO] [stdout] 464 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:474:9
[INFO] [stdout]     |
[INFO] [stdout] 474 | /         sqlx::query!(
[INFO] [stdout] 475 | |             "DELETE FROM webauthn_credentials WHERE user_id = $1",
[INFO] [stdout] 476 | |             user_id
[INFO] [stdout] 477 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:502:30
[INFO] [stdout]     |
[INFO] [stdout] 502 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 503 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 504 | |             r#"
[INFO] [stdout] 505 | |             INSERT INTO sessions (
[INFO] [stdout] ...   |
[INFO] [stdout] 521 | |             record.csrf_token
[INFO] [stdout] 522 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:550:30
[INFO] [stdout]     |
[INFO] [stdout] 550 |           let session_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 551 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 552 | |             r#"
[INFO] [stdout] 553 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 558 | |             session_id
[INFO] [stdout] 559 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 577 | /         sqlx::query!(
[INFO] [stdout] 578 | |             "UPDATE sessions SET last_seen_at = NOW() WHERE id = $1",
[INFO] [stdout] 579 | |             session_id
[INFO] [stdout] 580 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 | /         sqlx::query!(
[INFO] [stdout] 598 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 599 | |             session_id,
[INFO] [stdout] 600 | |             reason
[INFO] [stdout] 601 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:615:38
[INFO] [stdout]     |
[INFO] [stdout] 615 |           let session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout] 616 | |             "SELECT id FROM sessions WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 617 | |             user_id
[INFO] [stdout] 618 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:624:9
[INFO] [stdout]     |
[INFO] [stdout] 624 | /         sqlx::query!(
[INFO] [stdout] 625 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 626 | |             user_id,
[INFO] [stdout] 627 | |             reason
[INFO] [stdout] 628 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:643:31
[INFO] [stdout]     |
[INFO] [stdout] 643 |           let session_records = sqlx::query_as!(
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 644 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 645 | |             r#"
[INFO] [stdout] 646 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 652 | |             user_id
[INFO] [stdout] 653 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 | /             sqlx::query!(
[INFO] [stdout] 676 | |                 "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 677 | |                 old_session_id,
[INFO] [stdout] 678 | |                 Some("session_rotated")
[INFO] [stdout] 679 | |             )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:686:13
[INFO] [stdout]     |
[INFO] [stdout] 686 | /             sqlx::query!(
[INFO] [stdout] 687 | |                 r#"
[INFO] [stdout] 688 | |                 INSERT INTO sessions (
[INFO] [stdout] 689 | |                     id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 702 | |                 record.csrf_token
[INFO] [stdout] 703 | |             )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:723:46
[INFO] [stdout]     |
[INFO] [stdout] 723 |           let expired_session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________________^
[INFO] [stdout] 724 | |             "SELECT id FROM sessions WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 725 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:731:22
[INFO] [stdout]     |
[INFO] [stdout] 731 |           let result = sqlx::query!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 732 | |             "DELETE FROM sessions WHERE expires_at <= NOW() OR revoked_at <= NOW() - INTERVAL '7 days'"
[INFO] [stdout] 733 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:821:30
[INFO] [stdout]     |
[INFO] [stdout] 821 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 822 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 823 | |             r#"
[INFO] [stdout] 824 | |             INSERT INTO refresh_tokens (
[INFO] [stdout] ...   |
[INFO] [stdout] 840 | |             record.family_id
[INFO] [stdout] 841 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:869:28
[INFO] [stdout]     |
[INFO] [stdout] 869 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 870 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 871 | |             r#"
[INFO] [stdout] 872 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 877 | |             token_hash
[INFO] [stdout] 878 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:903:28
[INFO] [stdout]     |
[INFO] [stdout] 903 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 904 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 905 | |             r#"
[INFO] [stdout] 906 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 911 | |             token_id
[INFO] [stdout] 912 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:928:29
[INFO] [stdout]     |
[INFO] [stdout] 928 |           let token_records = sqlx::query_as!(
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 929 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 930 | |             r#"
[INFO] [stdout] 931 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 937 | |             family_id
[INFO] [stdout] 938 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:949:9
[INFO] [stdout]     |
[INFO] [stdout] 949 | /         sqlx::query!(
[INFO] [stdout] 950 | |             "UPDATE refresh_tokens SET replaced_by = $2 WHERE id = $1",
[INFO] [stdout] 951 | |             token_id,
[INFO] [stdout] 952 | |             replacement_id
[INFO] [stdout] 953 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:970:9
[INFO] [stdout]     |
[INFO] [stdout] 970 | /         sqlx::query!(
[INFO] [stdout] 971 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 972 | |             token_id,
[INFO] [stdout] 973 | |             reason
[INFO] [stdout] 974 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:988:36
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ____________________________________^
[INFO] [stdout] 989 | |             "SELECT id FROM refresh_tokens WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 990 | |             family_id
[INFO] [stdout] 991 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:997:9
[INFO] [stdout]      |
[INFO] [stdout]  997 | /         sqlx::query!(
[INFO] [stdout]  998 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout]  999 | |             family_id,
[INFO] [stdout] 1000 | |             reason
[INFO] [stdout] 1001 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1017:36
[INFO] [stdout]      |
[INFO] [stdout] 1017 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1018 | |             "SELECT id FROM refresh_tokens WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1019 | |             user_id
[INFO] [stdout] 1020 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1026:9
[INFO] [stdout]      |
[INFO] [stdout] 1026 | /         sqlx::query!(
[INFO] [stdout] 1027 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1028 | |             user_id,
[INFO] [stdout] 1029 | |             reason
[INFO] [stdout] 1030 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1046:36
[INFO] [stdout]      |
[INFO] [stdout] 1046 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1047 | |             "SELECT id FROM refresh_tokens WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1048 | |             session_id
[INFO] [stdout] 1049 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 | /         sqlx::query!(
[INFO] [stdout] 1056 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1057 | |             session_id,
[INFO] [stdout] 1058 | |             reason
[INFO] [stdout] 1059 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1075:44
[INFO] [stdout]      |
[INFO] [stdout] 1075 |           let expired_token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________________^
[INFO] [stdout] 1076 | |             "SELECT id FROM refresh_tokens WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 1077 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1083:22
[INFO] [stdout]      |
[INFO] [stdout] 1083 |           let result = sqlx::query!(
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1084 | |             "DELETE FROM refresh_tokens WHERE expires_at <= NOW() OR (revoked_at IS NOT NULL AND revoked_at <= NOW() - INTERVAL '30 days')"
[INFO] [stdout] 1085 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |           let token_records = sqlx::query_as!(
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout] 1101 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 1102 | |             r#"
[INFO] [stdout] 1103 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...    |
[INFO] [stdout] 1109 | |             user_id
[INFO] [stdout] 1110 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1275:18
[INFO] [stdout]      |
[INFO] [stdout] 1275 |           let id = sqlx::query_scalar!(
[INFO] [stdout]      |  __________________^
[INFO] [stdout] 1276 | |             r#"
[INFO] [stdout] 1277 | |             INSERT INTO audit_logs (
[INFO] [stdout] 1278 | |                 correlation_id, actor, actor_type, action, target, target_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1299 | |             event.error_message
[INFO] [stdout] 1300 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pool` and `Postgres`
[INFO] [stdout]  --> src/db/connection.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sqlx::{postgres::PgPoolOptions, PgPool, Pool, Postgres};
[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: `warn`
[INFO] [stdout]  --> src/db/connection.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PasswordCredentialRecord` and `WebAuthnCredentialRecord`
[INFO] [stdout]  --> src/db/repositories.rs:8:31
[INFO] [stdout]   |
[INFO] [stdout] 8 |     User, PasswordCredential, PasswordCredentialRecord, 
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 9 |     WebAuthnCredential, WebAuthnCredentialRecord
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]     --> src/db/repositories.rs:1309:5
[INFO] [stdout]      |
[INFO] [stdout] 1309 | use std::net::IpAddr;
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RedisResult`
[INFO] [stdout]  --> src/db/redis.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use redis::{aio::ConnectionManager, Client, RedisResult};
[INFO] [stdout]   |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/db/redis.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PgPool`
[INFO] [stdout]  --> src/models/user.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sqlx::{FromRow, PgPool};
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/models/session.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/models/audit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/services/auth.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]  --> src/services/refresh_token.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::time::{interval, sleep};
[INFO] [stdout]   |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/services/audit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OffsetDateTime`
[INFO] [stdout]  --> src/services/session.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use time::{Duration, OffsetDateTime};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]  --> src/services/session.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::time::{interval, sleep};
[INFO] [stdout]   |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AccountLockout` and `SuspiciousActivity`
[INFO] [stdout]   --> src/services/anti_abuse.rs:10:52
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::middleware::rate_limit::{FailedAttempt, AccountLockout, SuspiciousActivity};
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/migrations.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |           let result = sqlx::query_scalar!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 52 | |             "SELECT version FROM _sqlx_migrations ORDER BY version DESC LIMIT 1"
[INFO] [stdout] 53 | |         )
[INFO] [stdout] 54 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 55 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/migrations.rs:102:26
[INFO] [stdout]     |
[INFO] [stdout] 102 |               let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 103 | |                 "SELECT EXISTS (
[INFO] [stdout] 104 | |                     SELECT FROM information_schema.tables 
[INFO] [stdout] 105 | |                     WHERE table_schema = 'public' 
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             .fetch_one(&self.pool)
[INFO] [stdout] 111 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/repositories.rs:42:30
[INFO] [stdout]    |
[INFO] [stdout] 42 |           let created_record = sqlx::query_as!(
[INFO] [stdout]    |  ______________________________^
[INFO] [stdout] 43 | |             crate::models::user::UserRecord,
[INFO] [stdout] 44 | |             r#"
[INFO] [stdout] 45 | |             INSERT INTO users (
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |         .fetch_one(&self.pool)
[INFO] [stdout] 65 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/repositories.rs:73:27
[INFO] [stdout]    |
[INFO] [stdout] 73 |           let user_record = sqlx::query_as!(
[INFO] [stdout]    |  ___________________________^
[INFO] [stdout] 74 | |             crate::models::user::UserRecord,
[INFO] [stdout] 75 | |             r#"
[INFO] [stdout] 76 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...  |
[INFO] [stdout] 83 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 84 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:92:27
[INFO] [stdout]     |
[INFO] [stdout]  92 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout]  93 | |             crate::models::user::UserRecord,
[INFO] [stdout]  94 | |             r#"
[INFO] [stdout]  95 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 102 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 103 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 114 | |             crate::models::user::UserRecord,
[INFO] [stdout] 115 | |             r#"
[INFO] [stdout] 116 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 124 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:141:22
[INFO] [stdout]     |
[INFO] [stdout] 141 |           let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 142 | |             "SELECT EXISTS(SELECT 1 FROM users WHERE email_hash = $1 AND deleted_at IS NULL)",
[INFO] [stdout] 143 | |             email_hash
[INFO] [stdout] ...   |
[INFO] [stdout] 146 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:163:30
[INFO] [stdout]     |
[INFO] [stdout] 163 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 164 | |             crate::models::user::UserRecord,
[INFO] [stdout] 165 | |             r#"
[INFO] [stdout] 166 | |             UPDATE users SET
[INFO] [stdout] ...   |
[INFO] [stdout] 190 | |         .fetch_one(&self.pool)
[INFO] [stdout] 191 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | /         sqlx::query!(
[INFO] [stdout] 200 | |             "UPDATE users SET deleted_at = NOW(), updated_at = NOW() WHERE id = $1",
[INFO] [stdout] 201 | |             id
[INFO] [stdout] ...   |
[INFO] [stdout] 204 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:212:28
[INFO] [stdout]     |
[INFO] [stdout] 212 |           let user_records = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 213 | |             crate::models::user::UserRecord,
[INFO] [stdout] 214 | |             r#"
[INFO] [stdout] 215 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |         .fetch_all(&self.pool)
[INFO] [stdout] 226 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:234:21
[INFO] [stdout]     |
[INFO] [stdout] 234 |           let count = sqlx::query_scalar!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 235 | |             "SELECT COUNT(*) FROM users WHERE deleted_at IS NULL"
[INFO] [stdout] 236 | |         )
[INFO] [stdout] 237 | |         .fetch_one(&self.pool)
[INFO] [stdout] 238 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:257:30
[INFO] [stdout]     |
[INFO] [stdout] 257 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 258 | |             PasswordCredentialRecord,
[INFO] [stdout] 259 | |             r#"
[INFO] [stdout] 260 | |             INSERT INTO password_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 272 | |         .fetch_one(&self.pool)
[INFO] [stdout] 273 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:281:33
[INFO] [stdout]     |
[INFO] [stdout] 281 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 282 | |             PasswordCredentialRecord,
[INFO] [stdout] 283 | |             r#"
[INFO] [stdout] 284 | |             SELECT user_id, argon2_hash, params_json, last_rotated_at, created_at, updated_at
[INFO] [stdout] ...   |
[INFO] [stdout] 290 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 291 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:299:30
[INFO] [stdout]     |
[INFO] [stdout] 299 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 300 | |             PasswordCredentialRecord,
[INFO] [stdout] 301 | |             r#"
[INFO] [stdout] 302 | |             UPDATE password_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 315 | |         .fetch_one(&self.pool)
[INFO] [stdout] 316 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 | /         sqlx::query!(
[INFO] [stdout] 325 | |             "DELETE FROM password_credentials WHERE user_id = $1",
[INFO] [stdout] 326 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 329 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:348:30
[INFO] [stdout]     |
[INFO] [stdout] 348 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 349 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 350 | |             r#"
[INFO] [stdout] 351 | |             INSERT INTO webauthn_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 369 | |         .fetch_one(&self.pool)
[INFO] [stdout] 370 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:378:33
[INFO] [stdout]     |
[INFO] [stdout] 378 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 379 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 380 | |             r#"
[INFO] [stdout] 381 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 388 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 389 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:397:33
[INFO] [stdout]     |
[INFO] [stdout] 397 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 398 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 399 | |             r#"
[INFO] [stdout] 400 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 407 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 408 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:416:34
[INFO] [stdout]     |
[INFO] [stdout] 416 |           let credential_records = sqlx::query_as!(
[INFO] [stdout]     |  __________________________________^
[INFO] [stdout] 417 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 418 | |             r#"
[INFO] [stdout] 419 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 427 | |         .fetch_all(&self.pool)
[INFO] [stdout] 428 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 437 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 438 | |             r#"
[INFO] [stdout] 439 | |             UPDATE webauthn_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 452 | |         .fetch_one(&self.pool)
[INFO] [stdout] 453 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 | /         sqlx::query!(
[INFO] [stdout] 462 | |             "DELETE FROM webauthn_credentials WHERE id = $1",
[INFO] [stdout] 463 | |             id
[INFO] [stdout] ...   |
[INFO] [stdout] 466 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:474:9
[INFO] [stdout]     |
[INFO] [stdout] 474 | /         sqlx::query!(
[INFO] [stdout] 475 | |             "DELETE FROM webauthn_credentials WHERE user_id = $1",
[INFO] [stdout] 476 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 479 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:502:30
[INFO] [stdout]     |
[INFO] [stdout] 502 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 503 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 504 | |             r#"
[INFO] [stdout] 505 | |             INSERT INTO sessions (
[INFO] [stdout] ...   |
[INFO] [stdout] 523 | |         .fetch_one(&self.pool)
[INFO] [stdout] 524 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:550:30
[INFO] [stdout]     |
[INFO] [stdout] 550 |           let session_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 551 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 552 | |             r#"
[INFO] [stdout] 553 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 560 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 561 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 577 | /         sqlx::query!(
[INFO] [stdout] 578 | |             "UPDATE sessions SET last_seen_at = NOW() WHERE id = $1",
[INFO] [stdout] 579 | |             session_id
[INFO] [stdout] ...   |
[INFO] [stdout] 582 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 | /         sqlx::query!(
[INFO] [stdout] 598 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 599 | |             session_id,
[INFO] [stdout] 600 | |             reason
[INFO] [stdout] 601 | |         )
[INFO] [stdout] 602 | |         .execute(&self.pool)
[INFO] [stdout] 603 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:615:38
[INFO] [stdout]     |
[INFO] [stdout] 615 |           let session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout] 616 | |             "SELECT id FROM sessions WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 617 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 620 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:624:9
[INFO] [stdout]     |
[INFO] [stdout] 624 | /         sqlx::query!(
[INFO] [stdout] 625 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 626 | |             user_id,
[INFO] [stdout] 627 | |             reason
[INFO] [stdout] 628 | |         )
[INFO] [stdout] 629 | |         .execute(&self.pool)
[INFO] [stdout] 630 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:643:31
[INFO] [stdout]     |
[INFO] [stdout] 643 |           let session_records = sqlx::query_as!(
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 644 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 645 | |             r#"
[INFO] [stdout] 646 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 654 | |         .fetch_all(&self.pool)
[INFO] [stdout] 655 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 | /             sqlx::query!(
[INFO] [stdout] 676 | |                 "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 677 | |                 old_session_id,
[INFO] [stdout] 678 | |                 Some("session_rotated")
[INFO] [stdout] 679 | |             )
[INFO] [stdout] 680 | |             .execute(&mut *tx)
[INFO] [stdout] 681 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:686:13
[INFO] [stdout]     |
[INFO] [stdout] 686 | /             sqlx::query!(
[INFO] [stdout] 687 | |                 r#"
[INFO] [stdout] 688 | |                 INSERT INTO sessions (
[INFO] [stdout] 689 | |                     id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 704 | |             .execute(&mut *tx)
[INFO] [stdout] 705 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:723:46
[INFO] [stdout]     |
[INFO] [stdout] 723 |           let expired_session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________________^
[INFO] [stdout] 724 | |             "SELECT id FROM sessions WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 725 | |         )
[INFO] [stdout] 726 | |         .fetch_all(&self.pool)
[INFO] [stdout] 727 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:731:22
[INFO] [stdout]     |
[INFO] [stdout] 731 |           let result = sqlx::query!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 732 | |             "DELETE FROM sessions WHERE expires_at <= NOW() OR revoked_at <= NOW() - INTERVAL '7 days'"
[INFO] [stdout] 733 | |         )
[INFO] [stdout] 734 | |         .execute(&self.pool)
[INFO] [stdout] 735 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:821:30
[INFO] [stdout]     |
[INFO] [stdout] 821 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 822 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 823 | |             r#"
[INFO] [stdout] 824 | |             INSERT INTO refresh_tokens (
[INFO] [stdout] ...   |
[INFO] [stdout] 842 | |         .fetch_one(&self.pool)
[INFO] [stdout] 843 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:869:28
[INFO] [stdout]     |
[INFO] [stdout] 869 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 870 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 871 | |             r#"
[INFO] [stdout] 872 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 879 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 880 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:903:28
[INFO] [stdout]     |
[INFO] [stdout] 903 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 904 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 905 | |             r#"
[INFO] [stdout] 906 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 913 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 914 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:928:29
[INFO] [stdout]     |
[INFO] [stdout] 928 |           let token_records = sqlx::query_as!(
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 929 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 930 | |             r#"
[INFO] [stdout] 931 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 939 | |         .fetch_all(&self.pool)
[INFO] [stdout] 940 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:949:9
[INFO] [stdout]     |
[INFO] [stdout] 949 | /         sqlx::query!(
[INFO] [stdout] 950 | |             "UPDATE refresh_tokens SET replaced_by = $2 WHERE id = $1",
[INFO] [stdout] 951 | |             token_id,
[INFO] [stdout] 952 | |             replacement_id
[INFO] [stdout] 953 | |         )
[INFO] [stdout] 954 | |         .execute(&self.pool)
[INFO] [stdout] 955 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:970:9
[INFO] [stdout]     |
[INFO] [stdout] 970 | /         sqlx::query!(
[INFO] [stdout] 971 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 972 | |             token_id,
[INFO] [stdout] 973 | |             reason
[INFO] [stdout] 974 | |         )
[INFO] [stdout] 975 | |         .execute(&self.pool)
[INFO] [stdout] 976 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:988:36
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ____________________________________^
[INFO] [stdout] 989 | |             "SELECT id FROM refresh_tokens WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 990 | |             family_id
[INFO] [stdout] ...   |
[INFO] [stdout] 993 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:997:9
[INFO] [stdout]      |
[INFO] [stdout]  997 | /         sqlx::query!(
[INFO] [stdout]  998 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout]  999 | |             family_id,
[INFO] [stdout] 1000 | |             reason
[INFO] [stdout] 1001 | |         )
[INFO] [stdout] 1002 | |         .execute(&self.pool)
[INFO] [stdout] 1003 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1017:36
[INFO] [stdout]      |
[INFO] [stdout] 1017 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1018 | |             "SELECT id FROM refresh_tokens WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1019 | |             user_id
[INFO] [stdout] ...    |
[INFO] [stdout] 1022 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1026:9
[INFO] [stdout]      |
[INFO] [stdout] 1026 | /         sqlx::query!(
[INFO] [stdout] 1027 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1028 | |             user_id,
[INFO] [stdout] 1029 | |             reason
[INFO] [stdout] 1030 | |         )
[INFO] [stdout] 1031 | |         .execute(&self.pool)
[INFO] [stdout] 1032 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1046:36
[INFO] [stdout]      |
[INFO] [stdout] 1046 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1047 | |             "SELECT id FROM refresh_tokens WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1048 | |             session_id
[INFO] [stdout] ...    |
[INFO] [stdout] 1051 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 | /         sqlx::query!(
[INFO] [stdout] 1056 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1057 | |             session_id,
[INFO] [stdout] 1058 | |             reason
[INFO] [stdout] 1059 | |         )
[INFO] [stdout] 1060 | |         .execute(&self.pool)
[INFO] [stdout] 1061 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1075:44
[INFO] [stdout]      |
[INFO] [stdout] 1075 |           let expired_token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________________^
[INFO] [stdout] 1076 | |             "SELECT id FROM refresh_tokens WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 1077 | |         )
[INFO] [stdout] 1078 | |         .fetch_all(&self.pool)
[INFO] [stdout] 1079 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1083:22
[INFO] [stdout]      |
[INFO] [stdout] 1083 |           let result = sqlx::query!(
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1084 | |             "DELETE FROM refresh_tokens WHERE expires_at <= NOW() OR (revoked_at IS NOT NULL AND revoked_at <= NOW() - INTERVAL '30 days')"
[INFO] [stdout] 1085 | |         )
[INFO] [stdout] 1086 | |         .execute(&self.pool)
[INFO] [stdout] 1087 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |           let token_records = sqlx::query_as!(
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout] 1101 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 1102 | |             r#"
[INFO] [stdout] 1103 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...    |
[INFO] [stdout] 1111 | |         .fetch_all(&self.pool)
[INFO] [stdout] 1112 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/middleware/auth.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         mut request: Request,
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:149:39
[INFO] [stdout]      |
[INFO] [stdout]  149 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  150 | |                 correlation_id,
[INFO] [stdout]  151 | |                 actor: request.email.clone(),
[INFO] [stdout]  152 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  165 | |                 error_message: Some("Email address already registered".to_string()),
[INFO] [stdout]  166 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  149 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:191:35
[INFO] [stdout]      |
[INFO] [stdout]  191 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  192 | |             correlation_id,
[INFO] [stdout]  193 | |             actor: created_user.external_id.clone(),
[INFO] [stdout]  194 | |             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  207 | |             error_message: None,
[INFO] [stdout]  208 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  191 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:230:47
[INFO] [stdout]      |
[INFO] [stdout]  230 |                       self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________________---------_^
[INFO] [stdout]      | |                                     |
[INFO] [stdout]      | |                                     arguments to this method are incorrect
[INFO] [stdout]  231 | |                         correlation_id,
[INFO] [stdout]  232 | |                         actor: user.external_id.clone(),
[INFO] [stdout]  233 | |                         actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  246 | |                         error_message: Some("Account is locked".to_string()),
[INFO] [stdout]  247 | |                     }).await?;
[INFO] [stdout]      | |_____________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  230 |                     self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:280:51
[INFO] [stdout]      |
[INFO] [stdout]  280 |                           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________________---------_^
[INFO] [stdout]      | |                                         |
[INFO] [stdout]      | |                                         arguments to this method are incorrect
[INFO] [stdout]  281 | |                             correlation_id,
[INFO] [stdout]  282 | |                             actor: user.external_id.clone(),
[INFO] [stdout]  283 | |                             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  296 | |                             error_message: None,
[INFO] [stdout]  297 | |                         }).await?;
[INFO] [stdout]      | |_________________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  280 |                         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:314:55
[INFO] [stdout]      |
[INFO] [stdout]  314 |   ...                   self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _______________________________________---------_^
[INFO] [stdout]      | |                                       |
[INFO] [stdout]      | |                                       arguments to this method are incorrect
[INFO] [stdout]  315 | | ...                       correlation_id,
[INFO] [stdout]  316 | | ...                       actor: user.external_id.clone(),
[INFO] [stdout]  317 | | ...                       actor_type: "system".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  330 | | ...                       error_message: Some("Account locked due to too many failed attempts".to_string()),
[INFO] [stdout]  331 | | ...                   }).await?;
[INFO] [stdout]      | |_______________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  314 |                             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:334:51
[INFO] [stdout]      |
[INFO] [stdout]  334 |                           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________________---------_^
[INFO] [stdout]      | |                                         |
[INFO] [stdout]      | |                                         arguments to this method are incorrect
[INFO] [stdout]  335 | |                             correlation_id,
[INFO] [stdout]  336 | |                             actor: user.external_id.clone(),
[INFO] [stdout]  337 | |                             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  350 | |                             error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  351 | |                         }).await?;
[INFO] [stdout]      | |_________________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  334 |                         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:357:47
[INFO] [stdout]      |
[INFO] [stdout]  357 |                       self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________________---------_^
[INFO] [stdout]      | |                                     |
[INFO] [stdout]      | |                                     arguments to this method are incorrect
[INFO] [stdout]  358 | |                         correlation_id,
[INFO] [stdout]  359 | |                         actor: user.external_id.clone(),
[INFO] [stdout]  360 | |                         actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  373 | |                         error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  374 | |                     }).await?;
[INFO] [stdout]      | |_____________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  357 |                     self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:383:43
[INFO] [stdout]      |
[INFO] [stdout]  383 |                   self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________---------_^
[INFO] [stdout]      | |                                 |
[INFO] [stdout]      | |                                 arguments to this method are incorrect
[INFO] [stdout]  384 | |                     correlation_id,
[INFO] [stdout]  385 | |                     actor: request.email.clone(),
[INFO] [stdout]  386 | |                     actor_type: "unknown".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  399 | |                     error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  400 | |                 }).await?;
[INFO] [stdout]      | |_________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  383 |                 self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:428:39
[INFO] [stdout]      |
[INFO] [stdout]  428 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  429 | |                 correlation_id,
[INFO] [stdout]  430 | |                 actor: user.external_id.clone(),
[INFO] [stdout]  431 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  446 | |                 error_message: None,
[INFO] [stdout]  447 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  428 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:453:39
[INFO] [stdout]      |
[INFO] [stdout]  453 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  454 | |                 correlation_id,
[INFO] [stdout]  455 | |                 actor: request.email.clone(),
[INFO] [stdout]  456 | |                 actor_type: "unknown".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  469 | |                 error_message: Some("User not found".to_string()),
[INFO] [stdout]  470 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  453 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:497:35
[INFO] [stdout]      |
[INFO] [stdout]  497 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  498 | |             correlation_id,
[INFO] [stdout]  499 | |             actor: "system".to_string(),
[INFO] [stdout]  500 | |             actor_type: "system".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  513 | |             error_message: None,
[INFO] [stdout]  514 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  497 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:536:39
[INFO] [stdout]      |
[INFO] [stdout]  536 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  537 | |                 correlation_id,
[INFO] [stdout]  538 | |                 actor: user.external_id.clone(),
[INFO] [stdout]  539 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  552 | |                 error_message: Some("Current password is incorrect".to_string()),
[INFO] [stdout]  553 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  536 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:568:35
[INFO] [stdout]      |
[INFO] [stdout]  568 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  569 | |             correlation_id,
[INFO] [stdout]  570 | |             actor: user.external_id.clone(),
[INFO] [stdout]  571 | |             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  586 | |             error_message: None,
[INFO] [stdout]  587 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  568 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:613:35
[INFO] [stdout]      |
[INFO] [stdout]  613 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  614 | |             correlation_id,
[INFO] [stdout]  615 | |             actor: admin.external_id.clone(),
[INFO] [stdout]  616 | |             actor_type: "admin".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  629 | |             error_message: None,
[INFO] [stdout]  630 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  613 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking testcontainers v0.15.0
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/migrations.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |           let result = sqlx::query_scalar!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 52 | |             "SELECT version FROM _sqlx_migrations ORDER BY version DESC LIMIT 1"
[INFO] [stdout] 53 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/migrations.rs:102:26
[INFO] [stdout]     |
[INFO] [stdout] 102 |               let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 103 | |                 "SELECT EXISTS (
[INFO] [stdout] 104 | |                     SELECT FROM information_schema.tables 
[INFO] [stdout] 105 | |                     WHERE table_schema = 'public' 
[INFO] [stdout] ...   |
[INFO] [stdout] 108 | |                 table
[INFO] [stdout] 109 | |             )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/migrations.rs:232:22
[INFO] [stdout]     |
[INFO] [stdout] 232 |         let result = sqlx::query_scalar!("SELECT 1")
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/repositories.rs:42:30
[INFO] [stdout]    |
[INFO] [stdout] 42 |           let created_record = sqlx::query_as!(
[INFO] [stdout]    |  ______________________________^
[INFO] [stdout] 43 | |             crate::models::user::UserRecord,
[INFO] [stdout] 44 | |             r#"
[INFO] [stdout] 45 | |             INSERT INTO users (
[INFO] [stdout] ...  |
[INFO] [stdout] 62 | |             record.flags
[INFO] [stdout] 63 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]   --> src/db/repositories.rs:73:27
[INFO] [stdout]    |
[INFO] [stdout] 73 |           let user_record = sqlx::query_as!(
[INFO] [stdout]    |  ___________________________^
[INFO] [stdout] 74 | |             crate::models::user::UserRecord,
[INFO] [stdout] 75 | |             r#"
[INFO] [stdout] 76 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...  |
[INFO] [stdout] 81 | |             id
[INFO] [stdout] 82 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:92:27
[INFO] [stdout]     |
[INFO] [stdout]  92 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout]  93 | |             crate::models::user::UserRecord,
[INFO] [stdout]  94 | |             r#"
[INFO] [stdout]  95 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 100 | |             external_id
[INFO] [stdout] 101 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 114 | |             crate::models::user::UserRecord,
[INFO] [stdout] 115 | |             r#"
[INFO] [stdout] 116 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 121 | |             email_hash
[INFO] [stdout] 122 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:141:22
[INFO] [stdout]     |
[INFO] [stdout] 141 |           let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 142 | |             "SELECT EXISTS(SELECT 1 FROM users WHERE email_hash = $1 AND deleted_at IS NULL)",
[INFO] [stdout] 143 | |             email_hash
[INFO] [stdout] 144 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:163:30
[INFO] [stdout]     |
[INFO] [stdout] 163 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 164 | |             crate::models::user::UserRecord,
[INFO] [stdout] 165 | |             r#"
[INFO] [stdout] 166 | |             UPDATE users SET
[INFO] [stdout] ...   |
[INFO] [stdout] 188 | |             record.flags
[INFO] [stdout] 189 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | /         sqlx::query!(
[INFO] [stdout] 200 | |             "UPDATE users SET deleted_at = NOW(), updated_at = NOW() WHERE id = $1",
[INFO] [stdout] 201 | |             id
[INFO] [stdout] 202 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:212:28
[INFO] [stdout]     |
[INFO] [stdout] 212 |           let user_records = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 213 | |             crate::models::user::UserRecord,
[INFO] [stdout] 214 | |             r#"
[INFO] [stdout] 215 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 223 | |             offset
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:234:21
[INFO] [stdout]     |
[INFO] [stdout] 234 |           let count = sqlx::query_scalar!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 235 | |             "SELECT COUNT(*) FROM users WHERE deleted_at IS NULL"
[INFO] [stdout] 236 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:257:30
[INFO] [stdout]     |
[INFO] [stdout] 257 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 258 | |             PasswordCredentialRecord,
[INFO] [stdout] 259 | |             r#"
[INFO] [stdout] 260 | |             INSERT INTO password_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 270 | |             credential.updated_at
[INFO] [stdout] 271 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:281:33
[INFO] [stdout]     |
[INFO] [stdout] 281 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 282 | |             PasswordCredentialRecord,
[INFO] [stdout] 283 | |             r#"
[INFO] [stdout] 284 | |             SELECT user_id, argon2_hash, params_json, last_rotated_at, created_at, updated_at
[INFO] [stdout] ...   |
[INFO] [stdout] 288 | |             user_id
[INFO] [stdout] 289 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:299:30
[INFO] [stdout]     |
[INFO] [stdout] 299 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 300 | |             PasswordCredentialRecord,
[INFO] [stdout] 301 | |             r#"
[INFO] [stdout] 302 | |             UPDATE password_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 313 | |             credential.last_rotated_at
[INFO] [stdout] 314 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 | /         sqlx::query!(
[INFO] [stdout] 325 | |             "DELETE FROM password_credentials WHERE user_id = $1",
[INFO] [stdout] 326 | |             user_id
[INFO] [stdout] 327 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:348:30
[INFO] [stdout]     |
[INFO] [stdout] 348 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 349 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 350 | |             r#"
[INFO] [stdout] 351 | |             INSERT INTO webauthn_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 367 | |             credential.last_used_at
[INFO] [stdout] 368 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:378:33
[INFO] [stdout]     |
[INFO] [stdout] 378 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 379 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 380 | |             r#"
[INFO] [stdout] 381 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 386 | |             id
[INFO] [stdout] 387 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:397:33
[INFO] [stdout]     |
[INFO] [stdout] 397 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 398 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 399 | |             r#"
[INFO] [stdout] 400 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 405 | |             credential_id
[INFO] [stdout] 406 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:416:34
[INFO] [stdout]     |
[INFO] [stdout] 416 |           let credential_records = sqlx::query_as!(
[INFO] [stdout]     |  __________________________________^
[INFO] [stdout] 417 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 418 | |             r#"
[INFO] [stdout] 419 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 425 | |             user_id
[INFO] [stdout] 426 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 437 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 438 | |             r#"
[INFO] [stdout] 439 | |             UPDATE webauthn_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 450 | |             credential.last_used_at
[INFO] [stdout] 451 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 | /         sqlx::query!(
[INFO] [stdout] 462 | |             "DELETE FROM webauthn_credentials WHERE id = $1",
[INFO] [stdout] 463 | |             id
[INFO] [stdout] 464 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:474:9
[INFO] [stdout]     |
[INFO] [stdout] 474 | /         sqlx::query!(
[INFO] [stdout] 475 | |             "DELETE FROM webauthn_credentials WHERE user_id = $1",
[INFO] [stdout] 476 | |             user_id
[INFO] [stdout] 477 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:502:30
[INFO] [stdout]     |
[INFO] [stdout] 502 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 503 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 504 | |             r#"
[INFO] [stdout] 505 | |             INSERT INTO sessions (
[INFO] [stdout] ...   |
[INFO] [stdout] 521 | |             record.csrf_token
[INFO] [stdout] 522 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:550:30
[INFO] [stdout]     |
[INFO] [stdout] 550 |           let session_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 551 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 552 | |             r#"
[INFO] [stdout] 553 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 558 | |             session_id
[INFO] [stdout] 559 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 577 | /         sqlx::query!(
[INFO] [stdout] 578 | |             "UPDATE sessions SET last_seen_at = NOW() WHERE id = $1",
[INFO] [stdout] 579 | |             session_id
[INFO] [stdout] 580 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 | /         sqlx::query!(
[INFO] [stdout] 598 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 599 | |             session_id,
[INFO] [stdout] 600 | |             reason
[INFO] [stdout] 601 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:615:38
[INFO] [stdout]     |
[INFO] [stdout] 615 |           let session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout] 616 | |             "SELECT id FROM sessions WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 617 | |             user_id
[INFO] [stdout] 618 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:624:9
[INFO] [stdout]     |
[INFO] [stdout] 624 | /         sqlx::query!(
[INFO] [stdout] 625 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 626 | |             user_id,
[INFO] [stdout] 627 | |             reason
[INFO] [stdout] 628 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:643:31
[INFO] [stdout]     |
[INFO] [stdout] 643 |           let session_records = sqlx::query_as!(
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 644 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 645 | |             r#"
[INFO] [stdout] 646 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 652 | |             user_id
[INFO] [stdout] 653 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 | /             sqlx::query!(
[INFO] [stdout] 676 | |                 "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 677 | |                 old_session_id,
[INFO] [stdout] 678 | |                 Some("session_rotated")
[INFO] [stdout] 679 | |             )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:686:13
[INFO] [stdout]     |
[INFO] [stdout] 686 | /             sqlx::query!(
[INFO] [stdout] 687 | |                 r#"
[INFO] [stdout] 688 | |                 INSERT INTO sessions (
[INFO] [stdout] 689 | |                     id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 702 | |                 record.csrf_token
[INFO] [stdout] 703 | |             )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:723:46
[INFO] [stdout]     |
[INFO] [stdout] 723 |           let expired_session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________________^
[INFO] [stdout] 724 | |             "SELECT id FROM sessions WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 725 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:731:22
[INFO] [stdout]     |
[INFO] [stdout] 731 |           let result = sqlx::query!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 732 | |             "DELETE FROM sessions WHERE expires_at <= NOW() OR revoked_at <= NOW() - INTERVAL '7 days'"
[INFO] [stdout] 733 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:821:30
[INFO] [stdout]     |
[INFO] [stdout] 821 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 822 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 823 | |             r#"
[INFO] [stdout] 824 | |             INSERT INTO refresh_tokens (
[INFO] [stdout] ...   |
[INFO] [stdout] 840 | |             record.family_id
[INFO] [stdout] 841 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:869:28
[INFO] [stdout]     |
[INFO] [stdout] 869 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 870 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 871 | |             r#"
[INFO] [stdout] 872 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 877 | |             token_hash
[INFO] [stdout] 878 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:903:28
[INFO] [stdout]     |
[INFO] [stdout] 903 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 904 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 905 | |             r#"
[INFO] [stdout] 906 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 911 | |             token_id
[INFO] [stdout] 912 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:928:29
[INFO] [stdout]     |
[INFO] [stdout] 928 |           let token_records = sqlx::query_as!(
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 929 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 930 | |             r#"
[INFO] [stdout] 931 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 937 | |             family_id
[INFO] [stdout] 938 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:949:9
[INFO] [stdout]     |
[INFO] [stdout] 949 | /         sqlx::query!(
[INFO] [stdout] 950 | |             "UPDATE refresh_tokens SET replaced_by = $2 WHERE id = $1",
[INFO] [stdout] 951 | |             token_id,
[INFO] [stdout] 952 | |             replacement_id
[INFO] [stdout] 953 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:970:9
[INFO] [stdout]     |
[INFO] [stdout] 970 | /         sqlx::query!(
[INFO] [stdout] 971 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 972 | |             token_id,
[INFO] [stdout] 973 | |             reason
[INFO] [stdout] 974 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]    --> src/db/repositories.rs:988:36
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ____________________________________^
[INFO] [stdout] 989 | |             "SELECT id FROM refresh_tokens WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 990 | |             family_id
[INFO] [stdout] 991 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:997:9
[INFO] [stdout]      |
[INFO] [stdout]  997 | /         sqlx::query!(
[INFO] [stdout]  998 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout]  999 | |             family_id,
[INFO] [stdout] 1000 | |             reason
[INFO] [stdout] 1001 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1017:36
[INFO] [stdout]      |
[INFO] [stdout] 1017 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1018 | |             "SELECT id FROM refresh_tokens WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1019 | |             user_id
[INFO] [stdout] 1020 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1026:9
[INFO] [stdout]      |
[INFO] [stdout] 1026 | /         sqlx::query!(
[INFO] [stdout] 1027 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1028 | |             user_id,
[INFO] [stdout] 1029 | |             reason
[INFO] [stdout] 1030 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1046:36
[INFO] [stdout]      |
[INFO] [stdout] 1046 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1047 | |             "SELECT id FROM refresh_tokens WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1048 | |             session_id
[INFO] [stdout] 1049 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 | /         sqlx::query!(
[INFO] [stdout] 1056 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1057 | |             session_id,
[INFO] [stdout] 1058 | |             reason
[INFO] [stdout] 1059 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1075:44
[INFO] [stdout]      |
[INFO] [stdout] 1075 |           let expired_token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________________^
[INFO] [stdout] 1076 | |             "SELECT id FROM refresh_tokens WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 1077 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1083:22
[INFO] [stdout]      |
[INFO] [stdout] 1083 |           let result = sqlx::query!(
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1084 | |             "DELETE FROM refresh_tokens WHERE expires_at <= NOW() OR (revoked_at IS NOT NULL AND revoked_at <= NOW() - INTERVAL '30 days')"
[INFO] [stdout] 1085 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |           let token_records = sqlx::query_as!(
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout] 1101 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 1102 | |             r#"
[INFO] [stdout] 1103 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...    |
[INFO] [stdout] 1109 | |             user_id
[INFO] [stdout] 1110 | |         )
[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: set `DATABASE_URL` to use query macros online, or run `cargo sqlx prepare` to update the query cache
[INFO] [stdout]     --> src/db/repositories.rs:1275:18
[INFO] [stdout]      |
[INFO] [stdout] 1275 |           let id = sqlx::query_scalar!(
[INFO] [stdout]      |  __________________^
[INFO] [stdout] 1276 | |             r#"
[INFO] [stdout] 1277 | |             INSERT INTO audit_logs (
[INFO] [stdout] 1278 | |                 correlation_id, actor, actor_type, action, target, target_type,
[INFO] [stdout] ...    |
[INFO] [stdout] 1299 | |             event.error_message
[INFO] [stdout] 1300 | |         )
[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_scalar` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Pool` and `Postgres`
[INFO] [stdout]  --> src/db/connection.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sqlx::{postgres::PgPoolOptions, PgPool, Pool, Postgres};
[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: `warn`
[INFO] [stdout]  --> src/db/connection.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PasswordCredentialRecord` and `WebAuthnCredentialRecord`
[INFO] [stdout]  --> src/db/repositories.rs:8:31
[INFO] [stdout]   |
[INFO] [stdout] 8 |     User, PasswordCredential, PasswordCredentialRecord, 
[INFO] [stdout]   |                               ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 9 |     WebAuthnCredential, WebAuthnCredentialRecord
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]     --> src/db/repositories.rs:1309:5
[INFO] [stdout]      |
[INFO] [stdout] 1309 | use std::net::IpAddr;
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::IpAddr`
[INFO] [stdout]     --> src/db/repositories.rs:1334:9
[INFO] [stdout]      |
[INFO] [stdout] 1334 |     use std::net::IpAddr;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RedisResult`
[INFO] [stdout]  --> src/db/redis.rs:2:45
[INFO] [stdout]   |
[INFO] [stdout] 2 | use redis::{aio::ConnectionManager, Client, RedisResult};
[INFO] [stdout]   |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/db/redis.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::RedisConfig`
[INFO] [stdout]    --> src/middleware/rate_limit.rs:482:9
[INFO] [stdout]     |
[INFO] [stdout] 482 |     use crate::db::RedisConfig;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio_test`
[INFO] [stdout]    --> src/middleware/rate_limit.rs:483:9
[INFO] [stdout]     |
[INFO] [stdout] 483 |     use tokio_test;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PgPool`
[INFO] [stdout]  --> src/models/user.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sqlx::{FromRow, PgPool};
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]    --> src/models/user.rs:962:13
[INFO] [stdout]     |
[INFO] [stdout] 962 |         use std::time::Instant;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/models/session.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/models/audit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/services/auth.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | use anyhow::{Context, Result};
[INFO] [stdout]   |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]  --> src/services/refresh_token.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tokio::time::{interval, sleep};
[INFO] [stdout]   |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::repositories::RefreshTokenRepository`
[INFO] [stdout]    --> src/services/refresh_token.rs:389:9
[INFO] [stdout]     |
[INFO] [stdout] 389 |     use crate::db::repositories::RefreshTokenRepository;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]    --> src/services/refresh_token.rs:390:9
[INFO] [stdout]     |
[INFO] [stdout] 390 |     use std::sync::Arc;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]    --> src/services/refresh_token.rs:391:9
[INFO] [stdout]     |
[INFO] [stdout] 391 |     use uuid::Uuid;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `time::OffsetDateTime`
[INFO] [stdout]  --> src/services/audit.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use time::OffsetDateTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `OffsetDateTime`
[INFO] [stdout]  --> src/services/session.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use time::{Duration, OffsetDateTime};
[INFO] [stdout]   |                      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]  --> src/services/session.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tokio::time::{interval, sleep};
[INFO] [stdout]   |                             ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::db::repositories::SessionRepository`
[INFO] [stdout]    --> src/services/session.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     use crate::db::repositories::SessionRepository;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::net::Ipv4Addr`
[INFO] [stdout]    --> src/services/session.rs:242:9
[INFO] [stdout]     |
[INFO] [stdout] 242 |     use std::net::Ipv4Addr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]    --> src/services/session.rs:243:9
[INFO] [stdout]     |
[INFO] [stdout] 243 |     use uuid::Uuid;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AccountLockout` and `SuspiciousActivity`
[INFO] [stdout]   --> src/services/anti_abuse.rs:10:52
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::middleware::rate_limit::{FailedAttempt, AccountLockout, SuspiciousActivity};
[INFO] [stdout]    |                                                    ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0728]: `await` is only allowed inside `async` functions and blocks
[INFO] [stdout]    --> src/services/anti_abuse.rs:602:66
[INFO] [stdout]     |
[INFO] [stdout] 598 |     fn test_calculate_severity_score() {
[INFO] [stdout]     |     ---------------------------------- this is not `async`
[INFO] [stdout] ...
[INFO] [stdout] 602 |             RedisManager::new(crate::db::RedisConfig::default()).await.unwrap(),
[INFO] [stdout]     |                                                                  ^^^^^ only allowed inside `async` functions and blocks
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handlers/auth.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let mut session_cookie = Cookie::build("session_id").path("/").build();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handlers/auth.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let mut csrf_cookie = Cookie::build("csrf_token").path("/").build();
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/handlers/auth.rs:242:17
[INFO] [stdout]     |
[INFO] [stdout] 242 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session_id`
[INFO] [stdout]    --> src/handlers/auth.rs:407:9
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let session_id = Uuid::parse_str(session_cookie.value())
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cookies`
[INFO] [stdout]    --> src/handlers/auth.rs:448:5
[INFO] [stdout]     |
[INFO] [stdout] 448 |     cookies: Cookies,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cookies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/handlers/oauth.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 |     State(state): State<OAuthState>,
[INFO] [stdout]    |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/migrations.rs:51:22
[INFO] [stdout]    |
[INFO] [stdout] 51 |           let result = sqlx::query_scalar!(
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 52 | |             "SELECT version FROM _sqlx_migrations ORDER BY version DESC LIMIT 1"
[INFO] [stdout] 53 | |         )
[INFO] [stdout] 54 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 55 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/migrations.rs:102:26
[INFO] [stdout]     |
[INFO] [stdout] 102 |               let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 103 | |                 "SELECT EXISTS (
[INFO] [stdout] 104 | |                     SELECT FROM information_schema.tables 
[INFO] [stdout] 105 | |                     WHERE table_schema = 'public' 
[INFO] [stdout] ...   |
[INFO] [stdout] 110 | |             .fetch_one(&self.pool)
[INFO] [stdout] 111 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/repositories.rs:42:30
[INFO] [stdout]    |
[INFO] [stdout] 42 |           let created_record = sqlx::query_as!(
[INFO] [stdout]    |  ______________________________^
[INFO] [stdout] 43 | |             crate::models::user::UserRecord,
[INFO] [stdout] 44 | |             r#"
[INFO] [stdout] 45 | |             INSERT INTO users (
[INFO] [stdout] ...  |
[INFO] [stdout] 64 | |         .fetch_one(&self.pool)
[INFO] [stdout] 65 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]   --> src/db/repositories.rs:73:27
[INFO] [stdout]    |
[INFO] [stdout] 73 |           let user_record = sqlx::query_as!(
[INFO] [stdout]    |  ___________________________^
[INFO] [stdout] 74 | |             crate::models::user::UserRecord,
[INFO] [stdout] 75 | |             r#"
[INFO] [stdout] 76 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...  |
[INFO] [stdout] 83 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 84 | |         .await
[INFO] [stdout]    | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:92:27
[INFO] [stdout]     |
[INFO] [stdout]  92 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout]  93 | |             crate::models::user::UserRecord,
[INFO] [stdout]  94 | |             r#"
[INFO] [stdout]  95 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 102 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 103 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:113:27
[INFO] [stdout]     |
[INFO] [stdout] 113 |           let user_record = sqlx::query_as!(
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 114 | |             crate::models::user::UserRecord,
[INFO] [stdout] 115 | |             r#"
[INFO] [stdout] 116 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 124 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:141:22
[INFO] [stdout]     |
[INFO] [stdout] 141 |           let exists = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 142 | |             "SELECT EXISTS(SELECT 1 FROM users WHERE email_hash = $1 AND deleted_at IS NULL)",
[INFO] [stdout] 143 | |             email_hash
[INFO] [stdout] ...   |
[INFO] [stdout] 146 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:163:30
[INFO] [stdout]     |
[INFO] [stdout] 163 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 164 | |             crate::models::user::UserRecord,
[INFO] [stdout] 165 | |             r#"
[INFO] [stdout] 166 | |             UPDATE users SET
[INFO] [stdout] ...   |
[INFO] [stdout] 190 | |         .fetch_one(&self.pool)
[INFO] [stdout] 191 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 199 | /         sqlx::query!(
[INFO] [stdout] 200 | |             "UPDATE users SET deleted_at = NOW(), updated_at = NOW() WHERE id = $1",
[INFO] [stdout] 201 | |             id
[INFO] [stdout] ...   |
[INFO] [stdout] 204 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:212:28
[INFO] [stdout]     |
[INFO] [stdout] 212 |           let user_records = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 213 | |             crate::models::user::UserRecord,
[INFO] [stdout] 214 | |             r#"
[INFO] [stdout] 215 | |             SELECT id, external_id, email_encrypted, email_hash, email_verified_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 225 | |         .fetch_all(&self.pool)
[INFO] [stdout] 226 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:234:21
[INFO] [stdout]     |
[INFO] [stdout] 234 |           let count = sqlx::query_scalar!(
[INFO] [stdout]     |  _____________________^
[INFO] [stdout] 235 | |             "SELECT COUNT(*) FROM users WHERE deleted_at IS NULL"
[INFO] [stdout] 236 | |         )
[INFO] [stdout] 237 | |         .fetch_one(&self.pool)
[INFO] [stdout] 238 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:257:30
[INFO] [stdout]     |
[INFO] [stdout] 257 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 258 | |             PasswordCredentialRecord,
[INFO] [stdout] 259 | |             r#"
[INFO] [stdout] 260 | |             INSERT INTO password_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 272 | |         .fetch_one(&self.pool)
[INFO] [stdout] 273 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:281:33
[INFO] [stdout]     |
[INFO] [stdout] 281 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 282 | |             PasswordCredentialRecord,
[INFO] [stdout] 283 | |             r#"
[INFO] [stdout] 284 | |             SELECT user_id, argon2_hash, params_json, last_rotated_at, created_at, updated_at
[INFO] [stdout] ...   |
[INFO] [stdout] 290 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 291 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:299:30
[INFO] [stdout]     |
[INFO] [stdout] 299 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 300 | |             PasswordCredentialRecord,
[INFO] [stdout] 301 | |             r#"
[INFO] [stdout] 302 | |             UPDATE password_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 315 | |         .fetch_one(&self.pool)
[INFO] [stdout] 316 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:324:9
[INFO] [stdout]     |
[INFO] [stdout] 324 | /         sqlx::query!(
[INFO] [stdout] 325 | |             "DELETE FROM password_credentials WHERE user_id = $1",
[INFO] [stdout] 326 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 329 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:348:30
[INFO] [stdout]     |
[INFO] [stdout] 348 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 349 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 350 | |             r#"
[INFO] [stdout] 351 | |             INSERT INTO webauthn_credentials (
[INFO] [stdout] ...   |
[INFO] [stdout] 369 | |         .fetch_one(&self.pool)
[INFO] [stdout] 370 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:378:33
[INFO] [stdout]     |
[INFO] [stdout] 378 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 379 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 380 | |             r#"
[INFO] [stdout] 381 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 388 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 389 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:397:33
[INFO] [stdout]     |
[INFO] [stdout] 397 |           let credential_record = sqlx::query_as!(
[INFO] [stdout]     |  _________________________________^
[INFO] [stdout] 398 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 399 | |             r#"
[INFO] [stdout] 400 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 407 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 408 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:416:34
[INFO] [stdout]     |
[INFO] [stdout] 416 |           let credential_records = sqlx::query_as!(
[INFO] [stdout]     |  __________________________________^
[INFO] [stdout] 417 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 418 | |             r#"
[INFO] [stdout] 419 | |             SELECT id, user_id, credential_id, public_key, sign_count, aaguid,
[INFO] [stdout] ...   |
[INFO] [stdout] 427 | |         .fetch_all(&self.pool)
[INFO] [stdout] 428 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:436:30
[INFO] [stdout]     |
[INFO] [stdout] 436 |           let updated_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 437 | |             WebAuthnCredentialRecord,
[INFO] [stdout] 438 | |             r#"
[INFO] [stdout] 439 | |             UPDATE webauthn_credentials SET
[INFO] [stdout] ...   |
[INFO] [stdout] 452 | |         .fetch_one(&self.pool)
[INFO] [stdout] 453 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:461:9
[INFO] [stdout]     |
[INFO] [stdout] 461 | /         sqlx::query!(
[INFO] [stdout] 462 | |             "DELETE FROM webauthn_credentials WHERE id = $1",
[INFO] [stdout] 463 | |             id
[INFO] [stdout] ...   |
[INFO] [stdout] 466 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:474:9
[INFO] [stdout]     |
[INFO] [stdout] 474 | /         sqlx::query!(
[INFO] [stdout] 475 | |             "DELETE FROM webauthn_credentials WHERE user_id = $1",
[INFO] [stdout] 476 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 479 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:502:30
[INFO] [stdout]     |
[INFO] [stdout] 502 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 503 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 504 | |             r#"
[INFO] [stdout] 505 | |             INSERT INTO sessions (
[INFO] [stdout] ...   |
[INFO] [stdout] 523 | |         .fetch_one(&self.pool)
[INFO] [stdout] 524 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:550:30
[INFO] [stdout]     |
[INFO] [stdout] 550 |           let session_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 551 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 552 | |             r#"
[INFO] [stdout] 553 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 560 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 561 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:577:9
[INFO] [stdout]     |
[INFO] [stdout] 577 | /         sqlx::query!(
[INFO] [stdout] 578 | |             "UPDATE sessions SET last_seen_at = NOW() WHERE id = $1",
[INFO] [stdout] 579 | |             session_id
[INFO] [stdout] ...   |
[INFO] [stdout] 582 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 | /         sqlx::query!(
[INFO] [stdout] 598 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 599 | |             session_id,
[INFO] [stdout] 600 | |             reason
[INFO] [stdout] 601 | |         )
[INFO] [stdout] 602 | |         .execute(&self.pool)
[INFO] [stdout] 603 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:615:38
[INFO] [stdout]     |
[INFO] [stdout] 615 |           let session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________^
[INFO] [stdout] 616 | |             "SELECT id FROM sessions WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 617 | |             user_id
[INFO] [stdout] ...   |
[INFO] [stdout] 620 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:624:9
[INFO] [stdout]     |
[INFO] [stdout] 624 | /         sqlx::query!(
[INFO] [stdout] 625 | |             "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 626 | |             user_id,
[INFO] [stdout] 627 | |             reason
[INFO] [stdout] 628 | |         )
[INFO] [stdout] 629 | |         .execute(&self.pool)
[INFO] [stdout] 630 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:643:31
[INFO] [stdout]     |
[INFO] [stdout] 643 |           let session_records = sqlx::query_as!(
[INFO] [stdout]     |  _______________________________^
[INFO] [stdout] 644 | |             crate::models::session::SessionRecord,
[INFO] [stdout] 645 | |             r#"
[INFO] [stdout] 646 | |             SELECT id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 654 | |         .fetch_all(&self.pool)
[INFO] [stdout] 655 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:675:13
[INFO] [stdout]     |
[INFO] [stdout] 675 | /             sqlx::query!(
[INFO] [stdout] 676 | |                 "UPDATE sessions SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 677 | |                 old_session_id,
[INFO] [stdout] 678 | |                 Some("session_rotated")
[INFO] [stdout] 679 | |             )
[INFO] [stdout] 680 | |             .execute(&mut *tx)
[INFO] [stdout] 681 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:686:13
[INFO] [stdout]     |
[INFO] [stdout] 686 | /             sqlx::query!(
[INFO] [stdout] 687 | |                 r#"
[INFO] [stdout] 688 | |                 INSERT INTO sessions (
[INFO] [stdout] 689 | |                     id, user_id, created_at, last_seen_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 704 | |             .execute(&mut *tx)
[INFO] [stdout] 705 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:723:46
[INFO] [stdout]     |
[INFO] [stdout] 723 |           let expired_session_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ______________________________________________^
[INFO] [stdout] 724 | |             "SELECT id FROM sessions WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 725 | |         )
[INFO] [stdout] 726 | |         .fetch_all(&self.pool)
[INFO] [stdout] 727 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:731:22
[INFO] [stdout]     |
[INFO] [stdout] 731 |           let result = sqlx::query!(
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 732 | |             "DELETE FROM sessions WHERE expires_at <= NOW() OR revoked_at <= NOW() - INTERVAL '7 days'"
[INFO] [stdout] 733 | |         )
[INFO] [stdout] 734 | |         .execute(&self.pool)
[INFO] [stdout] 735 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:821:30
[INFO] [stdout]     |
[INFO] [stdout] 821 |           let created_record = sqlx::query_as!(
[INFO] [stdout]     |  ______________________________^
[INFO] [stdout] 822 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 823 | |             r#"
[INFO] [stdout] 824 | |             INSERT INTO refresh_tokens (
[INFO] [stdout] ...   |
[INFO] [stdout] 842 | |         .fetch_one(&self.pool)
[INFO] [stdout] 843 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:869:28
[INFO] [stdout]     |
[INFO] [stdout] 869 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 870 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 871 | |             r#"
[INFO] [stdout] 872 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 879 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 880 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:903:28
[INFO] [stdout]     |
[INFO] [stdout] 903 |           let token_record = sqlx::query_as!(
[INFO] [stdout]     |  ____________________________^
[INFO] [stdout] 904 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 905 | |             r#"
[INFO] [stdout] 906 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 913 | |         .fetch_optional(&self.pool)
[INFO] [stdout] 914 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:928:29
[INFO] [stdout]     |
[INFO] [stdout] 928 |           let token_records = sqlx::query_as!(
[INFO] [stdout]     |  _____________________________^
[INFO] [stdout] 929 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 930 | |             r#"
[INFO] [stdout] 931 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...   |
[INFO] [stdout] 939 | |         .fetch_all(&self.pool)
[INFO] [stdout] 940 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:949:9
[INFO] [stdout]     |
[INFO] [stdout] 949 | /         sqlx::query!(
[INFO] [stdout] 950 | |             "UPDATE refresh_tokens SET replaced_by = $2 WHERE id = $1",
[INFO] [stdout] 951 | |             token_id,
[INFO] [stdout] 952 | |             replacement_id
[INFO] [stdout] 953 | |         )
[INFO] [stdout] 954 | |         .execute(&self.pool)
[INFO] [stdout] 955 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:970:9
[INFO] [stdout]     |
[INFO] [stdout] 970 | /         sqlx::query!(
[INFO] [stdout] 971 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE id = $1",
[INFO] [stdout] 972 | |             token_id,
[INFO] [stdout] 973 | |             reason
[INFO] [stdout] 974 | |         )
[INFO] [stdout] 975 | |         .execute(&self.pool)
[INFO] [stdout] 976 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/repositories.rs:988:36
[INFO] [stdout]     |
[INFO] [stdout] 988 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]     |  ____________________________________^
[INFO] [stdout] 989 | |             "SELECT id FROM refresh_tokens WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 990 | |             family_id
[INFO] [stdout] ...   |
[INFO] [stdout] 993 | |         .await
[INFO] [stdout]     | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:997:9
[INFO] [stdout]      |
[INFO] [stdout]  997 | /         sqlx::query!(
[INFO] [stdout]  998 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE family_id = $1 AND revoked_at IS NULL",
[INFO] [stdout]  999 | |             family_id,
[INFO] [stdout] 1000 | |             reason
[INFO] [stdout] 1001 | |         )
[INFO] [stdout] 1002 | |         .execute(&self.pool)
[INFO] [stdout] 1003 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1017:36
[INFO] [stdout]      |
[INFO] [stdout] 1017 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1018 | |             "SELECT id FROM refresh_tokens WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1019 | |             user_id
[INFO] [stdout] ...    |
[INFO] [stdout] 1022 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1026:9
[INFO] [stdout]      |
[INFO] [stdout] 1026 | /         sqlx::query!(
[INFO] [stdout] 1027 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE user_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1028 | |             user_id,
[INFO] [stdout] 1029 | |             reason
[INFO] [stdout] 1030 | |         )
[INFO] [stdout] 1031 | |         .execute(&self.pool)
[INFO] [stdout] 1032 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1046:36
[INFO] [stdout]      |
[INFO] [stdout] 1046 |           let token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________^
[INFO] [stdout] 1047 | |             "SELECT id FROM refresh_tokens WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1048 | |             session_id
[INFO] [stdout] ...    |
[INFO] [stdout] 1051 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 | /         sqlx::query!(
[INFO] [stdout] 1056 | |             "UPDATE refresh_tokens SET revoked_at = NOW(), revocation_reason = $2 WHERE session_id = $1 AND revoked_at IS NULL",
[INFO] [stdout] 1057 | |             session_id,
[INFO] [stdout] 1058 | |             reason
[INFO] [stdout] 1059 | |         )
[INFO] [stdout] 1060 | |         .execute(&self.pool)
[INFO] [stdout] 1061 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1075:44
[INFO] [stdout]      |
[INFO] [stdout] 1075 |           let expired_token_ids: Vec<Uuid> = sqlx::query_scalar!(
[INFO] [stdout]      |  ____________________________________________^
[INFO] [stdout] 1076 | |             "SELECT id FROM refresh_tokens WHERE expires_at <= NOW() OR revoked_at IS NOT NULL"
[INFO] [stdout] 1077 | |         )
[INFO] [stdout] 1078 | |         .fetch_all(&self.pool)
[INFO] [stdout] 1079 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1083:22
[INFO] [stdout]      |
[INFO] [stdout] 1083 |           let result = sqlx::query!(
[INFO] [stdout]      |  ______________________^
[INFO] [stdout] 1084 | |             "DELETE FROM refresh_tokens WHERE expires_at <= NOW() OR (revoked_at IS NOT NULL AND revoked_at <= NOW() - INTERVAL '30 days')"
[INFO] [stdout] 1085 | |         )
[INFO] [stdout] 1086 | |         .execute(&self.pool)
[INFO] [stdout] 1087 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]     --> src/db/repositories.rs:1100:29
[INFO] [stdout]      |
[INFO] [stdout] 1100 |           let token_records = sqlx::query_as!(
[INFO] [stdout]      |  _____________________________^
[INFO] [stdout] 1101 | |             crate::models::session::RefreshTokenRecord,
[INFO] [stdout] 1102 | |             r#"
[INFO] [stdout] 1103 | |             SELECT id, user_id, session_id, token_hash, created_at, expires_at,
[INFO] [stdout] ...    |
[INFO] [stdout] 1111 | |         .fetch_all(&self.pool)
[INFO] [stdout] 1112 | |         .await
[INFO] [stdout]      | |______________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0308.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-identity-system` (lib) due to 111 previous errors; 22 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/middleware/auth.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         mut request: Request,
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:149:39
[INFO] [stdout]      |
[INFO] [stdout]  149 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  150 | |                 correlation_id,
[INFO] [stdout]  151 | |                 actor: request.email.clone(),
[INFO] [stdout]  152 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  165 | |                 error_message: Some("Email address already registered".to_string()),
[INFO] [stdout]  166 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  149 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:191:35
[INFO] [stdout]      |
[INFO] [stdout]  191 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  192 | |             correlation_id,
[INFO] [stdout]  193 | |             actor: created_user.external_id.clone(),
[INFO] [stdout]  194 | |             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  207 | |             error_message: None,
[INFO] [stdout]  208 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  191 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:230:47
[INFO] [stdout]      |
[INFO] [stdout]  230 |                       self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________________---------_^
[INFO] [stdout]      | |                                     |
[INFO] [stdout]      | |                                     arguments to this method are incorrect
[INFO] [stdout]  231 | |                         correlation_id,
[INFO] [stdout]  232 | |                         actor: user.external_id.clone(),
[INFO] [stdout]  233 | |                         actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  246 | |                         error_message: Some("Account is locked".to_string()),
[INFO] [stdout]  247 | |                     }).await?;
[INFO] [stdout]      | |_____________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  230 |                     self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:280:51
[INFO] [stdout]      |
[INFO] [stdout]  280 |                           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________________---------_^
[INFO] [stdout]      | |                                         |
[INFO] [stdout]      | |                                         arguments to this method are incorrect
[INFO] [stdout]  281 | |                             correlation_id,
[INFO] [stdout]  282 | |                             actor: user.external_id.clone(),
[INFO] [stdout]  283 | |                             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  296 | |                             error_message: None,
[INFO] [stdout]  297 | |                         }).await?;
[INFO] [stdout]      | |_________________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  280 |                         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:314:55
[INFO] [stdout]      |
[INFO] [stdout]  314 |   ...                   self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _______________________________________---------_^
[INFO] [stdout]      | |                                       |
[INFO] [stdout]      | |                                       arguments to this method are incorrect
[INFO] [stdout]  315 | | ...                       correlation_id,
[INFO] [stdout]  316 | | ...                       actor: user.external_id.clone(),
[INFO] [stdout]  317 | | ...                       actor_type: "system".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  330 | | ...                       error_message: Some("Account locked due to too many failed attempts".to_string()),
[INFO] [stdout]  331 | | ...                   }).await?;
[INFO] [stdout]      | |_______________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  314 |                             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:334:51
[INFO] [stdout]      |
[INFO] [stdout]  334 |                           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________________---------_^
[INFO] [stdout]      | |                                         |
[INFO] [stdout]      | |                                         arguments to this method are incorrect
[INFO] [stdout]  335 | |                             correlation_id,
[INFO] [stdout]  336 | |                             actor: user.external_id.clone(),
[INFO] [stdout]  337 | |                             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  350 | |                             error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  351 | |                         }).await?;
[INFO] [stdout]      | |_________________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  334 |                         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:357:47
[INFO] [stdout]      |
[INFO] [stdout]  357 |                       self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________________---------_^
[INFO] [stdout]      | |                                     |
[INFO] [stdout]      | |                                     arguments to this method are incorrect
[INFO] [stdout]  358 | |                         correlation_id,
[INFO] [stdout]  359 | |                         actor: user.external_id.clone(),
[INFO] [stdout]  360 | |                         actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  373 | |                         error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  374 | |                     }).await?;
[INFO] [stdout]      | |_____________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  357 |                     self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                               +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:383:43
[INFO] [stdout]      |
[INFO] [stdout]  383 |                   self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________________---------_^
[INFO] [stdout]      | |                                 |
[INFO] [stdout]      | |                                 arguments to this method are incorrect
[INFO] [stdout]  384 | |                     correlation_id,
[INFO] [stdout]  385 | |                     actor: request.email.clone(),
[INFO] [stdout]  386 | |                     actor_type: "unknown".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  399 | |                     error_message: Some("Invalid credentials".to_string()),
[INFO] [stdout]  400 | |                 }).await?;
[INFO] [stdout]      | |_________________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  383 |                 self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                           +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:428:39
[INFO] [stdout]      |
[INFO] [stdout]  428 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  429 | |                 correlation_id,
[INFO] [stdout]  430 | |                 actor: user.external_id.clone(),
[INFO] [stdout]  431 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  446 | |                 error_message: None,
[INFO] [stdout]  447 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  428 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:453:39
[INFO] [stdout]      |
[INFO] [stdout]  453 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  454 | |                 correlation_id,
[INFO] [stdout]  455 | |                 actor: request.email.clone(),
[INFO] [stdout]  456 | |                 actor_type: "unknown".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  469 | |                 error_message: Some("User not found".to_string()),
[INFO] [stdout]  470 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  453 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:497:35
[INFO] [stdout]      |
[INFO] [stdout]  497 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  498 | |             correlation_id,
[INFO] [stdout]  499 | |             actor: "system".to_string(),
[INFO] [stdout]  500 | |             actor_type: "system".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  513 | |             error_message: None,
[INFO] [stdout]  514 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  497 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:536:39
[INFO] [stdout]      |
[INFO] [stdout]  536 |               self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _____________________________---------_^
[INFO] [stdout]      | |                             |
[INFO] [stdout]      | |                             arguments to this method are incorrect
[INFO] [stdout]  537 | |                 correlation_id,
[INFO] [stdout]  538 | |                 actor: user.external_id.clone(),
[INFO] [stdout]  539 | |                 actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  552 | |                 error_message: Some("Current password is incorrect".to_string()),
[INFO] [stdout]  553 | |             }).await?;
[INFO] [stdout]      | |_____________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  536 |             self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:568:35
[INFO] [stdout]      |
[INFO] [stdout]  568 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  569 | |             correlation_id,
[INFO] [stdout]  570 | |             actor: user.external_id.clone(),
[INFO] [stdout]  571 | |             actor_type: "user".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  586 | |             error_message: None,
[INFO] [stdout]  587 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  568 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]     --> src/services/auth.rs:613:35
[INFO] [stdout]      |
[INFO] [stdout]  613 |           self.audit_repo.log_event(AuditLogEvent {
[INFO] [stdout]      |  _________________________---------_^
[INFO] [stdout]      | |                         |
[INFO] [stdout]      | |                         arguments to this method are incorrect
[INFO] [stdout]  614 | |             correlation_id,
[INFO] [stdout]  615 | |             actor: admin.external_id.clone(),
[INFO] [stdout]  616 | |             actor_type: "admin".to_string(),
[INFO] [stdout] ...    |
[INFO] [stdout]  629 | |             error_message: None,
[INFO] [stdout]  630 | |         }).await?;
[INFO] [stdout]      | |_________^ expected `&AuditLogEvent`, found `AuditLogEvent`
[INFO] [stdout]      |
[INFO] [stdout] note: method defined here
[INFO] [stdout]     --> src/db/repositories.rs:1274:18
[INFO] [stdout]      |
[INFO] [stdout] 1274 |     pub async fn log_event(&self, event: &AuditLogEvent) -> Result<Uuid> {
[INFO] [stdout]      |                  ^^^^^^^^^        ---------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]      |
[INFO] [stdout]  613 |         self.audit_repo.log_event(&AuditLogEvent {
[INFO] [stdout]      |                                   +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/crypto/hashing.rs:289:36
[INFO] [stdout]     |
[INFO] [stdout] 289 |         let hash1 = hasher.hash_ip(ip);
[INFO] [stdout]     |                            ------- ^^ expected `IpAddr`, found `&str`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/crypto/hashing.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn hash_ip(&self, ip: std::net::IpAddr) -> String {
[INFO] [stdout]     |            ^^^^^^^        --------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/crypto/hashing.rs:290:36
[INFO] [stdout]     |
[INFO] [stdout] 290 |         let hash2 = hasher.hash_ip(ip);
[INFO] [stdout]     |                            ------- ^^ expected `IpAddr`, found `&str`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/crypto/hashing.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn hash_ip(&self, ip: std::net::IpAddr) -> String {
[INFO] [stdout]     |            ^^^^^^^        --------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/crypto/hashing.rs:296:45
[INFO] [stdout]     |
[INFO] [stdout] 296 |         let different_hash = hasher.hash_ip("192.168.1.2");
[INFO] [stdout]     |                                     ------- ^^^^^^^^^^^^^ expected `IpAddr`, found `&str`
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/crypto/hashing.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn hash_ip(&self, ip: std::net::IpAddr) -> String {
[INFO] [stdout]     |            ^^^^^^^        --------------------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `public_key` found for struct `Ed25519KeyPair` in the current scope
[INFO] [stdout]    --> src/crypto/keys.rs:282:29
[INFO] [stdout]     |
[INFO] [stdout] 282 |         assert_eq!(key_pair.public_key().as_ref(), &key.public_key);
[INFO] [stdout]     |                             ^^^^^^^^^^ private field, not a method
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/ring-0.17.14/src/signature.rs:335:8
[INFO] [stdout]     |
[INFO] [stdout] 335 |     fn public_key(&self) -> &Self::PublicKey;
[INFO] [stdout]     |        ---------- the method is available for `Ed25519KeyPair` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: trait `KeyPair` which provides `public_key` is implemented but not in scope; perhaps you want to import it
[INFO] [stdout]     |
[INFO] [stdout] 133 +     use ring::signature::KeyPair;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> src/db/migrations.rs:232:22
[INFO] [stdout]     |
[INFO] [stdout] 232 |           let result = sqlx::query_scalar!("SELECT 1")
[INFO] [stdout]     |  ______________________^
[INFO] [stdout] 233 | |             .fetch_one(&pool)
[INFO] [stdout] 234 | |             .await
[INFO] [stdout]     | |__________________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of moved value: `hash1`
[INFO] [stdout]    --> src/crypto/hashing.rs:348:29
[INFO] [stdout]     |
[INFO] [stdout] 341 |             let hash1 = hasher.hash_email(&email);
[INFO] [stdout]     |                 ----- move occurs because `hash1` has type `std::string::String`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 345 |             prop_assert_eq!(hash1, hash2);
[INFO] [stdout]     |                             ----- value moved here
[INFO] [stdout] ...
[INFO] [stdout] 348 |             prop_assert_eq!(hash1.len(), 64);
[INFO] [stdout]     |                             ^^^^^ value borrowed here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 345 |             prop_assert_eq!(hash1.clone(), hash2);
[INFO] [stdout]     |                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: use of moved value: `plaintext`
[INFO] [stdout]    --> src/crypto/encryption.rs:349:41
[INFO] [stdout]     |
[INFO] [stdout] 335 |             plaintext in "[a-zA-Z0-9]{1,100}",
[INFO] [stdout]     |             --------- move occurs because `plaintext` has type `std::string::String`, which does not implement the `Copy` trait
[INFO] [stdout] ...
[INFO] [stdout] 348 |             prop_assert_eq!(decrypted1, plaintext);
[INFO] [stdout]     |                                         --------- value moved here
[INFO] [stdout] 349 |             prop_assert_eq!(decrypted2, plaintext);
[INFO] [stdout]     |                                         ^^^^^^^^^ value used here after move
[INFO] [stdout]     |
[INFO] [stdout] help: consider cloning the value if the performance cost is acceptable
[INFO] [stdout]     |
[INFO] [stdout] 348 |             prop_assert_eq!(decrypted1, plaintext.clone());
[INFO] [stdout]     |                                                  ++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handlers/auth.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |     let mut session_cookie = Cookie::build("session_id").path("/").build();
[INFO] [stdout]     |         ----^^^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/handlers/auth.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |     let mut csrf_cookie = Cookie::build("csrf_token").path("/").build();
[INFO] [stdout]     |         ----^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]    --> src/handlers/auth.rs:242:17
[INFO] [stdout]     |
[INFO] [stdout] 242 |     ConnectInfo(addr): ConnectInfo<SocketAddr>,
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_addr`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session_id`
[INFO] [stdout]    --> src/handlers/auth.rs:407:9
[INFO] [stdout]     |
[INFO] [stdout] 407 |     let session_id = Uuid::parse_str(session_cookie.value())
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cookies`
[INFO] [stdout]    --> src/handlers/auth.rs:448:5
[INFO] [stdout]     |
[INFO] [stdout] 448 |     cookies: Cookies,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cookies`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/handlers/oauth.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 |     State(state): State<OAuthState>,
[INFO] [stdout]    |           ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `user`
[INFO] [stdout]    --> src/models/user.rs:841:26
[INFO] [stdout]     |
[INFO] [stdout] 840 |             prop_assert_eq!(user.locale, locale);
[INFO] [stdout]     |                             ----------- value partially moved here
[INFO] [stdout] 841 |             prop_assert!(user.validate().is_ok());
[INFO] [stdout]     |                          ^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because `user.locale` has type `std::string::String`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0382]: borrow of partially moved value: `credential`
[INFO] [stdout]    --> src/models/user.rs:887:26
[INFO] [stdout]     |
[INFO] [stdout] 886 |             prop_assert_eq!(credential.transports, transports);
[INFO] [stdout]     |                             --------------------- value partially moved here
[INFO] [stdout] 887 |             prop_assert!(credential.validate().is_ok());
[INFO] [stdout]     |                          ^^^^^^^^^^ value borrowed here after partial move
[INFO] [stdout]     |
[INFO] [stdout]     = note: partial move occurs because `credential.transports` has type `Vec<std::string::String>`, which does not implement the `Copy` trait
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hasher`
[INFO] [stdout]    --> src/services/session.rs:248:13
[INFO] [stdout]     |
[INFO] [stdout] 248 |         let hasher = HmacHasher::with_key(b"test_key_32_bytes_long_for_hmac!");
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_hasher`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0282, E0308, E0382, E0599, E0728.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0282`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust-identity-system` (lib test) due to 122 previous errors; 33 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "dfb6c4c40e3bedd462c8abaac78c054210877ffacf1d93fee71008f748ae24a1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dfb6c4c40e3bedd462c8abaac78c054210877ffacf1d93fee71008f748ae24a1", kill_on_drop: false }`
[INFO] [stdout] dfb6c4c40e3bedd462c8abaac78c054210877ffacf1d93fee71008f748ae24a1
