[INFO] cloning repository https://github.com/dbrowne/alphavantage
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dbrowne/alphavantage" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdbrowne%2Falphavantage", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdbrowne%2Falphavantage'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 65afd31bb7ef58b93ec52cb6ea0ba8915c592e6c
[INFO] checking dbrowne/alphavantage against try#95813608313bff49cfc1afc393a946a3c085b772 for pr-148946
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdbrowne%2Falphavantage" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/dbrowne/alphavantage
[INFO] finished tweaking git repo https://github.com/dbrowne/alphavantage
[INFO] tweaked toml for git repo https://github.com/dbrowne/alphavantage written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/dbrowne/alphavantage on toolchain 95813608313bff49cfc1afc393a946a3c085b772
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/dbrowne/alphavantage 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" "+95813608313bff49cfc1afc393a946a3c085b772" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] caadfe10e0a8ca0fc4dfb3306c9cd1a04135812daf22b1dcebfd6a7f9890c64a
[INFO] running `Command { std: "docker" "start" "-a" "caadfe10e0a8ca0fc4dfb3306c9cd1a04135812daf22b1dcebfd6a7f9890c64a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "caadfe10e0a8ca0fc4dfb3306c9cd1a04135812daf22b1dcebfd6a7f9890c64a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "caadfe10e0a8ca0fc4dfb3306c9cd1a04135812daf22b1dcebfd6a7f9890c64a", kill_on_drop: false }`
[INFO] [stdout] caadfe10e0a8ca0fc4dfb3306c9cd1a04135812daf22b1dcebfd6a7f9890c64a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+95813608313bff49cfc1afc393a946a3c085b772" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 63ee66adca9286ea7d62d00cebc9828ae1c0839816c32258a77b8db79e6c6f6c
[INFO] running `Command { std: "docker" "start" "-a" "63ee66adca9286ea7d62d00cebc9828ae1c0839816c32258a77b8db79e6c6f6c", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking log v0.4.28
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling cc v1.2.29
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]    Compiling httparse v1.10.1
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]    Compiling openssl v0.10.73
[INFO] [stderr]    Compiling native-tls v0.2.14
[INFO] [stderr]     Checking regex-syntax v0.8.5
[INFO] [stderr]     Checking sync_wrapper v1.0.2
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking tower-layer v0.3.3
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling rust_decimal v1.37.2
[INFO] [stderr]     Checking iri-string v0.7.8
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]     Checking tinyvec v1.9.0
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]     Checking rustls-pki-types v1.12.0
[INFO] [stderr]     Checking encoding_rs v0.8.35
[INFO] [stderr]     Checking anstyle-query v1.1.3
[INFO] [stderr]     Checking regex-syntax v0.6.29
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking http-body v1.0.1
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking anstream v0.6.19
[INFO] [stderr]     Checking http-body-util v0.1.3
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking raw-cpuid v11.5.0
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]     Checking unicode-normalization v0.1.24
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking md-5 v0.10.6
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking spinning_top v0.3.0
[INFO] [stderr]    Compiling bigdecimal v0.4.8
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling openssl-sys v0.9.109
[INFO] [stderr]     Checking siphasher v1.0.1
[INFO] [stderr]     Checking fallible-iterator v0.2.0
[INFO] [stderr]     Checking stringprep v0.1.5
[INFO] [stderr]     Checking futures-timer v3.0.3
[INFO] [stderr]     Checking web-time v1.1.0
[INFO] [stderr]    Compiling pq-sys v0.7.2
[INFO] [stderr]     Checking nonzero_ext v0.3.0
[INFO] [stderr]     Checking phf_shared v0.11.3
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking scheduled-thread-pool v0.2.7
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]     Checking phf v0.11.3
[INFO] [stderr]     Checking whoami v1.6.0
[INFO] [stderr]     Checking r2d2 v0.8.10
[INFO] [stderr]     Checking unicode-width v0.2.1
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking scoped-futures v0.1.4
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking num_cpus v1.17.0
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]     Checking dashmap v6.1.0
[INFO] [stderr]     Checking deadpool-runtime v0.1.4
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]     Checking quanta v0.12.6
[INFO] [stderr]     Checking csv-core v0.1.12
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking unit-prefix v0.5.1
[INFO] [stderr]     Checking console v0.16.0
[INFO] [stderr]     Checking clap_builder v4.5.41
[INFO] [stderr]     Checking jiff v0.2.15
[INFO] [stderr]     Checking predicates-core v1.0.9
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking indicatif v0.18.0
[INFO] [stderr]     Checking sdd v3.0.8
[INFO] [stderr]     Checking termtree v0.5.1
[INFO] [stderr]     Checking predicates v3.1.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking predicates-tree v1.0.12
[INFO] [stderr]     Checking diff v0.1.13
[INFO] [stderr]     Checking yansi v1.0.1
[INFO] [stderr]     Checking fragile v2.0.1
[INFO] [stderr]     Checking downcast v0.11.0
[INFO] [stderr]     Checking dotenv v0.15.0
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]     Checking scc v2.3.4
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.1
[INFO] [stderr]     Checking pretty_assertions v1.4.1
[INFO] [stderr]     Checking postgres-protocol v0.6.8
[INFO] [stderr]     Checking postgres-types v0.2.9
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling diesel_table_macro_syntax v0.2.0
[INFO] [stderr]     Checking tempfile v3.20.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling clap_derive v4.5.41
[INFO] [stderr]     Checking env_filter v0.1.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]    Compiling serial_test_derive v3.2.0
[INFO] [stderr]     Checking tokio v1.46.1
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]    Compiling mockall_derive v0.12.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking env_logger v0.11.8
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]     Checking clap v4.5.41
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling dsl_auto_type v0.1.3
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking governor v0.10.0
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]    Compiling diesel_derives v2.2.6
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking mockall v0.12.1
[INFO] [stderr]     Checking serial_test v3.2.0
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking tokio-util v0.7.15
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking tower v0.5.2
[INFO] [stderr]     Checking bb8 v0.9.0
[INFO] [stderr]     Checking tokio-stream v0.1.17
[INFO] [stderr]     Checking deadpool v0.10.0
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking tokio-test v0.4.4
[INFO] [stderr]     Checking tower-http v0.6.6
[INFO] [stderr]     Checking h2 v0.4.11
[INFO] [stderr]     Checking tokio-postgres v0.7.13
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking csv v1.3.1
[INFO] [stderr]     Checking serde_test v1.0.177
[INFO] [stderr]     Checking assert-json-diff v2.0.2
[INFO] [stderr]     Checking av-core v0.1.0 (/opt/rustwide/workdir/crates/av-core)
[INFO] [stderr]     Checking av-models v0.1.0 (/opt/rustwide/workdir/crates/av-models)
[INFO] [stderr]     Checking diesel v2.2.12
[INFO] [stdout] warning: unused variable: `max_4bit`
[INFO] [stdout]    --> crates/av-core/src/types/market.rs:886:9
[INFO] [stdout]     |
[INFO] [stdout] 886 |     let max_4bit = u32::MAX >> 4; // 60 bits available for ID
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_4bit`
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W unused-variables`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_5bit`
[INFO] [stdout]    --> crates/av-core/src/types/market.rs:887:9
[INFO] [stdout]     |
[INFO] [stdout] 887 |     let max_5bit = u32::MAX >> 5; // 59 bits available for ID
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_5bit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_6bit`
[INFO] [stdout]    --> crates/av-core/src/types/market.rs:888:9
[INFO] [stdout]     |
[INFO] [stdout] 888 |     let max_6bit = u32::MAX >> 6; // 58 bits available for ID
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_6bit`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking hyper v1.6.0
[INFO] [stderr]     Checking hyper-util v0.1.15
[INFO] [stderr]     Checking hyper-tls v0.6.0
[INFO] [stderr]     Checking wiremock v0.6.4
[INFO] [stderr]     Checking reqwest v0.12.23
[INFO] [stderr]     Checking av-client v0.1.0 (/opt/rustwide/workdir/crates/av-client)
[INFO] [stdout] warning: fields `pe_ratio` and `dividend_yield` are never read
[INFO] [stdout]   --> crates/av-client/examples/portfolio_tracker.rs:49:3
[INFO] [stdout]    |
[INFO] [stdout] 39 | struct HoldingAnalysis {
[INFO] [stdout]    |        --------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 49 |   pe_ratio: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^
[INFO] [stdout] 50 |   dividend_yield: Option<f64>,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HoldingAnalysis` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: requested on the command line with `-W dead-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_top_movers` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:425:4
[INFO] [stdout]     |
[INFO] [stdout] 425 | fn display_top_movers(movers: &TopGainersLosers) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_volume` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:496:4
[INFO] [stdout]     |
[INFO] [stdout] 496 | fn format_volume(volume: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_portfolio_sentiment` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:513:4
[INFO] [stdout]     |
[INFO] [stdout] 513 | fn display_portfolio_sentiment(portfolio: &[Holding], sentiment_data: &HashMap<String, f64>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_loading_progress` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:612:4
[INFO] [stdout]     |
[INFO] [stdout] 612 | fn show_loading_progress(current: usize, total: usize, symbol: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_holding_update` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:626:4
[INFO] [stdout]     |
[INFO] [stdout] 626 | fn display_holding_update(holding: &HoldingAnalysis) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_screen` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:647:4
[INFO] [stdout]     |
[INFO] [stdout] 647 | fn clear_screen() {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_terminal_colors` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:654:4
[INFO] [stdout]     |
[INFO] [stdout] 654 | fn setup_terminal_colors() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_progress` is never used
[INFO] [stdout]    --> crates/av-client/examples/portfolio_tracker.rs:670:4
[INFO] [stdout]     |
[INFO] [stdout] 670 | fn show_progress(current: usize, total: usize, message: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sentiment_label` and `relevance_score` are never read
[INFO] [stdout]   --> crates/av-client/examples/news_analysis.rs:43:3
[INFO] [stdout]    |
[INFO] [stdout] 40 | struct TickerSentimentSummary {
[INFO] [stdout]    |        ---------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 43 |   sentiment_label: String,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 44 |   mention_count: u32,
[INFO] [stdout] 45 |   relevance_score: f64,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TickerSentimentSummary` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: requested on the command line with `-W dead-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `mention_count` is never read
[INFO] [stdout]   --> crates/av-client/examples/news_analysis.rs:54:3
[INFO] [stdout]    |
[INFO] [stdout] 50 | struct TopicSentiment {
[INFO] [stdout]    |        -------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |   mention_count: u32,
[INFO] [stdout]    |   ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TopicSentiment` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sentiment_score`, `time_published`, and `url` are never read
[INFO] [stdout]   --> crates/av-client/examples/news_analysis.rs:63:3
[INFO] [stdout]    |
[INFO] [stdout] 59 | struct Headline {
[INFO] [stdout]    |        -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 63 |   sentiment_score: f64,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^^
[INFO] [stdout] 64 |   time_published: String,
[INFO] [stdout]    |   ^^^^^^^^^^^^^^
[INFO] [stdout] 65 |   url: String,
[INFO] [stdout]    |   ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Headline` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking diesel-async v0.6.1
[INFO] [stderr]     Checking av-database-postgres v0.1.0 (/opt/rustwide/workdir/crates/av-database/postgres)
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:104:67
[INFO] [stdout]     |
[INFO] [stdout] 104 |     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout]     |                                                                   ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 104 -     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout] 104 +     diesel_async::RunQueryDsl::first(newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 104 -     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout] 104 +     diesel::RunQueryDsl::first(newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     diesel_async::RunQueryDsl::load(newsoverviews::table
[INFO] [stdout] 113 +       .filter(newsoverviews::sid.eq(sid))
[INFO] [stdout] 114 +       .filter(newsoverviews::creation.ge(chrono::Utc::now() - chrono::Duration::days(days as i64)))
[INFO] [stdout] 115 +       .order(newsoverviews::creation.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     diesel::RunQueryDsl::load(newsoverviews::table
[INFO] [stdout] 113 +       .filter(newsoverviews::sid.eq(sid))
[INFO] [stdout] 114 +       .filter(newsoverviews::creation.ge(chrono::Utc::now() - chrono::Duration::days(days as i64)))
[INFO] [stdout] 115 +       .order(newsoverviews::creation.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:179:6
[INFO] [stdout]     |
[INFO] [stdout] 179 |     .load::<SentimentSummary>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 128 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 129 +       r#"
[INFO] [stdout] 130 +             WITH recent_news AS (
[INFO] [stdout] 131 +                 SELECT n.*, f.osentiment, f.sentlabel
[INFO] [stdout] 132 +                 FROM newsoverviews n
[INFO] [stdout] 133 +                 JOIN feeds f ON n.id = f.newsoverviewid
[INFO] [stdout] 134 +                 WHERE n.sid = $1
[INFO] [stdout] 135 +                     AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 136 +             ),
[INFO] [stdout] 137 +             sentiment_counts AS (
[INFO] [stdout] 138 +                 SELECT 
[INFO] [stdout] 139 +                     COUNT(*) as total,
[INFO] [stdout] 140 +                     COUNT(CASE WHEN sentlabel = 'Bullish' THEN 1 END) as bullish,
[INFO] [stdout] 141 +                     COUNT(CASE WHEN sentlabel = 'Bearish' THEN 1 END) as bearish,
[INFO] [stdout] 142 +                     COUNT(CASE WHEN sentlabel = 'Neutral' THEN 1 END) as neutral
[INFO] [stdout] 143 +                 FROM recent_news
[INFO] [stdout] 144 +             )
[INFO] [stdout] 145 +             SELECT 
[INFO] [stdout] 146 +                 $1 as sid,
[INFO] [stdout] 147 +                 AVG(rn.osentiment) as avg_sentiment,
[INFO] [stdout] 148 +                 COUNT(DISTINCT rn.id) as article_count,
[INFO] [stdout] 149 +                 (sc.bullish::float8 / NULLIF(sc.total, 0) * 100) as bullish_pct,
[INFO] [stdout] 150 +                 (sc.bearish::float8 / NULLIF(sc.total, 0) * 100) as bearish_pct,
[INFO] [stdout] 151 +                 (sc.neutral::float8 / NULLIF(sc.total, 0) * 100) as neutral_pct,
[INFO] [stdout] 152 +                 COALESCE(
[INFO] [stdout] 153 +                     jsonb_agg(DISTINCT 
[INFO] [stdout] 154 +                         jsonb_build_object(
[INFO] [stdout] 155 +                             'topic', tr.name,
[INFO] [stdout] 156 +                             'avg_relevance', tm.avg_relevance
[INFO] [stdout] 157 +                         )
[INFO] [stdout] 158 +                     ) FILTER (WHERE tr.name IS NOT NULL),
[INFO] [stdout] 159 +                     '[]'::jsonb
[INFO] [stdout] 160 +                 ) as topics
[INFO] [stdout] 161 +             FROM recent_news rn
[INFO] [stdout] 162 +             CROSS JOIN sentiment_counts sc
[INFO] [stdout] 163 +             LEFT JOIN (
[INFO] [stdout] 164 +                 SELECT 
[INFO] [stdout] 165 +                     f.newsoverviewid,
[INFO] [stdout] 166 +                     tm.topicid,
[INFO] [stdout] 167 +                     AVG(tm.relscore) as avg_relevance
[INFO] [stdout] 168 +                 FROM feeds f
[INFO] [stdout] 169 +                 JOIN topicmaps tm ON f.id = tm.feedid
[INFO] [stdout] 170 +                 WHERE f.newsoverviewid IN (SELECT id FROM recent_news)
[INFO] [stdout] 171 +                 GROUP BY f.newsoverviewid, tm.topicid
[INFO] [stdout] 172 +             ) tm ON rn.id = tm.newsoverviewid
[INFO] [stdout] 173 +             LEFT JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 174 +             GROUP BY sc.bullish, sc.bearish, sc.neutral, sc.total
[INFO] [stdout] 175 +             "#,
[INFO] [stdout] 176 +     )
[INFO] [stdout] 177 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 178 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 128 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 129 +       r#"
[INFO] [stdout] 130 +             WITH recent_news AS (
[INFO] [stdout] 131 +                 SELECT n.*, f.osentiment, f.sentlabel
[INFO] [stdout] 132 +                 FROM newsoverviews n
[INFO] [stdout] 133 +                 JOIN feeds f ON n.id = f.newsoverviewid
[INFO] [stdout] 134 +                 WHERE n.sid = $1
[INFO] [stdout] 135 +                     AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 136 +             ),
[INFO] [stdout] 137 +             sentiment_counts AS (
[INFO] [stdout] 138 +                 SELECT 
[INFO] [stdout] 139 +                     COUNT(*) as total,
[INFO] [stdout] 140 +                     COUNT(CASE WHEN sentlabel = 'Bullish' THEN 1 END) as bullish,
[INFO] [stdout] 141 +                     COUNT(CASE WHEN sentlabel = 'Bearish' THEN 1 END) as bearish,
[INFO] [stdout] 142 +                     COUNT(CASE WHEN sentlabel = 'Neutral' THEN 1 END) as neutral
[INFO] [stdout] 143 +                 FROM recent_news
[INFO] [stdout] 144 +             )
[INFO] [stdout] 145 +             SELECT 
[INFO] [stdout] 146 +                 $1 as sid,
[INFO] [stdout] 147 +                 AVG(rn.osentiment) as avg_sentiment,
[INFO] [stdout] 148 +                 COUNT(DISTINCT rn.id) as article_count,
[INFO] [stdout] 149 +                 (sc.bullish::float8 / NULLIF(sc.total, 0) * 100) as bullish_pct,
[INFO] [stdout] 150 +                 (sc.bearish::float8 / NULLIF(sc.total, 0) * 100) as bearish_pct,
[INFO] [stdout] 151 +                 (sc.neutral::float8 / NULLIF(sc.total, 0) * 100) as neutral_pct,
[INFO] [stdout] 152 +                 COALESCE(
[INFO] [stdout] 153 +                     jsonb_agg(DISTINCT 
[INFO] [stdout] 154 +                         jsonb_build_object(
[INFO] [stdout] 155 +                             'topic', tr.name,
[INFO] [stdout] 156 +                             'avg_relevance', tm.avg_relevance
[INFO] [stdout] 157 +                         )
[INFO] [stdout] 158 +                     ) FILTER (WHERE tr.name IS NOT NULL),
[INFO] [stdout] 159 +                     '[]'::jsonb
[INFO] [stdout] 160 +                 ) as topics
[INFO] [stdout] 161 +             FROM recent_news rn
[INFO] [stdout] 162 +             CROSS JOIN sentiment_counts sc
[INFO] [stdout] 163 +             LEFT JOIN (
[INFO] [stdout] 164 +                 SELECT 
[INFO] [stdout] 165 +                     f.newsoverviewid,
[INFO] [stdout] 166 +                     tm.topicid,
[INFO] [stdout] 167 +                     AVG(tm.relscore) as avg_relevance
[INFO] [stdout] 168 +                 FROM feeds f
[INFO] [stdout] 169 +                 JOIN topicmaps tm ON f.id = tm.feedid
[INFO] [stdout] 170 +                 WHERE f.newsoverviewid IN (SELECT id FROM recent_news)
[INFO] [stdout] 171 +                 GROUP BY f.newsoverviewid, tm.topicid
[INFO] [stdout] 172 +             ) tm ON rn.id = tm.newsoverviewid
[INFO] [stdout] 173 +             LEFT JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 174 +             GROUP BY sc.bullish, sc.bearish, sc.neutral, sc.total
[INFO] [stdout] 175 +             "#,
[INFO] [stdout] 176 +     )
[INFO] [stdout] 177 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 178 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:233:70
[INFO] [stdout]     |
[INFO] [stdout] 233 |         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^ multiple `get_results` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 233 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 233 +         diesel::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 233 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 233 +         diesel_async::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:264:70
[INFO] [stdout]     |
[INFO] [stdout] 264 |         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^ multiple `get_results` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 264 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 264 +         diesel::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 264 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 264 +         diesel_async::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:339:34
[INFO] [stdout]     |
[INFO] [stdout] 339 |     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout]     |                                  ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 339 -     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout] 339 +     diesel_async::RunQueryDsl::first(articles::table.find(hashid), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 339 -     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout] 339 +     diesel::RunQueryDsl::first(articles::table.find(hashid), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:351:8
[INFO] [stdout]     |
[INFO] [stdout] 351 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 347 ~     diesel_async::RunQueryDsl::load(articles::table
[INFO] [stdout] 348 +       .filter(articles::category.eq(category))
[INFO] [stdout] 349 +       .order(articles::ct.desc())
[INFO] [stdout] 350 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 347 ~     diesel::RunQueryDsl::load(articles::table
[INFO] [stdout] 348 +       .filter(articles::category.eq(category))
[INFO] [stdout] 349 +       .order(articles::ct.desc())
[INFO] [stdout] 350 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:387:8
[INFO] [stdout]     |
[INFO] [stdout] 387 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 384 ~     if let Some(author) = diesel_async::RunQueryDsl::first(authors::table
[INFO] [stdout] 385 +       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 +       .select(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 384 ~     if let Some(author) = diesel::RunQueryDsl::first(authors::table
[INFO] [stdout] 385 +       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 +       .select(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:384:27
[INFO] [stdout]     |
[INFO] [stdout] 384 |       if let Some(author) = authors::table
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 385 | |       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 | |       .select(authors::id)
[INFO] [stdout] 387 | |       .first::<i32>(conn)
[INFO] [stdout] 388 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:398:8
[INFO] [stdout]     |
[INFO] [stdout] 398 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 395 ~     diesel::RunQueryDsl::get_result(insert_into(authors::table)
[INFO] [stdout] 396 +       .values(NewAuthor { author_name: name })
[INFO] [stdout] 397 +       .returning(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 395 ~     diesel_async::RunQueryDsl::get_result(insert_into(authors::table)
[INFO] [stdout] 396 +       .values(NewAuthor { author_name: name })
[INFO] [stdout] 397 +       .returning(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:462:8
[INFO] [stdout]     |
[INFO] [stdout] 462 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     if let Some(source) = diesel_async::RunQueryDsl::first(sources::table
[INFO] [stdout] 459 +       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 +       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 +       .select(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     if let Some(source) = diesel::RunQueryDsl::first(sources::table
[INFO] [stdout] 459 +       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 +       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 +       .select(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:458:27
[INFO] [stdout]     |
[INFO] [stdout] 458 |       if let Some(source) = sources::table
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 459 | |       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 | |       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 | |       .select(sources::id)
[INFO] [stdout] 462 | |       .first::<i32>(conn)
[INFO] [stdout] 463 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:473:8
[INFO] [stdout]     |
[INFO] [stdout] 473 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 470 ~     diesel::RunQueryDsl::get_result(insert_into(sources::table)
[INFO] [stdout] 471 +       .values(NewSource { source_name: name, domain })
[INFO] [stdout] 472 +       .returning(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 470 ~     diesel_async::RunQueryDsl::get_result(insert_into(sources::table)
[INFO] [stdout] 471 +       .values(NewSource { source_name: name, domain })
[INFO] [stdout] 472 +       .returning(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:521:73
[INFO] [stdout]     |
[INFO] [stdout] 521 |       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                         ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 521 -       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 521 +       let inserted = diesel::RunQueryDsl::execute(insert_into(tickersentiments::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 521 -       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 521 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(tickersentiments::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:560:6
[INFO] [stdout]     |
[INFO] [stdout] 560 |     .load::<SentimentTrend>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 539 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 540 +       r#"
[INFO] [stdout] 541 +             SELECT 
[INFO] [stdout] 542 +                 time_bucket('{}', n.creation) AS bucket,
[INFO] [stdout] 543 +                 AVG(ts.tsentiment) as avg_sentiment,
[INFO] [stdout] 544 +                 AVG(ts.relevance) as avg_relevance,
[INFO] [stdout] 545 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 546 +                 SUM(CASE WHEN ts.sentiment_label = 'Bullish' THEN 1 ELSE 0 END)::float8 / 
[INFO] [stdout] 547 +                     NULLIF(COUNT(*), 0) as bullish_ratio
[INFO] [stdout] 548 +             FROM tickersentiments ts
[INFO] [stdout] 549 +             JOIN feeds f ON ts.feedid = f.id
[INFO] [stdout] 550 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 551 +             WHERE ts.sid = $1
[INFO] [stdout] 552 +                 AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 553 +             GROUP BY bucket
[INFO] [stdout] 554 +             ORDER BY bucket DESC
[INFO] [stdout] 555 +             "#,
[INFO] [stdout] 556 +       bucket_size
[INFO] [stdout] 557 +     ))
[INFO] [stdout] 558 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 559 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 539 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 540 +       r#"
[INFO] [stdout] 541 +             SELECT 
[INFO] [stdout] 542 +                 time_bucket('{}', n.creation) AS bucket,
[INFO] [stdout] 543 +                 AVG(ts.tsentiment) as avg_sentiment,
[INFO] [stdout] 544 +                 AVG(ts.relevance) as avg_relevance,
[INFO] [stdout] 545 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 546 +                 SUM(CASE WHEN ts.sentiment_label = 'Bullish' THEN 1 ELSE 0 END)::float8 / 
[INFO] [stdout] 547 +                     NULLIF(COUNT(*), 0) as bullish_ratio
[INFO] [stdout] 548 +             FROM tickersentiments ts
[INFO] [stdout] 549 +             JOIN feeds f ON ts.feedid = f.id
[INFO] [stdout] 550 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 551 +             WHERE ts.sid = $1
[INFO] [stdout] 552 +                 AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 553 +             GROUP BY bucket
[INFO] [stdout] 554 +             ORDER BY bucket DESC
[INFO] [stdout] 555 +             "#,
[INFO] [stdout] 556 +       bucket_size
[INFO] [stdout] 557 +     ))
[INFO] [stdout] 558 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 559 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:595:8
[INFO] [stdout]     |
[INFO] [stdout] 595 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 592 ~     if let Some(topic) = diesel_async::RunQueryDsl::first(topicrefs::table
[INFO] [stdout] 593 +       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 +       .select(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 592 ~     if let Some(topic) = diesel::RunQueryDsl::first(topicrefs::table
[INFO] [stdout] 593 +       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 +       .select(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:592:26
[INFO] [stdout]     |
[INFO] [stdout] 592 |       if let Some(topic) = topicrefs::table
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 593 | |       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 | |       .select(topicrefs::id)
[INFO] [stdout] 595 | |       .first::<i32>(conn)
[INFO] [stdout] 596 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:605:8
[INFO] [stdout]     |
[INFO] [stdout] 605 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 602 ~     diesel::RunQueryDsl::get_result(insert_into(topicrefs::table)
[INFO] [stdout] 603 +       .values(NewTopicRef { name })
[INFO] [stdout] 604 +       .returning(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 602 ~     diesel_async::RunQueryDsl::get_result(insert_into(topicrefs::table)
[INFO] [stdout] 603 +       .values(NewTopicRef { name })
[INFO] [stdout] 604 +       .returning(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:650:66
[INFO] [stdout]     |
[INFO] [stdout] 650 |       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 650 -       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 650 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topicmaps::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 650 -       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 650 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topicmaps::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:687:6
[INFO] [stdout]     |
[INFO] [stdout] 687 |     .load::<TrendingTopic>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 667 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 668 +       r#"
[INFO] [stdout] 669 +             SELECT 
[INFO] [stdout] 670 +                 tr.name as topic_name,
[INFO] [stdout] 671 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 672 +                 AVG(tm.relscore) as avg_relevance,
[INFO] [stdout] 673 +                 AVG(f.osentiment) as avg_sentiment,
[INFO] [stdout] 674 +                 COUNT(DISTINCT tm.sid)::bigint as unique_symbols
[INFO] [stdout] 675 +             FROM topicmaps tm
[INFO] [stdout] 676 +             JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 677 +             JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 678 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 679 +             WHERE n.creation >= NOW() - INTERVAL '1 day' * $1
[INFO] [stdout] 680 +             GROUP BY tr.name
[INFO] [stdout] 681 +             ORDER BY mention_count DESC
[INFO] [stdout] 682 +             LIMIT $2
[INFO] [stdout] 683 +             "#,
[INFO] [stdout] 684 +     )
[INFO] [stdout] 685 +     .bind::<Integer, _>(days)
[INFO] [stdout] 686 +     .bind::<BigInt, _>(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 667 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 668 +       r#"
[INFO] [stdout] 669 +             SELECT 
[INFO] [stdout] 670 +                 tr.name as topic_name,
[INFO] [stdout] 671 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 672 +                 AVG(tm.relscore) as avg_relevance,
[INFO] [stdout] 673 +                 AVG(f.osentiment) as avg_sentiment,
[INFO] [stdout] 674 +                 COUNT(DISTINCT tm.sid)::bigint as unique_symbols
[INFO] [stdout] 675 +             FROM topicmaps tm
[INFO] [stdout] 676 +             JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 677 +             JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 678 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 679 +             WHERE n.creation >= NOW() - INTERVAL '1 day' * $1
[INFO] [stdout] 680 +             GROUP BY tr.name
[INFO] [stdout] 681 +             ORDER BY mention_count DESC
[INFO] [stdout] 682 +             LIMIT $2
[INFO] [stdout] 683 +             "#,
[INFO] [stdout] 684 +     )
[INFO] [stdout] 685 +     .bind::<Integer, _>(days)
[INFO] [stdout] 686 +     .bind::<BigInt, _>(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:729:6
[INFO] [stdout]     |
[INFO] [stdout] 729 |     .get_result::<Correlation>(conn)
[INFO] [stdout]     |      ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 706 ~     let result = diesel_async::RunQueryDsl::get_result(sql_query(
[INFO] [stdout] 707 +       r#"
[INFO] [stdout] 708 +             WITH topic_feeds AS (
[INFO] [stdout] 709 +                 SELECT 
[INFO] [stdout] 710 +                     tm.feedid,
[INFO] [stdout] 711 +                     MAX(CASE WHEN tr.name = $1 THEN 1 ELSE 0 END) as has_topic1,
[INFO] [stdout] 712 +                     MAX(CASE WHEN tr.name = $2 THEN 1 ELSE 0 END) as has_topic2
[INFO] [stdout] 713 +                 FROM topicmaps tm
[INFO] [stdout] 714 +                 JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 715 +                 JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 716 +                 JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 717 +                 WHERE n.creation >= NOW() - INTERVAL '1 day' * $3
[INFO] [stdout] 718 +                     AND tr.name IN ($1, $2)
[INFO] [stdout] 719 +                 GROUP BY tm.feedid
[INFO] [stdout] 720 +             )
[INFO] [stdout] 721 +             SELECT 
[INFO] [stdout] 722 +                 CORR(has_topic1::float8, has_topic2::float8) as correlation
[INFO] [stdout] 723 +             FROM topic_feeds
[INFO] [stdout] 724 +             "#,
[INFO] [stdout] 725 +     )
[INFO] [stdout] 726 +     .bind::<Text, _>(topic1)
[INFO] [stdout] 727 +     .bind::<Text, _>(topic2)
[INFO] [stdout] 728 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 706 ~     let result = diesel::RunQueryDsl::get_result(sql_query(
[INFO] [stdout] 707 +       r#"
[INFO] [stdout] 708 +             WITH topic_feeds AS (
[INFO] [stdout] 709 +                 SELECT 
[INFO] [stdout] 710 +                     tm.feedid,
[INFO] [stdout] 711 +                     MAX(CASE WHEN tr.name = $1 THEN 1 ELSE 0 END) as has_topic1,
[INFO] [stdout] 712 +                     MAX(CASE WHEN tr.name = $2 THEN 1 ELSE 0 END) as has_topic2
[INFO] [stdout] 713 +                 FROM topicmaps tm
[INFO] [stdout] 714 +                 JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 715 +                 JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 716 +                 JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 717 +                 WHERE n.creation >= NOW() - INTERVAL '1 day' * $3
[INFO] [stdout] 718 +                     AND tr.name IN ($1, $2)
[INFO] [stdout] 719 +                 GROUP BY tm.feedid
[INFO] [stdout] 720 +             )
[INFO] [stdout] 721 +             SELECT 
[INFO] [stdout] 722 +                 CORR(has_topic1::float8, has_topic2::float8) as correlation
[INFO] [stdout] 723 +             FROM topic_feeds
[INFO] [stdout] 724 +             "#,
[INFO] [stdout] 725 +     )
[INFO] [stdout] 726 +     .bind::<Text, _>(topic1)
[INFO] [stdout] 727 +     .bind::<Text, _>(topic2)
[INFO] [stdout] 728 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:765:14
[INFO] [stdout]     |
[INFO] [stdout] 765 |             .get_result::<i32>(conn)
[INFO] [stdout]     |              ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 757 ~           let overview_id = diesel::RunQueryDsl::get_result(insert_into(newsoverviews::table)
[INFO] [stdout] 758 +             .values(NewNewsOverview {
[INFO] [stdout] 759 +               creation: &news.timestamp,
[INFO] [stdout] 760 +               sid: &news.sid,
[INFO] [stdout] 761 +               items: &(news.items.len() as i32),
[INFO] [stdout] 762 +               hashid: &news.hash_id,
[INFO] [stdout] 763 +             })
[INFO] [stdout] 764 +             .returning(newsoverviews::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 757 ~           let overview_id = diesel_async::RunQueryDsl::get_result(insert_into(newsoverviews::table)
[INFO] [stdout] 758 +             .values(NewNewsOverview {
[INFO] [stdout] 759 +               creation: &news.timestamp,
[INFO] [stdout] 760 +               sid: &news.sid,
[INFO] [stdout] 761 +               items: &(news.items.len() as i32),
[INFO] [stdout] 762 +               hashid: &news.hash_id,
[INFO] [stdout] 763 +             })
[INFO] [stdout] 764 +             .returning(newsoverviews::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:803:18
[INFO] [stdout]     |
[INFO] [stdout] 803 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 780 ~               diesel::RunQueryDsl::execute(insert_into(articles::table)
[INFO] [stdout] 781 +                 .values(NewArticle {
[INFO] [stdout] 782 +                   hashid: &item.article_hash,
[INFO] [stdout] 783 +                   sourceid: &source_id,
[INFO] [stdout] 784 +                   category: &item.category,
[INFO] [stdout] 785 +                   title: &item.title,
[INFO] [stdout] 786 +                   url: &item.url,
[INFO] [stdout] 787 +                   summary: &item.summary,
[INFO] [stdout] 788 +                   banner: &item.banner_url,
[INFO] [stdout] 789 +                   author: &author_id,
[INFO] [stdout] 790 +                   ct: &item.published_time,
[INFO] [stdout] 791 +                   // Map available data to new fields intelligently
[INFO] [stdout] 792 +                   source_link: item.source_link.as_deref(),
[INFO] [stdout] 793 +                   release_time: item.release_time.as_ref(),
[INFO] [stdout] 794 +                   author_description: item.author_description.as_deref(),
[INFO] [stdout] 795 +                   author_avatar_url: item.author_avatar_url.as_deref(),
[INFO] [stdout] 796 +                   feature_image: item.feature_image.as_deref().or(if !item.banner_url.is_empty() {
[INFO] [stdout] 797 +                     Some(&item.banner_url)
[INFO] [stdout] 798 +                   } else {
[INFO] [stdout] 799 +                     None
[INFO] [stdout] 800 +                   }),
[INFO] [stdout] 801 +                   author_nick_name: item.author_nick_name.as_deref(),
[INFO] [stdout] 802 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 780 ~               diesel_async::RunQueryDsl::execute(insert_into(articles::table)
[INFO] [stdout] 781 +                 .values(NewArticle {
[INFO] [stdout] 782 +                   hashid: &item.article_hash,
[INFO] [stdout] 783 +                   sourceid: &source_id,
[INFO] [stdout] 784 +                   category: &item.category,
[INFO] [stdout] 785 +                   title: &item.title,
[INFO] [stdout] 786 +                   url: &item.url,
[INFO] [stdout] 787 +                   summary: &item.summary,
[INFO] [stdout] 788 +                   banner: &item.banner_url,
[INFO] [stdout] 789 +                   author: &author_id,
[INFO] [stdout] 790 +                   ct: &item.published_time,
[INFO] [stdout] 791 +                   // Map available data to new fields intelligently
[INFO] [stdout] 792 +                   source_link: item.source_link.as_deref(),
[INFO] [stdout] 793 +                   release_time: item.release_time.as_ref(),
[INFO] [stdout] 794 +                   author_description: item.author_description.as_deref(),
[INFO] [stdout] 795 +                   author_avatar_url: item.author_avatar_url.as_deref(),
[INFO] [stdout] 796 +                   feature_image: item.feature_image.as_deref().or(if !item.banner_url.is_empty() {
[INFO] [stdout] 797 +                     Some(&item.banner_url)
[INFO] [stdout] 798 +                   } else {
[INFO] [stdout] 799 +                     None
[INFO] [stdout] 800 +                   }),
[INFO] [stdout] 801 +                   author_nick_name: item.author_nick_name.as_deref(),
[INFO] [stdout] 802 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:819:16
[INFO] [stdout]     |
[INFO] [stdout] 819 |               .get_result::<i32>(conn)
[INFO] [stdout]     |                ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 809 ~             let feed_id = diesel::RunQueryDsl::get_result(insert_into(feeds::table)
[INFO] [stdout] 810 +               .values(NewFeed {
[INFO] [stdout] 811 +                 sid: &news.sid,
[INFO] [stdout] 812 +                 newsoverviewid: &overview_id,
[INFO] [stdout] 813 +                 articleid: &item.article_hash,
[INFO] [stdout] 814 +                 sourceid: &source_id,
[INFO] [stdout] 815 +                 osentiment: &item.overall_sentiment_score,
[INFO] [stdout] 816 +                 sentlabel: &item.overall_sentiment_label,
[INFO] [stdout] 817 +               })
[INFO] [stdout] 818 +               .returning(feeds::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 809 ~             let feed_id = diesel_async::RunQueryDsl::get_result(insert_into(feeds::table)
[INFO] [stdout] 810 +               .values(NewFeed {
[INFO] [stdout] 811 +                 sid: &news.sid,
[INFO] [stdout] 812 +                 newsoverviewid: &overview_id,
[INFO] [stdout] 813 +                 articleid: &item.article_hash,
[INFO] [stdout] 814 +                 sourceid: &source_id,
[INFO] [stdout] 815 +                 osentiment: &item.overall_sentiment_score,
[INFO] [stdout] 816 +                 sentlabel: &item.overall_sentiment_label,
[INFO] [stdout] 817 +               })
[INFO] [stdout] 818 +               .returning(feeds::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:833:18
[INFO] [stdout]     |
[INFO] [stdout] 833 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 825 ~               diesel::RunQueryDsl::execute(insert_into(tickersentiments::table)
[INFO] [stdout] 826 +                 .values(NewTickerSentiment {
[INFO] [stdout] 827 +                   feedid: &feed_id,
[INFO] [stdout] 828 +                   sid: &ticker_sent.sid,
[INFO] [stdout] 829 +                   relevance: &ticker_sent.relevance_score,
[INFO] [stdout] 830 +                   tsentiment: &ticker_sent.sentiment_score,
[INFO] [stdout] 831 +                   sentiment_label: &ticker_sent.sentiment_label,
[INFO] [stdout] 832 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 825 ~               diesel_async::RunQueryDsl::execute(insert_into(tickersentiments::table)
[INFO] [stdout] 826 +                 .values(NewTickerSentiment {
[INFO] [stdout] 827 +                   feedid: &feed_id,
[INFO] [stdout] 828 +                   sid: &ticker_sent.sid,
[INFO] [stdout] 829 +                   relevance: &ticker_sent.relevance_score,
[INFO] [stdout] 830 +                   tsentiment: &ticker_sent.sentiment_score,
[INFO] [stdout] 831 +                   sentiment_label: &ticker_sent.sentiment_label,
[INFO] [stdout] 832 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:849:18
[INFO] [stdout]     |
[INFO] [stdout] 849 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 842 ~               diesel::RunQueryDsl::execute(insert_into(topicmaps::table)
[INFO] [stdout] 843 +                 .values(NewTopicMap {
[INFO] [stdout] 844 +                   sid: &news.sid,
[INFO] [stdout] 845 +                   feedid: &feed_id,
[INFO] [stdout] 846 +                   topicid: &topic_id,
[INFO] [stdout] 847 +                   relscore: &topic.relevance_score,
[INFO] [stdout] 848 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 842 ~               diesel_async::RunQueryDsl::execute(insert_into(topicmaps::table)
[INFO] [stdout] 843 +                 .values(NewTopicMap {
[INFO] [stdout] 844 +                   sid: &news.sid,
[INFO] [stdout] 845 +                   feedid: &feed_id,
[INFO] [stdout] 846 +                   topicid: &topic_id,
[INFO] [stdout] 847 +                   relscore: &topic.relevance_score,
[INFO] [stdout] 848 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/price.rs:52:71
[INFO] [stdout]    |
[INFO] [stdout] 52 |       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]    |                                                                       ^^^^^^^ multiple `execute` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 52 -       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 52 +       let inserted = diesel::RunQueryDsl::execute(insert_into(intradayprices::table).values(chunk), conn).await?;
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 52 -       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 52 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(intradayprices::table).values(chunk), conn).await?;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:113:6
[INFO] [stdout]     |
[INFO] [stdout] 113 |     .load::<OhlcBucket>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout]  91 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout]  92 +       r#"
[INFO] [stdout]  93 +             SELECT 
[INFO] [stdout]  94 +                 time_bucket('{}', tstamp) AS bucket,
[INFO] [stdout]  95 +                 symbol,
[INFO] [stdout]  96 +                 first(open, tstamp) AS open,
[INFO] [stdout]  97 +                 max(high) AS high,
[INFO] [stdout]  98 +                 min(low) AS low,
[INFO] [stdout]  99 +                 last(close, tstamp) AS close,
[INFO] [stdout] 100 +                 sum(volume) AS volume
[INFO] [stdout] 101 +             FROM intradayprices
[INFO] [stdout] 102 +             WHERE symbol = $1
[INFO] [stdout] 103 +                 AND tstamp >= $2
[INFO] [stdout] 104 +                 AND tstamp <= $3
[INFO] [stdout] 105 +             GROUP BY bucket, symbol
[INFO] [stdout] 106 +             ORDER BY bucket DESC
[INFO] [stdout] 107 +             "#,
[INFO] [stdout] 108 +       bucket_size
[INFO] [stdout] 109 +     ))
[INFO] [stdout] 110 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 111 +     .bind::<Timestamptz, _>(start)
[INFO] [stdout] 112 +     .bind::<Timestamptz, _>(end), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout]  91 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout]  92 +       r#"
[INFO] [stdout]  93 +             SELECT 
[INFO] [stdout]  94 +                 time_bucket('{}', tstamp) AS bucket,
[INFO] [stdout]  95 +                 symbol,
[INFO] [stdout]  96 +                 first(open, tstamp) AS open,
[INFO] [stdout]  97 +                 max(high) AS high,
[INFO] [stdout]  98 +                 min(low) AS low,
[INFO] [stdout]  99 +                 last(close, tstamp) AS close,
[INFO] [stdout] 100 +                 sum(volume) AS volume
[INFO] [stdout] 101 +             FROM intradayprices
[INFO] [stdout] 102 +             WHERE symbol = $1
[INFO] [stdout] 103 +                 AND tstamp >= $2
[INFO] [stdout] 104 +                 AND tstamp <= $3
[INFO] [stdout] 105 +             GROUP BY bucket, symbol
[INFO] [stdout] 106 +             ORDER BY bucket DESC
[INFO] [stdout] 107 +             "#,
[INFO] [stdout] 108 +       bucket_size
[INFO] [stdout] 109 +     ))
[INFO] [stdout] 110 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 111 +     .bind::<Timestamptz, _>(start)
[INFO] [stdout] 112 +     .bind::<Timestamptz, _>(end), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:192:70
[INFO] [stdout]     |
[INFO] [stdout] 192 |       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 192 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 192 +       let inserted = diesel::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 192 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 192 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:227:70
[INFO] [stdout]     |
[INFO] [stdout] 227 |       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 227 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 227 +       let inserted = diesel::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 227 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 227 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 244 |       .first(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 241 ~     diesel_async::RunQueryDsl::first(summaryprices::table
[INFO] [stdout] 242 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 243 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 241 ~     diesel::RunQueryDsl::first(summaryprices::table
[INFO] [stdout] 242 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 243 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 260 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 255 ~     diesel_async::RunQueryDsl::load(summaryprices::table
[INFO] [stdout] 256 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 257 +       .filter(summaryprices::date.ge(start_date))
[INFO] [stdout] 258 +       .filter(summaryprices::date.le(end_date))
[INFO] [stdout] 259 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 255 ~     diesel::RunQueryDsl::load(summaryprices::table
[INFO] [stdout] 256 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 257 +       .filter(summaryprices::date.ge(start_date))
[INFO] [stdout] 258 +       .filter(summaryprices::date.le(end_date))
[INFO] [stdout] 259 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:296:6
[INFO] [stdout]     |
[INFO] [stdout] 296 |     .load::<PriceWithMA>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 274 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 275 +       r#"
[INFO] [stdout] 276 +             SELECT 
[INFO] [stdout] 277 +                 date,
[INFO] [stdout] 278 +                 close,
[INFO] [stdout] 279 +                 AVG(close) OVER (
[INFO] [stdout] 280 +                     ORDER BY date 
[INFO] [stdout] 281 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 282 +                 ) as ma,
[INFO] [stdout] 283 +                 AVG(volume::float4) OVER (
[INFO] [stdout] 284 +                     ORDER BY date 
[INFO] [stdout] 285 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 286 +                 ) as volume_ma
[INFO] [stdout] 287 +             FROM summaryprices
[INFO] [stdout] 288 +             WHERE symbol = $1
[INFO] [stdout] 289 +                 AND date >= CURRENT_DATE - INTERVAL '1 day' * $2
[INFO] [stdout] 290 +             ORDER BY date DESC
[INFO] [stdout] 291 +             "#,
[INFO] [stdout] 292 +     )
[INFO] [stdout] 293 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 294 +     .bind::<Integer, _>(days)
[INFO] [stdout] 295 +     .bind::<Integer, _>(ma_period - 1), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 274 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 275 +       r#"
[INFO] [stdout] 276 +             SELECT 
[INFO] [stdout] 277 +                 date,
[INFO] [stdout] 278 +                 close,
[INFO] [stdout] 279 +                 AVG(close) OVER (
[INFO] [stdout] 280 +                     ORDER BY date 
[INFO] [stdout] 281 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 282 +                 ) as ma,
[INFO] [stdout] 283 +                 AVG(volume::float4) OVER (
[INFO] [stdout] 284 +                     ORDER BY date 
[INFO] [stdout] 285 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 286 +                 ) as volume_ma
[INFO] [stdout] 287 +             FROM summaryprices
[INFO] [stdout] 288 +             WHERE symbol = $1
[INFO] [stdout] 289 +                 AND date >= CURRENT_DATE - INTERVAL '1 day' * $2
[INFO] [stdout] 290 +             ORDER BY date DESC
[INFO] [stdout] 291 +             "#,
[INFO] [stdout] 292 +     )
[INFO] [stdout] 293 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 294 +     .bind::<Integer, _>(days)
[INFO] [stdout] 295 +     .bind::<Integer, _>(ma_period - 1), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:384:65
[INFO] [stdout]     |
[INFO] [stdout] 384 |       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                 ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 384 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 384 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 384 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 384 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:416:65
[INFO] [stdout]     |
[INFO] [stdout] 416 |       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                 ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 416 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 416 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 416 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 416 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:436:8
[INFO] [stdout]     |
[INFO] [stdout] 436 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 431 ~     diesel_async::RunQueryDsl::load(topstats::table
[INFO] [stdout] 432 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 433 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 434 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 435 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 431 ~     diesel::RunQueryDsl::load(topstats::table
[INFO] [stdout] 432 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 433 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 434 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 435 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:454:8
[INFO] [stdout]     |
[INFO] [stdout] 454 |       .get_result::<i64>(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 450 ~     let total = diesel_async::RunQueryDsl::get_result(topstats::table
[INFO] [stdout] 451 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 452 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 453 +       .count(), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 450 ~     let total = diesel::RunQueryDsl::get_result(topstats::table
[INFO] [stdout] 451 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 452 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 453 +       .count(), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:464:8
[INFO] [stdout]     |
[INFO] [stdout] 464 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     let results = diesel_async::RunQueryDsl::load(topstats::table
[INFO] [stdout] 459 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 460 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 461 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 462 +       .limit(per_page)
[INFO] [stdout] 463 +       .offset(offset), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     let results = diesel::RunQueryDsl::load(topstats::table
[INFO] [stdout] 459 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 460 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 461 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 462 +       .limit(per_page)
[INFO] [stdout] 463 +       .offset(offset), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:511:6
[INFO] [stdout]     |
[INFO] [stdout] 511 |     .load::<HistoricalTopMover>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 480 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 481 +       r#"
[INFO] [stdout] 482 +             WITH bucketed_stats AS (
[INFO] [stdout] 483 +                 SELECT 
[INFO] [stdout] 484 +                     time_bucket('{}', date) AS bucket,
[INFO] [stdout] 485 +                     event_type,
[INFO] [stdout] 486 +                     symbol,
[INFO] [stdout] 487 +                     change_pct,
[INFO] [stdout] 488 +                     ROW_NUMBER() OVER (
[INFO] [stdout] 489 +                         PARTITION BY time_bucket('{}', date), event_type 
[INFO] [stdout] 490 +                         ORDER BY change_pct DESC
[INFO] [stdout] 491 +                     ) as rn
[INFO] [stdout] 492 +                 FROM topstats
[INFO] [stdout] 493 +                 WHERE event_type = $1
[INFO] [stdout] 494 +                     AND date >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 495 +             )
[INFO] [stdout] 496 +             SELECT 
[INFO] [stdout] 497 +                 bucket,
[INFO] [stdout] 498 +                 event_type,
[INFO] [stdout] 499 +                 COUNT(*)::integer as mover_count,
[INFO] [stdout] 500 +                 AVG(change_pct) as avg_change_pct,
[INFO] [stdout] 501 +                 MAX(change_pct) as max_change_pct,
[INFO] [stdout] 502 +                 MAX(CASE WHEN rn = 1 THEN symbol END) as top_symbol
[INFO] [stdout] 503 +             FROM bucketed_stats
[INFO] [stdout] 504 +             GROUP BY bucket, event_type
[INFO] [stdout] 505 +             ORDER BY bucket DESC
[INFO] [stdout] 506 +             "#,
[INFO] [stdout] 507 +       bucket_size, bucket_size
[INFO] [stdout] 508 +     ))
[INFO] [stdout] 509 +     .bind::<Text, _>(event_type)
[INFO] [stdout] 510 +     .bind::<Integer, _>(days_back), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 480 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 481 +       r#"
[INFO] [stdout] 482 +             WITH bucketed_stats AS (
[INFO] [stdout] 483 +                 SELECT 
[INFO] [stdout] 484 +                     time_bucket('{}', date) AS bucket,
[INFO] [stdout] 485 +                     event_type,
[INFO] [stdout] 486 +                     symbol,
[INFO] [stdout] 487 +                     change_pct,
[INFO] [stdout] 488 +                     ROW_NUMBER() OVER (
[INFO] [stdout] 489 +                         PARTITION BY time_bucket('{}', date), event_type 
[INFO] [stdout] 490 +                         ORDER BY change_pct DESC
[INFO] [stdout] 491 +                     ) as rn
[INFO] [stdout] 492 +                 FROM topstats
[INFO] [stdout] 493 +                 WHERE event_type = $1
[INFO] [stdout] 494 +                     AND date >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 495 +             )
[INFO] [stdout] 496 +             SELECT 
[INFO] [stdout] 497 +                 bucket,
[INFO] [stdout] 498 +                 event_type,
[INFO] [stdout] 499 +                 COUNT(*)::integer as mover_count,
[INFO] [stdout] 500 +                 AVG(change_pct) as avg_change_pct,
[INFO] [stdout] 501 +                 MAX(change_pct) as max_change_pct,
[INFO] [stdout] 502 +                 MAX(CASE WHEN rn = 1 THEN symbol END) as top_symbol
[INFO] [stdout] 503 +             FROM bucketed_stats
[INFO] [stdout] 504 +             GROUP BY bucket, event_type
[INFO] [stdout] 505 +             ORDER BY bucket DESC
[INFO] [stdout] 506 +             "#,
[INFO] [stdout] 507 +       bucket_size, bucket_size
[INFO] [stdout] 508 +     ))
[INFO] [stdout] 509 +     .bind::<Text, _>(event_type)
[INFO] [stdout] 510 +     .bind::<Integer, _>(days_back), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:539:6
[INFO] [stdout]     |
[INFO] [stdout] 539 |     .load::<SectorPerformance>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 523 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 524 +       r#"
[INFO] [stdout] 525 +             SELECT 
[INFO] [stdout] 526 +                 o.sector,
[INFO] [stdout] 527 +                 COUNT(CASE WHEN t.event_type = 'gainers' THEN 1 END)::integer as gainer_count,
[INFO] [stdout] 528 +                 COUNT(CASE WHEN t.event_type = 'losers' THEN 1 END)::integer as loser_count,
[INFO] [stdout] 529 +                 AVG(CASE WHEN t.event_type = 'gainers' THEN t.change_pct END) as avg_gain,
[INFO] [stdout] 530 +                 AVG(CASE WHEN t.event_type = 'losers' THEN t.change_pct END) as avg_loss
[INFO] [stdout] 531 +             FROM topstats t
[INFO] [stdout] 532 +             JOIN overviews o ON t.sid = o.sid
[INFO] [stdout] 533 +             WHERE t.date = $1
[INFO] [stdout] 534 +             GROUP BY o.sector
[INFO] [stdout] 535 +             ORDER BY gainer_count DESC
[INFO] [stdout] 536 +             "#,
[INFO] [stdout] 537 +     )
[INFO] [stdout] 538 +     .bind::<Timestamptz, _>(date), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 523 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 524 +       r#"
[INFO] [stdout] 525 +             SELECT 
[INFO] [stdout] 526 +                 o.sector,
[INFO] [stdout] 527 +                 COUNT(CASE WHEN t.event_type = 'gainers' THEN 1 END)::integer as gainer_count,
[INFO] [stdout] 528 +                 COUNT(CASE WHEN t.event_type = 'losers' THEN 1 END)::integer as loser_count,
[INFO] [stdout] 529 +                 AVG(CASE WHEN t.event_type = 'gainers' THEN t.change_pct END) as avg_gain,
[INFO] [stdout] 530 +                 AVG(CASE WHEN t.event_type = 'losers' THEN t.change_pct END) as avg_loss
[INFO] [stdout] 531 +             FROM topstats t
[INFO] [stdout] 532 +             JOIN overviews o ON t.sid = o.sid
[INFO] [stdout] 533 +             WHERE t.date = $1
[INFO] [stdout] 534 +             GROUP BY o.sector
[INFO] [stdout] 535 +             ORDER BY gainer_count DESC
[INFO] [stdout] 536 +             "#,
[INFO] [stdout] 537 +     )
[INFO] [stdout] 538 +     .bind::<Timestamptz, _>(date), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:49:30
[INFO] [stdout]    |
[INFO] [stdout] 49 |     symbols::table.find(sid).first(conn).await
[INFO] [stdout]    |                              ^^^^^ multiple `first` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 49 -     symbols::table.find(sid).first(conn).await
[INFO] [stdout] 49 +     diesel_async::RunQueryDsl::first(symbols::table.find(sid), conn).await
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 49 -     symbols::table.find(sid).first(conn).await
[INFO] [stdout] 49 +     diesel::RunQueryDsl::first(symbols::table.find(sid), conn).await
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:104:67
[INFO] [stdout]     |
[INFO] [stdout] 104 |     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout]     |                                                                   ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 104 -     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout] 104 +     diesel_async::RunQueryDsl::first(newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 104 -     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout] 104 +     diesel::RunQueryDsl::first(newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:56:55
[INFO] [stdout]    |
[INFO] [stdout] 56 |     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout]    |                                                       ^^^^^ multiple `first` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 56 -     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 56 +     diesel_async::RunQueryDsl::first(symbols::table.filter(symbols::symbol.eq(symbol)), conn).await
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 56 -     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 56 +     diesel::RunQueryDsl::first(symbols::table.filter(symbols::symbol.eq(symbol)), conn).await
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     newsoverviews::table.filter(newsoverviews::hashid.eq(hashid)).first(conn).await.optional()
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 |       .load(conn)
[INFO] [stdout]    |        ^^^^ multiple `load` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     diesel_async::RunQueryDsl::load(symbols::table
[INFO] [stdout] 63 +       .filter(symbols::overview.eq(true))
[INFO] [stdout] 64 +       .or_filter(symbols::intraday.eq(true))
[INFO] [stdout] 65 +       .or_filter(symbols::summary.eq(true)), conn)
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     diesel::RunQueryDsl::load(symbols::table
[INFO] [stdout] 63 +       .filter(symbols::overview.eq(true))
[INFO] [stdout] 64 +       .or_filter(symbols::intraday.eq(true))
[INFO] [stdout] 65 +       .or_filter(symbols::summary.eq(true)), conn)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:137:32
[INFO] [stdout]     |
[INFO] [stdout] 137 |     overviews::table.find(sid).first(conn).await
[INFO] [stdout]     |                                ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 137 -     overviews::table.find(sid).first(conn).await
[INFO] [stdout] 137 +     diesel_async::RunQueryDsl::first(overviews::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 137 -     overviews::table.find(sid).first(conn).await
[INFO] [stdout] 137 +     diesel::RunQueryDsl::first(overviews::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:116:8
[INFO] [stdout]     |
[INFO] [stdout] 116 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     diesel_async::RunQueryDsl::load(newsoverviews::table
[INFO] [stdout] 113 +       .filter(newsoverviews::sid.eq(sid))
[INFO] [stdout] 114 +       .filter(newsoverviews::creation.ge(chrono::Utc::now() - chrono::Duration::days(days as i64)))
[INFO] [stdout] 115 +       .order(newsoverviews::creation.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 112 ~     diesel::RunQueryDsl::load(newsoverviews::table
[INFO] [stdout] 113 +       .filter(newsoverviews::sid.eq(sid))
[INFO] [stdout] 114 +       .filter(newsoverviews::creation.ge(chrono::Utc::now() - chrono::Duration::days(days as i64)))
[INFO] [stdout] 115 +       .order(newsoverviews::creation.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:144:59
[INFO] [stdout]     |
[INFO] [stdout] 144 |     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout]     |                                                           ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 144 -     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 144 +     diesel_async::RunQueryDsl::first(overviews::table.filter(overviews::symbol.eq(symbol)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 144 -     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 144 +     diesel::RunQueryDsl::first(overviews::table.filter(overviews::symbol.eq(symbol)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:151:59
[INFO] [stdout]     |
[INFO] [stdout] 151 |     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout]     |                                                           ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 151 -     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout] 151 +     diesel_async::RunQueryDsl::load(overviews::table.filter(overviews::sector.eq(sector)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 151 -     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout] 151 +     diesel::RunQueryDsl::load(overviews::table.filter(overviews::sector.eq(sector)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:179:6
[INFO] [stdout]     |
[INFO] [stdout] 179 |     .load::<SentimentSummary>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 128 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 129 +       r#"
[INFO] [stdout] 130 +             WITH recent_news AS (
[INFO] [stdout] 131 +                 SELECT n.*, f.osentiment, f.sentlabel
[INFO] [stdout] 132 +                 FROM newsoverviews n
[INFO] [stdout] 133 +                 JOIN feeds f ON n.id = f.newsoverviewid
[INFO] [stdout] 134 +                 WHERE n.sid = $1
[INFO] [stdout] 135 +                     AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 136 +             ),
[INFO] [stdout] 137 +             sentiment_counts AS (
[INFO] [stdout] 138 +                 SELECT 
[INFO] [stdout] 139 +                     COUNT(*) as total,
[INFO] [stdout] 140 +                     COUNT(CASE WHEN sentlabel = 'Bullish' THEN 1 END) as bullish,
[INFO] [stdout] 141 +                     COUNT(CASE WHEN sentlabel = 'Bearish' THEN 1 END) as bearish,
[INFO] [stdout] 142 +                     COUNT(CASE WHEN sentlabel = 'Neutral' THEN 1 END) as neutral
[INFO] [stdout] 143 +                 FROM recent_news
[INFO] [stdout] 144 +             )
[INFO] [stdout] 145 +             SELECT 
[INFO] [stdout] 146 +                 $1 as sid,
[INFO] [stdout] 147 +                 AVG(rn.osentiment) as avg_sentiment,
[INFO] [stdout] 148 +                 COUNT(DISTINCT rn.id) as article_count,
[INFO] [stdout] 149 +                 (sc.bullish::float8 / NULLIF(sc.total, 0) * 100) as bullish_pct,
[INFO] [stdout] 150 +                 (sc.bearish::float8 / NULLIF(sc.total, 0) * 100) as bearish_pct,
[INFO] [stdout] 151 +                 (sc.neutral::float8 / NULLIF(sc.total, 0) * 100) as neutral_pct,
[INFO] [stdout] 152 +                 COALESCE(
[INFO] [stdout] 153 +                     jsonb_agg(DISTINCT 
[INFO] [stdout] 154 +                         jsonb_build_object(
[INFO] [stdout] 155 +                             'topic', tr.name,
[INFO] [stdout] 156 +                             'avg_relevance', tm.avg_relevance
[INFO] [stdout] 157 +                         )
[INFO] [stdout] 158 +                     ) FILTER (WHERE tr.name IS NOT NULL),
[INFO] [stdout] 159 +                     '[]'::jsonb
[INFO] [stdout] 160 +                 ) as topics
[INFO] [stdout] 161 +             FROM recent_news rn
[INFO] [stdout] 162 +             CROSS JOIN sentiment_counts sc
[INFO] [stdout] 163 +             LEFT JOIN (
[INFO] [stdout] 164 +                 SELECT 
[INFO] [stdout] 165 +                     f.newsoverviewid,
[INFO] [stdout] 166 +                     tm.topicid,
[INFO] [stdout] 167 +                     AVG(tm.relscore) as avg_relevance
[INFO] [stdout] 168 +                 FROM feeds f
[INFO] [stdout] 169 +                 JOIN topicmaps tm ON f.id = tm.feedid
[INFO] [stdout] 170 +                 WHERE f.newsoverviewid IN (SELECT id FROM recent_news)
[INFO] [stdout] 171 +                 GROUP BY f.newsoverviewid, tm.topicid
[INFO] [stdout] 172 +             ) tm ON rn.id = tm.newsoverviewid
[INFO] [stdout] 173 +             LEFT JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 174 +             GROUP BY sc.bullish, sc.bearish, sc.neutral, sc.total
[INFO] [stdout] 175 +             "#,
[INFO] [stdout] 176 +     )
[INFO] [stdout] 177 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 178 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 128 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 129 +       r#"
[INFO] [stdout] 130 +             WITH recent_news AS (
[INFO] [stdout] 131 +                 SELECT n.*, f.osentiment, f.sentlabel
[INFO] [stdout] 132 +                 FROM newsoverviews n
[INFO] [stdout] 133 +                 JOIN feeds f ON n.id = f.newsoverviewid
[INFO] [stdout] 134 +                 WHERE n.sid = $1
[INFO] [stdout] 135 +                     AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 136 +             ),
[INFO] [stdout] 137 +             sentiment_counts AS (
[INFO] [stdout] 138 +                 SELECT 
[INFO] [stdout] 139 +                     COUNT(*) as total,
[INFO] [stdout] 140 +                     COUNT(CASE WHEN sentlabel = 'Bullish' THEN 1 END) as bullish,
[INFO] [stdout] 141 +                     COUNT(CASE WHEN sentlabel = 'Bearish' THEN 1 END) as bearish,
[INFO] [stdout] 142 +                     COUNT(CASE WHEN sentlabel = 'Neutral' THEN 1 END) as neutral
[INFO] [stdout] 143 +                 FROM recent_news
[INFO] [stdout] 144 +             )
[INFO] [stdout] 145 +             SELECT 
[INFO] [stdout] 146 +                 $1 as sid,
[INFO] [stdout] 147 +                 AVG(rn.osentiment) as avg_sentiment,
[INFO] [stdout] 148 +                 COUNT(DISTINCT rn.id) as article_count,
[INFO] [stdout] 149 +                 (sc.bullish::float8 / NULLIF(sc.total, 0) * 100) as bullish_pct,
[INFO] [stdout] 150 +                 (sc.bearish::float8 / NULLIF(sc.total, 0) * 100) as bearish_pct,
[INFO] [stdout] 151 +                 (sc.neutral::float8 / NULLIF(sc.total, 0) * 100) as neutral_pct,
[INFO] [stdout] 152 +                 COALESCE(
[INFO] [stdout] 153 +                     jsonb_agg(DISTINCT 
[INFO] [stdout] 154 +                         jsonb_build_object(
[INFO] [stdout] 155 +                             'topic', tr.name,
[INFO] [stdout] 156 +                             'avg_relevance', tm.avg_relevance
[INFO] [stdout] 157 +                         )
[INFO] [stdout] 158 +                     ) FILTER (WHERE tr.name IS NOT NULL),
[INFO] [stdout] 159 +                     '[]'::jsonb
[INFO] [stdout] 160 +                 ) as topics
[INFO] [stdout] 161 +             FROM recent_news rn
[INFO] [stdout] 162 +             CROSS JOIN sentiment_counts sc
[INFO] [stdout] 163 +             LEFT JOIN (
[INFO] [stdout] 164 +                 SELECT 
[INFO] [stdout] 165 +                     f.newsoverviewid,
[INFO] [stdout] 166 +                     tm.topicid,
[INFO] [stdout] 167 +                     AVG(tm.relscore) as avg_relevance
[INFO] [stdout] 168 +                 FROM feeds f
[INFO] [stdout] 169 +                 JOIN topicmaps tm ON f.id = tm.feedid
[INFO] [stdout] 170 +                 WHERE f.newsoverviewid IN (SELECT id FROM recent_news)
[INFO] [stdout] 171 +                 GROUP BY f.newsoverviewid, tm.topicid
[INFO] [stdout] 172 +             ) tm ON rn.id = tm.newsoverviewid
[INFO] [stdout] 173 +             LEFT JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 174 +             GROUP BY sc.bullish, sc.bearish, sc.neutral, sc.total
[INFO] [stdout] 175 +             "#,
[INFO] [stdout] 176 +     )
[INFO] [stdout] 177 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 178 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:231:35
[INFO] [stdout]     |
[INFO] [stdout] 231 |     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout]     |                                   ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 231 -     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout] 231 +     diesel_async::RunQueryDsl::first(overviewexts::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 231 -     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout] 231 +     diesel::RunQueryDsl::first(overviewexts::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:233:70
[INFO] [stdout]     |
[INFO] [stdout] 233 |         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^ multiple `get_results` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 233 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 233 +         diesel::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 233 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 233 +         diesel_async::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:238:65
[INFO] [stdout]     |
[INFO] [stdout] 238 |     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout]     |                                                                 ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 238 -     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout] 238 +     diesel_async::RunQueryDsl::load(overviewexts::table.filter(overviewexts::beta.ge(min_beta)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 238 -     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout] 238 +     diesel::RunQueryDsl::load(overviewexts::table.filter(overviewexts::beta.ge(min_beta)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:244:75
[INFO] [stdout]     |
[INFO] [stdout] 244 |     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout]     |                                                                           ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 244 -     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout] 244 +     diesel_async::RunQueryDsl::load(overviewexts::table.filter(overviewexts::dividend_date.is_not_null()), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 244 -     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout] 244 +     diesel::RunQueryDsl::load(overviewexts::table.filter(overviewexts::dividend_date.is_not_null()), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:264:70
[INFO] [stdout]     |
[INFO] [stdout] 264 |         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^^^^^ multiple `get_results` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 264 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 264 +         diesel::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 264 -         insert_into(feeds::table).values(chunk).returning(feeds::id).get_results(conn).await?;
[INFO] [stdout] 264 +         diesel_async::RunQueryDsl::get_results(insert_into(feeds::table).values(chunk).returning(feeds::id), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:488:37
[INFO] [stdout]     |
[INFO] [stdout] 488 |     equity_details::table.find(sid).first(conn).await
[INFO] [stdout]     |                                     ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 488 -     equity_details::table.find(sid).first(conn).await
[INFO] [stdout] 488 +     diesel_async::RunQueryDsl::first(equity_details::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 488 -     equity_details::table.find(sid).first(conn).await
[INFO] [stdout] 488 +     diesel::RunQueryDsl::first(equity_details::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:339:34
[INFO] [stdout]     |
[INFO] [stdout] 339 |     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout]     |                                  ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 339 -     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout] 339 +     diesel_async::RunQueryDsl::first(articles::table.find(hashid), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 339 -     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout] 339 +     diesel::RunQueryDsl::first(articles::table.find(hashid), conn).await.optional()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:339:5
[INFO] [stdout]     |
[INFO] [stdout] 339 |     articles::table.find(hashid).first(conn).await.optional()
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:351:8
[INFO] [stdout]     |
[INFO] [stdout] 351 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 347 ~     diesel_async::RunQueryDsl::load(articles::table
[INFO] [stdout] 348 +       .filter(articles::category.eq(category))
[INFO] [stdout] 349 +       .order(articles::ct.desc())
[INFO] [stdout] 350 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 347 ~     diesel::RunQueryDsl::load(articles::table
[INFO] [stdout] 348 +       .filter(articles::category.eq(category))
[INFO] [stdout] 349 +       .order(articles::ct.desc())
[INFO] [stdout] 350 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:387:8
[INFO] [stdout]     |
[INFO] [stdout] 387 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 384 ~     if let Some(author) = diesel_async::RunQueryDsl::first(authors::table
[INFO] [stdout] 385 +       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 +       .select(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 384 ~     if let Some(author) = diesel::RunQueryDsl::first(authors::table
[INFO] [stdout] 385 +       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 +       .select(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:384:27
[INFO] [stdout]     |
[INFO] [stdout] 384 |       if let Some(author) = authors::table
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 385 | |       .filter(authors::author_name.eq(name))
[INFO] [stdout] 386 | |       .select(authors::id)
[INFO] [stdout] 387 | |       .first::<i32>(conn)
[INFO] [stdout] 388 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:398:8
[INFO] [stdout]     |
[INFO] [stdout] 398 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 395 ~     diesel::RunQueryDsl::get_result(insert_into(authors::table)
[INFO] [stdout] 396 +       .values(NewAuthor { author_name: name })
[INFO] [stdout] 397 +       .returning(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 395 ~     diesel_async::RunQueryDsl::get_result(insert_into(authors::table)
[INFO] [stdout] 396 +       .values(NewAuthor { author_name: name })
[INFO] [stdout] 397 +       .returning(authors::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:462:8
[INFO] [stdout]     |
[INFO] [stdout] 462 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     if let Some(source) = diesel_async::RunQueryDsl::first(sources::table
[INFO] [stdout] 459 +       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 +       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 +       .select(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     if let Some(source) = diesel::RunQueryDsl::first(sources::table
[INFO] [stdout] 459 +       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 +       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 +       .select(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:458:27
[INFO] [stdout]     |
[INFO] [stdout] 458 |       if let Some(source) = sources::table
[INFO] [stdout]     |  ___________________________^
[INFO] [stdout] 459 | |       .filter(sources::source_name.eq(name))
[INFO] [stdout] 460 | |       .filter(sources::domain.eq(domain))
[INFO] [stdout] 461 | |       .select(sources::id)
[INFO] [stdout] 462 | |       .first::<i32>(conn)
[INFO] [stdout] 463 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:473:8
[INFO] [stdout]     |
[INFO] [stdout] 473 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 470 ~     diesel::RunQueryDsl::get_result(insert_into(sources::table)
[INFO] [stdout] 471 +       .values(NewSource { source_name: name, domain })
[INFO] [stdout] 472 +       .returning(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 470 ~     diesel_async::RunQueryDsl::get_result(insert_into(sources::table)
[INFO] [stdout] 471 +       .values(NewSource { source_name: name, domain })
[INFO] [stdout] 472 +       .returning(sources::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:521:73
[INFO] [stdout]     |
[INFO] [stdout] 521 |       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                         ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 521 -       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 521 +       let inserted = diesel::RunQueryDsl::execute(insert_into(tickersentiments::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 521 -       let inserted = insert_into(tickersentiments::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 521 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(tickersentiments::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:560:6
[INFO] [stdout]     |
[INFO] [stdout] 560 |     .load::<SentimentTrend>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 539 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 540 +       r#"
[INFO] [stdout] 541 +             SELECT 
[INFO] [stdout] 542 +                 time_bucket('{}', n.creation) AS bucket,
[INFO] [stdout] 543 +                 AVG(ts.tsentiment) as avg_sentiment,
[INFO] [stdout] 544 +                 AVG(ts.relevance) as avg_relevance,
[INFO] [stdout] 545 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 546 +                 SUM(CASE WHEN ts.sentiment_label = 'Bullish' THEN 1 ELSE 0 END)::float8 / 
[INFO] [stdout] 547 +                     NULLIF(COUNT(*), 0) as bullish_ratio
[INFO] [stdout] 548 +             FROM tickersentiments ts
[INFO] [stdout] 549 +             JOIN feeds f ON ts.feedid = f.id
[INFO] [stdout] 550 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 551 +             WHERE ts.sid = $1
[INFO] [stdout] 552 +                 AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 553 +             GROUP BY bucket
[INFO] [stdout] 554 +             ORDER BY bucket DESC
[INFO] [stdout] 555 +             "#,
[INFO] [stdout] 556 +       bucket_size
[INFO] [stdout] 557 +     ))
[INFO] [stdout] 558 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 559 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 539 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 540 +       r#"
[INFO] [stdout] 541 +             SELECT 
[INFO] [stdout] 542 +                 time_bucket('{}', n.creation) AS bucket,
[INFO] [stdout] 543 +                 AVG(ts.tsentiment) as avg_sentiment,
[INFO] [stdout] 544 +                 AVG(ts.relevance) as avg_relevance,
[INFO] [stdout] 545 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 546 +                 SUM(CASE WHEN ts.sentiment_label = 'Bullish' THEN 1 ELSE 0 END)::float8 / 
[INFO] [stdout] 547 +                     NULLIF(COUNT(*), 0) as bullish_ratio
[INFO] [stdout] 548 +             FROM tickersentiments ts
[INFO] [stdout] 549 +             JOIN feeds f ON ts.feedid = f.id
[INFO] [stdout] 550 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 551 +             WHERE ts.sid = $1
[INFO] [stdout] 552 +                 AND n.creation >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 553 +             GROUP BY bucket
[INFO] [stdout] 554 +             ORDER BY bucket DESC
[INFO] [stdout] 555 +             "#,
[INFO] [stdout] 556 +       bucket_size
[INFO] [stdout] 557 +     ))
[INFO] [stdout] 558 +     .bind::<BigInt, _>(sid)
[INFO] [stdout] 559 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:595:8
[INFO] [stdout]     |
[INFO] [stdout] 595 |       .first::<i32>(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 592 ~     if let Some(topic) = diesel_async::RunQueryDsl::first(topicrefs::table
[INFO] [stdout] 593 +       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 +       .select(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 592 ~     if let Some(topic) = diesel::RunQueryDsl::first(topicrefs::table
[INFO] [stdout] 593 +       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 +       .select(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0282]: type annotations needed
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:592:26
[INFO] [stdout]     |
[INFO] [stdout] 592 |       if let Some(topic) = topicrefs::table
[INFO] [stdout]     |  __________________________^
[INFO] [stdout] 593 | |       .filter(topicrefs::name.eq(name))
[INFO] [stdout] 594 | |       .select(topicrefs::id)
[INFO] [stdout] 595 | |       .first::<i32>(conn)
[INFO] [stdout] 596 | |       .await
[INFO] [stdout]     | |____________^ cannot infer type
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:605:8
[INFO] [stdout]     |
[INFO] [stdout] 605 |       .get_result(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 602 ~     diesel::RunQueryDsl::get_result(insert_into(topicrefs::table)
[INFO] [stdout] 603 +       .values(NewTopicRef { name })
[INFO] [stdout] 604 +       .returning(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 602 ~     diesel_async::RunQueryDsl::get_result(insert_into(topicrefs::table)
[INFO] [stdout] 603 +       .values(NewTopicRef { name })
[INFO] [stdout] 604 +       .returning(topicrefs::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:650:66
[INFO] [stdout]     |
[INFO] [stdout] 650 |       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 650 -       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 650 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topicmaps::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 650 -       let inserted = insert_into(topicmaps::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 650 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topicmaps::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:687:6
[INFO] [stdout]     |
[INFO] [stdout] 687 |     .load::<TrendingTopic>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 667 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 668 +       r#"
[INFO] [stdout] 669 +             SELECT 
[INFO] [stdout] 670 +                 tr.name as topic_name,
[INFO] [stdout] 671 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 672 +                 AVG(tm.relscore) as avg_relevance,
[INFO] [stdout] 673 +                 AVG(f.osentiment) as avg_sentiment,
[INFO] [stdout] 674 +                 COUNT(DISTINCT tm.sid)::bigint as unique_symbols
[INFO] [stdout] 675 +             FROM topicmaps tm
[INFO] [stdout] 676 +             JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 677 +             JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 678 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 679 +             WHERE n.creation >= NOW() - INTERVAL '1 day' * $1
[INFO] [stdout] 680 +             GROUP BY tr.name
[INFO] [stdout] 681 +             ORDER BY mention_count DESC
[INFO] [stdout] 682 +             LIMIT $2
[INFO] [stdout] 683 +             "#,
[INFO] [stdout] 684 +     )
[INFO] [stdout] 685 +     .bind::<Integer, _>(days)
[INFO] [stdout] 686 +     .bind::<BigInt, _>(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 667 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 668 +       r#"
[INFO] [stdout] 669 +             SELECT 
[INFO] [stdout] 670 +                 tr.name as topic_name,
[INFO] [stdout] 671 +                 COUNT(*)::bigint as mention_count,
[INFO] [stdout] 672 +                 AVG(tm.relscore) as avg_relevance,
[INFO] [stdout] 673 +                 AVG(f.osentiment) as avg_sentiment,
[INFO] [stdout] 674 +                 COUNT(DISTINCT tm.sid)::bigint as unique_symbols
[INFO] [stdout] 675 +             FROM topicmaps tm
[INFO] [stdout] 676 +             JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 677 +             JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 678 +             JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 679 +             WHERE n.creation >= NOW() - INTERVAL '1 day' * $1
[INFO] [stdout] 680 +             GROUP BY tr.name
[INFO] [stdout] 681 +             ORDER BY mention_count DESC
[INFO] [stdout] 682 +             LIMIT $2
[INFO] [stdout] 683 +             "#,
[INFO] [stdout] 684 +     )
[INFO] [stdout] 685 +     .bind::<Integer, _>(days)
[INFO] [stdout] 686 +     .bind::<BigInt, _>(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:729:6
[INFO] [stdout]     |
[INFO] [stdout] 729 |     .get_result::<Correlation>(conn)
[INFO] [stdout]     |      ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 706 ~     let result = diesel_async::RunQueryDsl::get_result(sql_query(
[INFO] [stdout] 707 +       r#"
[INFO] [stdout] 708 +             WITH topic_feeds AS (
[INFO] [stdout] 709 +                 SELECT 
[INFO] [stdout] 710 +                     tm.feedid,
[INFO] [stdout] 711 +                     MAX(CASE WHEN tr.name = $1 THEN 1 ELSE 0 END) as has_topic1,
[INFO] [stdout] 712 +                     MAX(CASE WHEN tr.name = $2 THEN 1 ELSE 0 END) as has_topic2
[INFO] [stdout] 713 +                 FROM topicmaps tm
[INFO] [stdout] 714 +                 JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 715 +                 JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 716 +                 JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 717 +                 WHERE n.creation >= NOW() - INTERVAL '1 day' * $3
[INFO] [stdout] 718 +                     AND tr.name IN ($1, $2)
[INFO] [stdout] 719 +                 GROUP BY tm.feedid
[INFO] [stdout] 720 +             )
[INFO] [stdout] 721 +             SELECT 
[INFO] [stdout] 722 +                 CORR(has_topic1::float8, has_topic2::float8) as correlation
[INFO] [stdout] 723 +             FROM topic_feeds
[INFO] [stdout] 724 +             "#,
[INFO] [stdout] 725 +     )
[INFO] [stdout] 726 +     .bind::<Text, _>(topic1)
[INFO] [stdout] 727 +     .bind::<Text, _>(topic2)
[INFO] [stdout] 728 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 706 ~     let result = diesel::RunQueryDsl::get_result(sql_query(
[INFO] [stdout] 707 +       r#"
[INFO] [stdout] 708 +             WITH topic_feeds AS (
[INFO] [stdout] 709 +                 SELECT 
[INFO] [stdout] 710 +                     tm.feedid,
[INFO] [stdout] 711 +                     MAX(CASE WHEN tr.name = $1 THEN 1 ELSE 0 END) as has_topic1,
[INFO] [stdout] 712 +                     MAX(CASE WHEN tr.name = $2 THEN 1 ELSE 0 END) as has_topic2
[INFO] [stdout] 713 +                 FROM topicmaps tm
[INFO] [stdout] 714 +                 JOIN topicrefs tr ON tm.topicid = tr.id
[INFO] [stdout] 715 +                 JOIN feeds f ON tm.feedid = f.id
[INFO] [stdout] 716 +                 JOIN newsoverviews n ON f.newsoverviewid = n.id
[INFO] [stdout] 717 +                 WHERE n.creation >= NOW() - INTERVAL '1 day' * $3
[INFO] [stdout] 718 +                     AND tr.name IN ($1, $2)
[INFO] [stdout] 719 +                 GROUP BY tm.feedid
[INFO] [stdout] 720 +             )
[INFO] [stdout] 721 +             SELECT 
[INFO] [stdout] 722 +                 CORR(has_topic1::float8, has_topic2::float8) as correlation
[INFO] [stdout] 723 +             FROM topic_feeds
[INFO] [stdout] 724 +             "#,
[INFO] [stdout] 725 +     )
[INFO] [stdout] 726 +     .bind::<Text, _>(topic1)
[INFO] [stdout] 727 +     .bind::<Text, _>(topic2)
[INFO] [stdout] 728 +     .bind::<Integer, _>(days), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:765:14
[INFO] [stdout]     |
[INFO] [stdout] 765 |             .get_result::<i32>(conn)
[INFO] [stdout]     |              ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 757 ~           let overview_id = diesel::RunQueryDsl::get_result(insert_into(newsoverviews::table)
[INFO] [stdout] 758 +             .values(NewNewsOverview {
[INFO] [stdout] 759 +               creation: &news.timestamp,
[INFO] [stdout] 760 +               sid: &news.sid,
[INFO] [stdout] 761 +               items: &(news.items.len() as i32),
[INFO] [stdout] 762 +               hashid: &news.hash_id,
[INFO] [stdout] 763 +             })
[INFO] [stdout] 764 +             .returning(newsoverviews::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 757 ~           let overview_id = diesel_async::RunQueryDsl::get_result(insert_into(newsoverviews::table)
[INFO] [stdout] 758 +             .values(NewNewsOverview {
[INFO] [stdout] 759 +               creation: &news.timestamp,
[INFO] [stdout] 760 +               sid: &news.sid,
[INFO] [stdout] 761 +               items: &(news.items.len() as i32),
[INFO] [stdout] 762 +               hashid: &news.hash_id,
[INFO] [stdout] 763 +             })
[INFO] [stdout] 764 +             .returning(newsoverviews::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:803:18
[INFO] [stdout]     |
[INFO] [stdout] 803 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 780 ~               diesel::RunQueryDsl::execute(insert_into(articles::table)
[INFO] [stdout] 781 +                 .values(NewArticle {
[INFO] [stdout] 782 +                   hashid: &item.article_hash,
[INFO] [stdout] 783 +                   sourceid: &source_id,
[INFO] [stdout] 784 +                   category: &item.category,
[INFO] [stdout] 785 +                   title: &item.title,
[INFO] [stdout] 786 +                   url: &item.url,
[INFO] [stdout] 787 +                   summary: &item.summary,
[INFO] [stdout] 788 +                   banner: &item.banner_url,
[INFO] [stdout] 789 +                   author: &author_id,
[INFO] [stdout] 790 +                   ct: &item.published_time,
[INFO] [stdout] 791 +                   // Map available data to new fields intelligently
[INFO] [stdout] 792 +                   source_link: item.source_link.as_deref(),
[INFO] [stdout] 793 +                   release_time: item.release_time.as_ref(),
[INFO] [stdout] 794 +                   author_description: item.author_description.as_deref(),
[INFO] [stdout] 795 +                   author_avatar_url: item.author_avatar_url.as_deref(),
[INFO] [stdout] 796 +                   feature_image: item.feature_image.as_deref().or(if !item.banner_url.is_empty() {
[INFO] [stdout] 797 +                     Some(&item.banner_url)
[INFO] [stdout] 798 +                   } else {
[INFO] [stdout] 799 +                     None
[INFO] [stdout] 800 +                   }),
[INFO] [stdout] 801 +                   author_nick_name: item.author_nick_name.as_deref(),
[INFO] [stdout] 802 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 780 ~               diesel_async::RunQueryDsl::execute(insert_into(articles::table)
[INFO] [stdout] 781 +                 .values(NewArticle {
[INFO] [stdout] 782 +                   hashid: &item.article_hash,
[INFO] [stdout] 783 +                   sourceid: &source_id,
[INFO] [stdout] 784 +                   category: &item.category,
[INFO] [stdout] 785 +                   title: &item.title,
[INFO] [stdout] 786 +                   url: &item.url,
[INFO] [stdout] 787 +                   summary: &item.summary,
[INFO] [stdout] 788 +                   banner: &item.banner_url,
[INFO] [stdout] 789 +                   author: &author_id,
[INFO] [stdout] 790 +                   ct: &item.published_time,
[INFO] [stdout] 791 +                   // Map available data to new fields intelligently
[INFO] [stdout] 792 +                   source_link: item.source_link.as_deref(),
[INFO] [stdout] 793 +                   release_time: item.release_time.as_ref(),
[INFO] [stdout] 794 +                   author_description: item.author_description.as_deref(),
[INFO] [stdout] 795 +                   author_avatar_url: item.author_avatar_url.as_deref(),
[INFO] [stdout] 796 +                   feature_image: item.feature_image.as_deref().or(if !item.banner_url.is_empty() {
[INFO] [stdout] 797 +                     Some(&item.banner_url)
[INFO] [stdout] 798 +                   } else {
[INFO] [stdout] 799 +                     None
[INFO] [stdout] 800 +                   }),
[INFO] [stdout] 801 +                   author_nick_name: item.author_nick_name.as_deref(),
[INFO] [stdout] 802 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:819:16
[INFO] [stdout]     |
[INFO] [stdout] 819 |               .get_result::<i32>(conn)
[INFO] [stdout]     |                ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 809 ~             let feed_id = diesel::RunQueryDsl::get_result(insert_into(feeds::table)
[INFO] [stdout] 810 +               .values(NewFeed {
[INFO] [stdout] 811 +                 sid: &news.sid,
[INFO] [stdout] 812 +                 newsoverviewid: &overview_id,
[INFO] [stdout] 813 +                 articleid: &item.article_hash,
[INFO] [stdout] 814 +                 sourceid: &source_id,
[INFO] [stdout] 815 +                 osentiment: &item.overall_sentiment_score,
[INFO] [stdout] 816 +                 sentlabel: &item.overall_sentiment_label,
[INFO] [stdout] 817 +               })
[INFO] [stdout] 818 +               .returning(feeds::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 809 ~             let feed_id = diesel_async::RunQueryDsl::get_result(insert_into(feeds::table)
[INFO] [stdout] 810 +               .values(NewFeed {
[INFO] [stdout] 811 +                 sid: &news.sid,
[INFO] [stdout] 812 +                 newsoverviewid: &overview_id,
[INFO] [stdout] 813 +                 articleid: &item.article_hash,
[INFO] [stdout] 814 +                 sourceid: &source_id,
[INFO] [stdout] 815 +                 osentiment: &item.overall_sentiment_score,
[INFO] [stdout] 816 +                 sentlabel: &item.overall_sentiment_label,
[INFO] [stdout] 817 +               })
[INFO] [stdout] 818 +               .returning(feeds::id), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:833:18
[INFO] [stdout]     |
[INFO] [stdout] 833 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 825 ~               diesel::RunQueryDsl::execute(insert_into(tickersentiments::table)
[INFO] [stdout] 826 +                 .values(NewTickerSentiment {
[INFO] [stdout] 827 +                   feedid: &feed_id,
[INFO] [stdout] 828 +                   sid: &ticker_sent.sid,
[INFO] [stdout] 829 +                   relevance: &ticker_sent.relevance_score,
[INFO] [stdout] 830 +                   tsentiment: &ticker_sent.sentiment_score,
[INFO] [stdout] 831 +                   sentiment_label: &ticker_sent.sentiment_label,
[INFO] [stdout] 832 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 825 ~               diesel_async::RunQueryDsl::execute(insert_into(tickersentiments::table)
[INFO] [stdout] 826 +                 .values(NewTickerSentiment {
[INFO] [stdout] 827 +                   feedid: &feed_id,
[INFO] [stdout] 828 +                   sid: &ticker_sent.sid,
[INFO] [stdout] 829 +                   relevance: &ticker_sent.relevance_score,
[INFO] [stdout] 830 +                   tsentiment: &ticker_sent.sentiment_score,
[INFO] [stdout] 831 +                   sentiment_label: &ticker_sent.sentiment_label,
[INFO] [stdout] 832 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/news.rs:849:18
[INFO] [stdout]     |
[INFO] [stdout] 849 |                 .execute(conn)
[INFO] [stdout]     |                  ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 842 ~               diesel::RunQueryDsl::execute(insert_into(topicmaps::table)
[INFO] [stdout] 843 +                 .values(NewTopicMap {
[INFO] [stdout] 844 +                   sid: &news.sid,
[INFO] [stdout] 845 +                   feedid: &feed_id,
[INFO] [stdout] 846 +                   topicid: &topic_id,
[INFO] [stdout] 847 +                   relscore: &topic.relevance_score,
[INFO] [stdout] 848 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 842 ~               diesel_async::RunQueryDsl::execute(insert_into(topicmaps::table)
[INFO] [stdout] 843 +                 .values(NewTopicMap {
[INFO] [stdout] 844 +                   sid: &news.sid,
[INFO] [stdout] 845 +                   feedid: &feed_id,
[INFO] [stdout] 846 +                   topicid: &topic_id,
[INFO] [stdout] 847 +                   relscore: &topic.relevance_score,
[INFO] [stdout] 848 +                 }), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/price.rs:52:71
[INFO] [stdout]    |
[INFO] [stdout] 52 |       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]    |                                                                       ^^^^^^^ multiple `execute` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 52 -       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 52 +       let inserted = diesel::RunQueryDsl::execute(insert_into(intradayprices::table).values(chunk), conn).await?;
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 52 -       let inserted = insert_into(intradayprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 52 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(intradayprices::table).values(chunk), conn).await?;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:113:6
[INFO] [stdout]     |
[INFO] [stdout] 113 |     .load::<OhlcBucket>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout]  91 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout]  92 +       r#"
[INFO] [stdout]  93 +             SELECT 
[INFO] [stdout]  94 +                 time_bucket('{}', tstamp) AS bucket,
[INFO] [stdout]  95 +                 symbol,
[INFO] [stdout]  96 +                 first(open, tstamp) AS open,
[INFO] [stdout]  97 +                 max(high) AS high,
[INFO] [stdout]  98 +                 min(low) AS low,
[INFO] [stdout]  99 +                 last(close, tstamp) AS close,
[INFO] [stdout] 100 +                 sum(volume) AS volume
[INFO] [stdout] 101 +             FROM intradayprices
[INFO] [stdout] 102 +             WHERE symbol = $1
[INFO] [stdout] 103 +                 AND tstamp >= $2
[INFO] [stdout] 104 +                 AND tstamp <= $3
[INFO] [stdout] 105 +             GROUP BY bucket, symbol
[INFO] [stdout] 106 +             ORDER BY bucket DESC
[INFO] [stdout] 107 +             "#,
[INFO] [stdout] 108 +       bucket_size
[INFO] [stdout] 109 +     ))
[INFO] [stdout] 110 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 111 +     .bind::<Timestamptz, _>(start)
[INFO] [stdout] 112 +     .bind::<Timestamptz, _>(end), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout]  91 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout]  92 +       r#"
[INFO] [stdout]  93 +             SELECT 
[INFO] [stdout]  94 +                 time_bucket('{}', tstamp) AS bucket,
[INFO] [stdout]  95 +                 symbol,
[INFO] [stdout]  96 +                 first(open, tstamp) AS open,
[INFO] [stdout]  97 +                 max(high) AS high,
[INFO] [stdout]  98 +                 min(low) AS low,
[INFO] [stdout]  99 +                 last(close, tstamp) AS close,
[INFO] [stdout] 100 +                 sum(volume) AS volume
[INFO] [stdout] 101 +             FROM intradayprices
[INFO] [stdout] 102 +             WHERE symbol = $1
[INFO] [stdout] 103 +                 AND tstamp >= $2
[INFO] [stdout] 104 +                 AND tstamp <= $3
[INFO] [stdout] 105 +             GROUP BY bucket, symbol
[INFO] [stdout] 106 +             ORDER BY bucket DESC
[INFO] [stdout] 107 +             "#,
[INFO] [stdout] 108 +       bucket_size
[INFO] [stdout] 109 +     ))
[INFO] [stdout] 110 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 111 +     .bind::<Timestamptz, _>(start)
[INFO] [stdout] 112 +     .bind::<Timestamptz, _>(end), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:192:70
[INFO] [stdout]     |
[INFO] [stdout] 192 |       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 192 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 192 +       let inserted = diesel::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 192 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 192 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:227:70
[INFO] [stdout]     |
[INFO] [stdout] 227 |       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                      ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 227 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 227 +       let inserted = diesel::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 227 -       let inserted = insert_into(summaryprices::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 227 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(summaryprices::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:244:8
[INFO] [stdout]     |
[INFO] [stdout] 244 |       .first(conn)
[INFO] [stdout]     |        ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 241 ~     diesel_async::RunQueryDsl::first(summaryprices::table
[INFO] [stdout] 242 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 243 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 241 ~     diesel::RunQueryDsl::first(summaryprices::table
[INFO] [stdout] 242 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 243 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 260 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 255 ~     diesel_async::RunQueryDsl::load(summaryprices::table
[INFO] [stdout] 256 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 257 +       .filter(summaryprices::date.ge(start_date))
[INFO] [stdout] 258 +       .filter(summaryprices::date.le(end_date))
[INFO] [stdout] 259 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 255 ~     diesel::RunQueryDsl::load(summaryprices::table
[INFO] [stdout] 256 +       .filter(summaryprices::symbol.eq(symbol))
[INFO] [stdout] 257 +       .filter(summaryprices::date.ge(start_date))
[INFO] [stdout] 258 +       .filter(summaryprices::date.le(end_date))
[INFO] [stdout] 259 +       .order(summaryprices::date.desc()), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:296:6
[INFO] [stdout]     |
[INFO] [stdout] 296 |     .load::<PriceWithMA>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 274 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 275 +       r#"
[INFO] [stdout] 276 +             SELECT 
[INFO] [stdout] 277 +                 date,
[INFO] [stdout] 278 +                 close,
[INFO] [stdout] 279 +                 AVG(close) OVER (
[INFO] [stdout] 280 +                     ORDER BY date 
[INFO] [stdout] 281 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 282 +                 ) as ma,
[INFO] [stdout] 283 +                 AVG(volume::float4) OVER (
[INFO] [stdout] 284 +                     ORDER BY date 
[INFO] [stdout] 285 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 286 +                 ) as volume_ma
[INFO] [stdout] 287 +             FROM summaryprices
[INFO] [stdout] 288 +             WHERE symbol = $1
[INFO] [stdout] 289 +                 AND date >= CURRENT_DATE - INTERVAL '1 day' * $2
[INFO] [stdout] 290 +             ORDER BY date DESC
[INFO] [stdout] 291 +             "#,
[INFO] [stdout] 292 +     )
[INFO] [stdout] 293 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 294 +     .bind::<Integer, _>(days)
[INFO] [stdout] 295 +     .bind::<Integer, _>(ma_period - 1), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 274 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 275 +       r#"
[INFO] [stdout] 276 +             SELECT 
[INFO] [stdout] 277 +                 date,
[INFO] [stdout] 278 +                 close,
[INFO] [stdout] 279 +                 AVG(close) OVER (
[INFO] [stdout] 280 +                     ORDER BY date 
[INFO] [stdout] 281 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 282 +                 ) as ma,
[INFO] [stdout] 283 +                 AVG(volume::float4) OVER (
[INFO] [stdout] 284 +                     ORDER BY date 
[INFO] [stdout] 285 +                     ROWS BETWEEN $3 PRECEDING AND CURRENT ROW
[INFO] [stdout] 286 +                 ) as volume_ma
[INFO] [stdout] 287 +             FROM summaryprices
[INFO] [stdout] 288 +             WHERE symbol = $1
[INFO] [stdout] 289 +                 AND date >= CURRENT_DATE - INTERVAL '1 day' * $2
[INFO] [stdout] 290 +             ORDER BY date DESC
[INFO] [stdout] 291 +             "#,
[INFO] [stdout] 292 +     )
[INFO] [stdout] 293 +     .bind::<Text, _>(symbol)
[INFO] [stdout] 294 +     .bind::<Integer, _>(days)
[INFO] [stdout] 295 +     .bind::<Integer, _>(ma_period - 1), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:384:65
[INFO] [stdout]     |
[INFO] [stdout] 384 |       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                 ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 384 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 384 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 384 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 384 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:416:65
[INFO] [stdout]     |
[INFO] [stdout] 416 |       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout]     |                                                                 ^^^^^^^ multiple `execute` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `InsertStatement<T, U, Op, Ret>`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 416 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 416 +       let inserted = diesel::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 416 -       let inserted = insert_into(topstats::table).values(chunk).execute(conn).await?;
[INFO] [stdout] 416 +       let inserted = diesel_async::RunQueryDsl::execute(insert_into(topstats::table).values(chunk), conn).await?;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:436:8
[INFO] [stdout]     |
[INFO] [stdout] 436 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 431 ~     diesel_async::RunQueryDsl::load(topstats::table
[INFO] [stdout] 432 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 433 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 434 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 435 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 431 ~     diesel::RunQueryDsl::load(topstats::table
[INFO] [stdout] 432 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 433 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 434 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 435 +       .limit(limit), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:454:8
[INFO] [stdout]     |
[INFO] [stdout] 454 |       .get_result::<i64>(conn)
[INFO] [stdout]     |        ^^^^^^^^^^ multiple `get_result` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 450 ~     let total = diesel_async::RunQueryDsl::get_result(topstats::table
[INFO] [stdout] 451 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 452 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 453 +       .count(), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 450 ~     let total = diesel::RunQueryDsl::get_result(topstats::table
[INFO] [stdout] 451 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 452 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 453 +       .count(), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:464:8
[INFO] [stdout]     |
[INFO] [stdout] 464 |       .load(conn)
[INFO] [stdout]     |        ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     let results = diesel_async::RunQueryDsl::load(topstats::table
[INFO] [stdout] 459 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 460 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 461 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 462 +       .limit(per_page)
[INFO] [stdout] 463 +       .offset(offset), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 458 ~     let results = diesel::RunQueryDsl::load(topstats::table
[INFO] [stdout] 459 +       .filter(topstats::event_type.eq(event_type))
[INFO] [stdout] 460 +       .filter(topstats::date.ge(chrono::Utc::now() - chrono::Duration::days(1)))
[INFO] [stdout] 461 +       .order(topstats::change_pct.desc())
[INFO] [stdout] 462 +       .limit(per_page)
[INFO] [stdout] 463 +       .offset(offset), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:511:6
[INFO] [stdout]     |
[INFO] [stdout] 511 |     .load::<HistoricalTopMover>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 480 ~     diesel_async::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 481 +       r#"
[INFO] [stdout] 482 +             WITH bucketed_stats AS (
[INFO] [stdout] 483 +                 SELECT 
[INFO] [stdout] 484 +                     time_bucket('{}', date) AS bucket,
[INFO] [stdout] 485 +                     event_type,
[INFO] [stdout] 486 +                     symbol,
[INFO] [stdout] 487 +                     change_pct,
[INFO] [stdout] 488 +                     ROW_NUMBER() OVER (
[INFO] [stdout] 489 +                         PARTITION BY time_bucket('{}', date), event_type 
[INFO] [stdout] 490 +                         ORDER BY change_pct DESC
[INFO] [stdout] 491 +                     ) as rn
[INFO] [stdout] 492 +                 FROM topstats
[INFO] [stdout] 493 +                 WHERE event_type = $1
[INFO] [stdout] 494 +                     AND date >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 495 +             )
[INFO] [stdout] 496 +             SELECT 
[INFO] [stdout] 497 +                 bucket,
[INFO] [stdout] 498 +                 event_type,
[INFO] [stdout] 499 +                 COUNT(*)::integer as mover_count,
[INFO] [stdout] 500 +                 AVG(change_pct) as avg_change_pct,
[INFO] [stdout] 501 +                 MAX(change_pct) as max_change_pct,
[INFO] [stdout] 502 +                 MAX(CASE WHEN rn = 1 THEN symbol END) as top_symbol
[INFO] [stdout] 503 +             FROM bucketed_stats
[INFO] [stdout] 504 +             GROUP BY bucket, event_type
[INFO] [stdout] 505 +             ORDER BY bucket DESC
[INFO] [stdout] 506 +             "#,
[INFO] [stdout] 507 +       bucket_size, bucket_size
[INFO] [stdout] 508 +     ))
[INFO] [stdout] 509 +     .bind::<Text, _>(event_type)
[INFO] [stdout] 510 +     .bind::<Integer, _>(days_back), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 480 ~     diesel::RunQueryDsl::load(sql_query(format!(
[INFO] [stdout] 481 +       r#"
[INFO] [stdout] 482 +             WITH bucketed_stats AS (
[INFO] [stdout] 483 +                 SELECT 
[INFO] [stdout] 484 +                     time_bucket('{}', date) AS bucket,
[INFO] [stdout] 485 +                     event_type,
[INFO] [stdout] 486 +                     symbol,
[INFO] [stdout] 487 +                     change_pct,
[INFO] [stdout] 488 +                     ROW_NUMBER() OVER (
[INFO] [stdout] 489 +                         PARTITION BY time_bucket('{}', date), event_type 
[INFO] [stdout] 490 +                         ORDER BY change_pct DESC
[INFO] [stdout] 491 +                     ) as rn
[INFO] [stdout] 492 +                 FROM topstats
[INFO] [stdout] 493 +                 WHERE event_type = $1
[INFO] [stdout] 494 +                     AND date >= NOW() - INTERVAL '1 day' * $2
[INFO] [stdout] 495 +             )
[INFO] [stdout] 496 +             SELECT 
[INFO] [stdout] 497 +                 bucket,
[INFO] [stdout] 498 +                 event_type,
[INFO] [stdout] 499 +                 COUNT(*)::integer as mover_count,
[INFO] [stdout] 500 +                 AVG(change_pct) as avg_change_pct,
[INFO] [stdout] 501 +                 MAX(change_pct) as max_change_pct,
[INFO] [stdout] 502 +                 MAX(CASE WHEN rn = 1 THEN symbol END) as top_symbol
[INFO] [stdout] 503 +             FROM bucketed_stats
[INFO] [stdout] 504 +             GROUP BY bucket, event_type
[INFO] [stdout] 505 +             ORDER BY bucket DESC
[INFO] [stdout] 506 +             "#,
[INFO] [stdout] 507 +       bucket_size, bucket_size
[INFO] [stdout] 508 +     ))
[INFO] [stdout] 509 +     .bind::<Text, _>(event_type)
[INFO] [stdout] 510 +     .bind::<Integer, _>(days_back), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/price.rs:539:6
[INFO] [stdout]     |
[INFO] [stdout] 539 |     .load::<SectorPerformance>(conn)
[INFO] [stdout]     |      ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `query_builder::sql_query::UncheckedBind<Query, Value, ST>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 523 ~     diesel_async::RunQueryDsl::load(sql_query(
[INFO] [stdout] 524 +       r#"
[INFO] [stdout] 525 +             SELECT 
[INFO] [stdout] 526 +                 o.sector,
[INFO] [stdout] 527 +                 COUNT(CASE WHEN t.event_type = 'gainers' THEN 1 END)::integer as gainer_count,
[INFO] [stdout] 528 +                 COUNT(CASE WHEN t.event_type = 'losers' THEN 1 END)::integer as loser_count,
[INFO] [stdout] 529 +                 AVG(CASE WHEN t.event_type = 'gainers' THEN t.change_pct END) as avg_gain,
[INFO] [stdout] 530 +                 AVG(CASE WHEN t.event_type = 'losers' THEN t.change_pct END) as avg_loss
[INFO] [stdout] 531 +             FROM topstats t
[INFO] [stdout] 532 +             JOIN overviews o ON t.sid = o.sid
[INFO] [stdout] 533 +             WHERE t.date = $1
[INFO] [stdout] 534 +             GROUP BY o.sector
[INFO] [stdout] 535 +             ORDER BY gainer_count DESC
[INFO] [stdout] 536 +             "#,
[INFO] [stdout] 537 +     )
[INFO] [stdout] 538 +     .bind::<Timestamptz, _>(date), conn)
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 523 ~     diesel::RunQueryDsl::load(sql_query(
[INFO] [stdout] 524 +       r#"
[INFO] [stdout] 525 +             SELECT 
[INFO] [stdout] 526 +                 o.sector,
[INFO] [stdout] 527 +                 COUNT(CASE WHEN t.event_type = 'gainers' THEN 1 END)::integer as gainer_count,
[INFO] [stdout] 528 +                 COUNT(CASE WHEN t.event_type = 'losers' THEN 1 END)::integer as loser_count,
[INFO] [stdout] 529 +                 AVG(CASE WHEN t.event_type = 'gainers' THEN t.change_pct END) as avg_gain,
[INFO] [stdout] 530 +                 AVG(CASE WHEN t.event_type = 'losers' THEN t.change_pct END) as avg_loss
[INFO] [stdout] 531 +             FROM topstats t
[INFO] [stdout] 532 +             JOIN overviews o ON t.sid = o.sid
[INFO] [stdout] 533 +             WHERE t.date = $1
[INFO] [stdout] 534 +             GROUP BY o.sector
[INFO] [stdout] 535 +             ORDER BY gainer_count DESC
[INFO] [stdout] 536 +             "#,
[INFO] [stdout] 537 +     )
[INFO] [stdout] 538 +     .bind::<Timestamptz, _>(date), conn)
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:49:30
[INFO] [stdout]    |
[INFO] [stdout] 49 |     symbols::table.find(sid).first(conn).await
[INFO] [stdout]    |                              ^^^^^ multiple `first` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 49 -     symbols::table.find(sid).first(conn).await
[INFO] [stdout] 49 +     diesel_async::RunQueryDsl::first(symbols::table.find(sid), conn).await
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 49 -     symbols::table.find(sid).first(conn).await
[INFO] [stdout] 49 +     diesel::RunQueryDsl::first(symbols::table.find(sid), conn).await
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:56:55
[INFO] [stdout]    |
[INFO] [stdout] 56 |     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout]    |                                                       ^^^^^ multiple `first` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 56 -     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 56 +     diesel_async::RunQueryDsl::first(symbols::table.filter(symbols::symbol.eq(symbol)), conn).await
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 56 -     symbols::table.filter(symbols::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 56 +     diesel::RunQueryDsl::first(symbols::table.filter(symbols::symbol.eq(symbol)), conn).await
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]   --> crates/av-database/postgres/src/models/security.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 |       .load(conn)
[INFO] [stdout]    |        ^^^^ multiple `load` found
[INFO] [stdout]    |
[INFO] [stdout]    = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]    = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     diesel_async::RunQueryDsl::load(symbols::table
[INFO] [stdout] 63 +       .filter(symbols::overview.eq(true))
[INFO] [stdout] 64 +       .or_filter(symbols::intraday.eq(true))
[INFO] [stdout] 65 +       .or_filter(symbols::summary.eq(true)), conn)
[INFO] [stdout]    |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]    |
[INFO] [stdout] 62 ~     diesel::RunQueryDsl::load(symbols::table
[INFO] [stdout] 63 +       .filter(symbols::overview.eq(true))
[INFO] [stdout] 64 +       .or_filter(symbols::intraday.eq(true))
[INFO] [stdout] 65 +       .or_filter(symbols::summary.eq(true)), conn)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:137:32
[INFO] [stdout]     |
[INFO] [stdout] 137 |     overviews::table.find(sid).first(conn).await
[INFO] [stdout]     |                                ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 137 -     overviews::table.find(sid).first(conn).await
[INFO] [stdout] 137 +     diesel_async::RunQueryDsl::first(overviews::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 137 -     overviews::table.find(sid).first(conn).await
[INFO] [stdout] 137 +     diesel::RunQueryDsl::first(overviews::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:144:59
[INFO] [stdout]     |
[INFO] [stdout] 144 |     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout]     |                                                           ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 144 -     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 144 +     diesel_async::RunQueryDsl::first(overviews::table.filter(overviews::symbol.eq(symbol)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 144 -     overviews::table.filter(overviews::symbol.eq(symbol)).first(conn).await
[INFO] [stdout] 144 +     diesel::RunQueryDsl::first(overviews::table.filter(overviews::symbol.eq(symbol)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:151:59
[INFO] [stdout]     |
[INFO] [stdout] 151 |     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout]     |                                                           ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 151 -     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout] 151 +     diesel_async::RunQueryDsl::load(overviews::table.filter(overviews::sector.eq(sector)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 151 -     overviews::table.filter(overviews::sector.eq(sector)).load(conn).await
[INFO] [stdout] 151 +     diesel::RunQueryDsl::load(overviews::table.filter(overviews::sector.eq(sector)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:231:35
[INFO] [stdout]     |
[INFO] [stdout] 231 |     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout]     |                                   ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 231 -     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout] 231 +     diesel_async::RunQueryDsl::first(overviewexts::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 231 -     overviewexts::table.find(sid).first(conn).await
[INFO] [stdout] 231 +     diesel::RunQueryDsl::first(overviewexts::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:238:65
[INFO] [stdout]     |
[INFO] [stdout] 238 |     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout]     |                                                                 ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 238 -     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout] 238 +     diesel_async::RunQueryDsl::load(overviewexts::table.filter(overviewexts::beta.ge(min_beta)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 238 -     overviewexts::table.filter(overviewexts::beta.ge(min_beta)).load(conn).await
[INFO] [stdout] 238 +     diesel::RunQueryDsl::load(overviewexts::table.filter(overviewexts::beta.ge(min_beta)), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:244:75
[INFO] [stdout]     |
[INFO] [stdout] 244 |     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout]     |                                                                           ^^^^ multiple `load` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 244 -     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout] 244 +     diesel_async::RunQueryDsl::load(overviewexts::table.filter(overviewexts::dividend_date.is_not_null()), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 244 -     overviewexts::table.filter(overviewexts::dividend_date.is_not_null()).load(conn).await
[INFO] [stdout] 244 +     diesel::RunQueryDsl::load(overviewexts::table.filter(overviewexts::dividend_date.is_not_null()), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0034]: multiple applicable items in scope
[INFO] [stdout]    --> crates/av-database/postgres/src/models/security.rs:488:37
[INFO] [stdout]     |
[INFO] [stdout] 488 |     equity_details::table.find(sid).first(conn).await
[INFO] [stdout]     |                                     ^^^^^ multiple `first` found
[INFO] [stdout]     |
[INFO] [stdout]     = note: candidate #1 is defined in an impl of the trait `diesel_async::RunQueryDsl` for the type `T`
[INFO] [stdout]     = note: candidate #2 is defined in an impl of the trait `diesel::RunQueryDsl` for the type `SelectStatement<F, S, D, W, O, LOf, G, H, LC>`
[INFO] [stdout] help: disambiguate the method for candidate #1
[INFO] [stdout]     |
[INFO] [stdout] 488 -     equity_details::table.find(sid).first(conn).await
[INFO] [stdout] 488 +     diesel_async::RunQueryDsl::first(equity_details::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] help: disambiguate the method for candidate #2
[INFO] [stdout]     |
[INFO] [stdout] 488 -     equity_details::table.find(sid).first(conn).await
[INFO] [stdout] 488 +     diesel::RunQueryDsl::first(equity_details::table.find(sid), conn).await
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0034, E0282.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0034`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `av-database-postgres` (lib test) due to 52 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] Some errors have detailed explanations: E0034, E0282.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0034`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `av-database-postgres` (lib) due to 52 previous errors
[INFO] running `Command { std: "docker" "inspect" "63ee66adca9286ea7d62d00cebc9828ae1c0839816c32258a77b8db79e6c6f6c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "63ee66adca9286ea7d62d00cebc9828ae1c0839816c32258a77b8db79e6c6f6c", kill_on_drop: false }`
[INFO] [stdout] 63ee66adca9286ea7d62d00cebc9828ae1c0839816c32258a77b8db79e6c6f6c
