[INFO] fetching crate finql-postgres 0.2.0... [INFO] checking finql-postgres-0.2.0 against try#8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8 for pr-82565 [INFO] extracting crate finql-postgres 0.2.0 into /workspace/builds/worker-8/source [INFO] validating manifest of crates.io crate finql-postgres 0.2.0 on toolchain 8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking crates.io crate finql-postgres 0.2.0 [INFO] finished tweaking crates.io crate finql-postgres 0.2.0 [INFO] tweaked toml for crates.io crate finql-postgres 0.2.0 written to /workspace/builds/worker-8/source/Cargo.toml [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/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" "rustops/crates-build-env@sha256:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 9e624d4b676bdc6901cf7f259e9757219e897b3e3f46f95a9a74101eaab39a0a [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "9e624d4b676bdc6901cf7f259e9757219e897b3e3f46f95a9a74101eaab39a0a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9e624d4b676bdc6901cf7f259e9757219e897b3e3f46f95a9a74101eaab39a0a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9e624d4b676bdc6901cf7f259e9757219e897b3e3f46f95a9a74101eaab39a0a", kill_on_drop: false }` [INFO] [stdout] 9e624d4b676bdc6901cf7f259e9757219e897b3e3f46f95a9a74101eaab39a0a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-8/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:f2f6bcd4b43ebee4e173f653a26493129bdb64017c85f916b780ca7fbdbaa79d" "/opt/rustwide/cargo-home/bin/cargo" "+8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 6a472e9fa988f7f08ed26832016bb02a2355afec728e62ceca57a5f437f69285 [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] running `Command { std: "docker" "start" "-a" "6a472e9fa988f7f08ed26832016bb02a2355afec728e62ceca57a5f437f69285", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.88 [INFO] [stderr] Compiling syn v1.0.63 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling serde v1.0.124 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling once_cell v1.7.2 [INFO] [stderr] Compiling spin v0.5.2 [INFO] [stderr] Compiling untrusted v0.7.1 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling build_const v0.2.1 [INFO] [stderr] Checking pin-project-lite v0.2.6 [INFO] [stderr] Compiling serde_json v1.0.64 [INFO] [stderr] Compiling futures-sink v0.3.13 [INFO] [stderr] Checking bytes v1.0.1 [INFO] [stderr] Compiling opaque-debug v0.3.0 [INFO] [stderr] Compiling wyz v0.2.0 [INFO] [stderr] Compiling slab v0.4.2 [INFO] [stderr] Compiling funty v1.1.0 [INFO] [stderr] Compiling tap v1.0.1 [INFO] [stderr] Compiling arrayvec v0.5.2 [INFO] [stderr] Compiling static_assertions v1.1.0 [INFO] [stderr] Checking futures-core v0.3.13 [INFO] [stderr] Compiling cpuid-bool v0.1.2 [INFO] [stderr] Compiling ppv-lite86 v0.2.10 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling ahash v0.4.7 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Compiling subtle v2.4.0 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling itoa v0.4.7 [INFO] [stderr] Compiling hex v0.4.3 [INFO] [stderr] Compiling whoami v1.1.0 [INFO] [stderr] Checking pin-utils v0.1.0 [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Checking futures-task v0.3.13 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling dotenv v0.15.0 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling tokio v1.3.0 [INFO] [stderr] Compiling crossbeam-utils v0.8.3 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling nom v6.1.2 [INFO] [stderr] Compiling ahash v0.6.3 [INFO] [stderr] Compiling instant v0.1.9 [INFO] [stderr] Compiling futures-channel v0.3.13 [INFO] [stderr] Compiling crc v1.8.1 [INFO] [stderr] Compiling form_urlencoded v1.0.1 [INFO] [stderr] Compiling lock_api v0.4.2 [INFO] [stderr] Compiling hashbrown v0.9.1 [INFO] [stderr] Compiling typenum v1.13.0 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling radium v0.5.3 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Checking lexical-core v0.7.5 [INFO] [stderr] Checking bitvec v0.19.5 [INFO] [stderr] Compiling idna v0.2.2 [INFO] [stderr] Compiling stringprep v0.1.2 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking crypto-mac v0.10.0 [INFO] [stderr] Compiling hashlink v0.6.0 [INFO] [stderr] Checking hmac v0.10.1 [INFO] [stderr] Checking md-5 v0.9.1 [INFO] [stderr] Checking sha2 v0.9.3 [INFO] [stderr] Checking sha-1 v0.9.4 [INFO] [stderr] Checking crossbeam-queue v0.3.1 [INFO] [stderr] Checking crossbeam-channel v0.5.0 [INFO] [stderr] Compiling ring v0.16.20 [INFO] [stderr] Compiling mio v0.7.9 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling parking_lot_core v0.8.3 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling url v2.2.1 [INFO] [stderr] Checking atoi v0.4.0 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Compiling parking_lot v0.11.1 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Compiling webpki v0.21.4 [INFO] [stderr] Compiling sct v0.6.0 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Compiling rustls v0.19.0 [INFO] [stderr] Compiling webpki-roots v0.21.0 [INFO] [stderr] Checking sqlformat v0.1.6 [INFO] [stderr] Checking tokio-rustls v0.22.0 [INFO] [stderr] Checking tokio-stream v0.1.4 [INFO] [stderr] Checking sqlx-rt v0.3.0 [INFO] [stderr] Compiling serde_derive v1.0.124 [INFO] [stderr] Compiling futures-macro v0.3.13 [INFO] [stderr] Compiling thiserror-impl v1.0.24 [INFO] [stderr] Compiling async-trait v0.1.48 [INFO] [stderr] Compiling futures-util v0.3.13 [INFO] [stderr] Compiling thiserror v1.0.24 [INFO] [stderr] Compiling futures-executor v0.3.13 [INFO] [stderr] Compiling futures v0.3.13 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking finql-data v0.1.4 [INFO] [stderr] Checking sqlx-core v0.5.1 [INFO] [stderr] Compiling sqlx-macros v0.5.1 [INFO] [stderr] Checking sqlx v0.5.1 [INFO] [stderr] Checking finql-postgres v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:18:19 [INFO] [stdout] | [INFO] [stdout] 18 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 19 | | "INSERT INTO assets (name, wkn, isin, note) VALUES ($1, $2, $3, $4) RETURNING id", [INFO] [stdout] 20 | | asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 21 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE isin=$1", isin).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE wkn=$1", wkn).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE name=$1", asset.name).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 40 | | "SELECT name, wkn, isin, note FROM assets WHERE id=$1", [INFO] [stdout] 41 | | (id as i32), [INFO] [stdout] 42 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:54:19 [INFO] [stdout] | [INFO] [stdout] 54 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 55 | | "SELECT id, name, wkn, note FROM assets WHERE isin=$1", [INFO] [stdout] 56 | | isin.to_string(), [INFO] [stdout] 57 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:71:20 [INFO] [stdout] | [INFO] [stdout] 71 | for row in sqlx::query!("SELECT id, name, wkn, isin, note FROM assets ORDER BY name") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / sqlx::query!( [INFO] [stdout] 96 | | "UPDATE assets SET name=$2, wkn=$3, isin=$4, note=$5 [INFO] [stdout] 97 | | WHERE id=$1;", [INFO] [stdout] 98 | | id, asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 99 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | sqlx::query!("DELETE FROM assets WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:113:20 [INFO] [stdout] | [INFO] [stdout] 113 | for row in sqlx::query!("SELECT name FROM assets WHERE isin IS NULL AND wkn IS NULL AND length(name)=3") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:18:19 [INFO] [stdout] | [INFO] [stdout] 18 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 19 | | "INSERT INTO assets (name, wkn, isin, note) VALUES ($1, $2, $3, $4) RETURNING id", [INFO] [stdout] 20 | | asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 21 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:29:13 [INFO] [stdout] | [INFO] [stdout] 29 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE isin=$1", isin).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:31:13 [INFO] [stdout] | [INFO] [stdout] 31 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE wkn=$1", wkn).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:33:13 [INFO] [stdout] | [INFO] [stdout] 33 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE name=$1", asset.name).fetch_one(&self.pool).await.ok() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:39:19 [INFO] [stdout] | [INFO] [stdout] 39 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 40 | | "SELECT name, wkn, isin, note FROM assets WHERE id=$1", [INFO] [stdout] 41 | | (id as i32), [INFO] [stdout] 42 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:54:19 [INFO] [stdout] | [INFO] [stdout] 54 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 55 | | "SELECT id, name, wkn, note FROM assets WHERE isin=$1", [INFO] [stdout] 56 | | isin.to_string(), [INFO] [stdout] 57 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:71:20 [INFO] [stdout] | [INFO] [stdout] 71 | for row in sqlx::query!("SELECT id, name, wkn, isin, note FROM assets ORDER BY name") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / sqlx::query!( [INFO] [stdout] 96 | | "UPDATE assets SET name=$2, wkn=$3, isin=$4, note=$5 [INFO] [stdout] 97 | | WHERE id=$1;", [INFO] [stdout] 98 | | id, asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 99 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | sqlx::query!("DELETE FROM assets WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:113:20 [INFO] [stdout] | [INFO] [stdout] 113 | for row in sqlx::query!("SELECT name FROM assets WHERE isin IS NULL AND wkn IS NULL AND length(name)=3") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 17 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 18 | | "INSERT INTO ticker (name, asset_id, source, priority, currency, factor) [INFO] [stdout] 19 | | VALUES ($1, $2, $3, $4, $5, $6) RETURNING id", [INFO] [stdout] 20 | | ticker.name, [INFO] [stdout] ... | [INFO] [stdout] 25 | | ticker.factor, [INFO] [stdout] 26 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | let row = sqlx::query!("SELECT id FROM ticker WHERE name=$1", ticker) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 46 | | "SELECT name, asset_id, source, priority, currency, factor FROM ticker WHERE id=$1", [INFO] [stdout] 47 | | (id as i32), [INFO] [stdout] 48 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:69:20 [INFO] [stdout] | [INFO] [stdout] 69 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 70 | | "SELECT id, name, asset_id, priority, source, currency, factor FROM ticker", [INFO] [stdout] 71 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:99:20 [INFO] [stdout] | [INFO] [stdout] 99 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 100 | | "SELECT id, name, asset_id, priority, currency, factor FROM ticker WHERE source=$1", [INFO] [stdout] 101 | | (source.to_string()), [INFO] [stdout] 102 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:129:20 [INFO] [stdout] | [INFO] [stdout] 129 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 130 | | "SELECT id, name, source, priority, currency, factor FROM ticker WHERE asset_id=$1", [INFO] [stdout] 131 | | (asset_id as i32), [INFO] [stdout] 132 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / sqlx::query!( [INFO] [stdout] 163 | | "UPDATE ticker SET name=$2, asset_id=$3, source=$4, priority=$5, currency=$6, factor=$7 [INFO] [stdout] 164 | | WHERE id=$1", [INFO] [stdout] 165 | | id, [INFO] [stdout] ... | [INFO] [stdout] 171 | | ticker.factor, [INFO] [stdout] 172 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | sqlx::query!("DELETE FROM ticker WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:187:19 [INFO] [stdout] | [INFO] [stdout] 187 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 188 | | "INSERT INTO quotes (ticker_id, price, time, volume) [INFO] [stdout] 189 | | VALUES ($1, $2, $3, $4) RETURNING id", [INFO] [stdout] 190 | | (quote.ticker as i32), [INFO] [stdout] ... | [INFO] [stdout] 193 | | quote.volume, [INFO] [stdout] 194 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:205:19 [INFO] [stdout] | [INFO] [stdout] 205 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 206 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 207 | | FROM quotes q, ticker t, assets a [INFO] [stdout] 208 | | WHERE a.name=$1 AND t.asset_id=a.id AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 209 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 210 | | asset_name, time, [INFO] [stdout] 211 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:239:19 [INFO] [stdout] | [INFO] [stdout] 239 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 240 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 241 | | FROM quotes q, ticker t [INFO] [stdout] 242 | | WHERE t.asset_id=$1 AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 243 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 244 | | (asset_id as i32), time, [INFO] [stdout] 245 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:270:20 [INFO] [stdout] | [INFO] [stdout] 270 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 271 | | "SELECT id, price, time, volume FROM quotes [INFO] [stdout] 272 | | WHERE ticker_id=$1 ORDER BY time ASC;", [INFO] [stdout] 273 | | (ticker_id as i32), [INFO] [stdout] 274 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:297:9 [INFO] [stdout] | [INFO] [stdout] 297 | / sqlx::query!( [INFO] [stdout] 298 | | "UPDATE quotes SET ticker_id=$2, price=$3, time=$4, volume=$5 [INFO] [stdout] 299 | | WHERE id=$1", [INFO] [stdout] 300 | | id, [INFO] [stdout] ... | [INFO] [stdout] 304 | | quote.volume, [INFO] [stdout] 305 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:312:9 [INFO] [stdout] | [INFO] [stdout] 312 | sqlx::query!("DELETE FROM quotes WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:319:20 [INFO] [stdout] | [INFO] [stdout] 319 | let rows = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 320 | | "SELECT digits FROM rounding_digits WHERE currency=$1;", [INFO] [stdout] 321 | | currency.to_string(), [INFO] [stdout] 322 | | ).fetch_all(&self.pool).await; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:337:20 [INFO] [stdout] | [INFO] [stdout] 337 | let _row = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 338 | | "INSERT INTO rounding_digits (currency, digits) VALUES ($1, $2)", [INFO] [stdout] 339 | | currency.to_string(), digits, [INFO] [stdout] 340 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:134:19 [INFO] [stdout] | [INFO] [stdout] 134 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 135 | | "INSERT INTO transactions (trans_type, asset_id, cash_amount, [INFO] [stdout] 136 | | cash_currency, cash_date, related_trans, position, [INFO] [stdout] 137 | | note) [INFO] [stdout] ... | [INFO] [stdout] 146 | | transaction.note, [INFO] [stdout] 147 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:154:19 [INFO] [stdout] | [INFO] [stdout] 154 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 155 | | "SELECT trans_type, asset_id, [INFO] [stdout] 156 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 157 | | FROM transactions [INFO] [stdout] 158 | | WHERE id=$1", (id as i32), [INFO] [stdout] 159 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:177:20 [INFO] [stdout] | [INFO] [stdout] 177 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 178 | | "SELECT id, trans_type, asset_id, [INFO] [stdout] 179 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 180 | | FROM transactions", [INFO] [stdout] 181 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / sqlx::query!( [INFO] [stdout] 209 | | "UPDATE transactions SET [INFO] [stdout] 210 | | trans_type=$2, [INFO] [stdout] 211 | | asset_id=$3, [INFO] [stdout] ... | [INFO] [stdout] 227 | | transaction.note, [INFO] [stdout] 228 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | sqlx::query!("DELETE FROM transactions WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | sqlx::query!("DROP TABLE IF EXISTS transactions").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | sqlx::query!("DROP TABLE IF EXISTS quotes").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | sqlx::query!("DROP TABLE IF EXISTS ticker").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | sqlx::query!("DROP TYPE IF EXISTS market_data_source").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | sqlx::query!("DROP TABLE IF EXISTS assets").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | sqlx::query!("DROP TABLE IF EXISTS rounding_digits").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / sqlx::query!( [INFO] [stdout] 37 | | "CREATE TABLE IF NOT EXISTS assets ( [INFO] [stdout] 38 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 39 | | name TEXT NOT NULL UNIQUE, [INFO] [stdout] ... | [INFO] [stdout] 42 | | note TEXT [INFO] [stdout] 43 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | / sqlx::query!( [INFO] [stdout] 46 | | "CREATE TABLE IF NOT EXISTS transactions ( [INFO] [stdout] 47 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 48 | | trans_type TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 57 | | FOREIGN KEY(related_trans) REFERENCES transactions(id) [INFO] [stdout] 58 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | / sqlx::query!( [INFO] [stdout] 61 | | "CREATE TABLE IF NOT EXISTS ticker ( [INFO] [stdout] 62 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 63 | | name TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 69 | | FOREIGN KEY(asset_id) REFERENCES assets(id) [INFO] [stdout] 70 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | / sqlx::query!( [INFO] [stdout] 73 | | "CREATE TABLE IF NOT EXISTS quotes ( [INFO] [stdout] 74 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 75 | | ticker_id INTEGER NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 79 | | FOREIGN KEY(ticker_id) REFERENCES ticker(id) [INFO] [stdout] 80 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / sqlx::query!( [INFO] [stdout] 83 | | "CREATE TABLE IF NOT EXISTS rounding_digits ( [INFO] [stdout] 84 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 85 | | currency TEXT NOT NULL UNIQUE, [INFO] [stdout] 86 | | digits INT NOT NULL [INFO] [stdout] 87 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:17:19 [INFO] [stdout] | [INFO] [stdout] 17 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 18 | | "INSERT INTO ticker (name, asset_id, source, priority, currency, factor) [INFO] [stdout] 19 | | VALUES ($1, $2, $3, $4, $5, $6) RETURNING id", [INFO] [stdout] 20 | | ticker.name, [INFO] [stdout] ... | [INFO] [stdout] 25 | | ticker.factor, [INFO] [stdout] 26 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:33:19 [INFO] [stdout] | [INFO] [stdout] 33 | let row = sqlx::query!("SELECT id FROM ticker WHERE name=$1", ticker) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 46 | | "SELECT name, asset_id, source, priority, currency, factor FROM ticker WHERE id=$1", [INFO] [stdout] 47 | | (id as i32), [INFO] [stdout] 48 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:69:20 [INFO] [stdout] | [INFO] [stdout] 69 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 70 | | "SELECT id, name, asset_id, priority, source, currency, factor FROM ticker", [INFO] [stdout] 71 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:99:20 [INFO] [stdout] | [INFO] [stdout] 99 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 100 | | "SELECT id, name, asset_id, priority, currency, factor FROM ticker WHERE source=$1", [INFO] [stdout] 101 | | (source.to_string()), [INFO] [stdout] 102 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:129:20 [INFO] [stdout] | [INFO] [stdout] 129 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 130 | | "SELECT id, name, source, priority, currency, factor FROM ticker WHERE asset_id=$1", [INFO] [stdout] 131 | | (asset_id as i32), [INFO] [stdout] 132 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | / sqlx::query!( [INFO] [stdout] 163 | | "UPDATE ticker SET name=$2, asset_id=$3, source=$4, priority=$5, currency=$6, factor=$7 [INFO] [stdout] 164 | | WHERE id=$1", [INFO] [stdout] 165 | | id, [INFO] [stdout] ... | [INFO] [stdout] 171 | | ticker.factor, [INFO] [stdout] 172 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:179:9 [INFO] [stdout] | [INFO] [stdout] 179 | sqlx::query!("DELETE FROM ticker WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:187:19 [INFO] [stdout] | [INFO] [stdout] 187 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 188 | | "INSERT INTO quotes (ticker_id, price, time, volume) [INFO] [stdout] 189 | | VALUES ($1, $2, $3, $4) RETURNING id", [INFO] [stdout] 190 | | (quote.ticker as i32), [INFO] [stdout] ... | [INFO] [stdout] 193 | | quote.volume, [INFO] [stdout] 194 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:205:19 [INFO] [stdout] | [INFO] [stdout] 205 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 206 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 207 | | FROM quotes q, ticker t, assets a [INFO] [stdout] 208 | | WHERE a.name=$1 AND t.asset_id=a.id AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 209 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 210 | | asset_name, time, [INFO] [stdout] 211 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:239:19 [INFO] [stdout] | [INFO] [stdout] 239 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 240 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 241 | | FROM quotes q, ticker t [INFO] [stdout] 242 | | WHERE t.asset_id=$1 AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 243 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 244 | | (asset_id as i32), time, [INFO] [stdout] 245 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:270:20 [INFO] [stdout] | [INFO] [stdout] 270 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 271 | | "SELECT id, price, time, volume FROM quotes [INFO] [stdout] 272 | | WHERE ticker_id=$1 ORDER BY time ASC;", [INFO] [stdout] 273 | | (ticker_id as i32), [INFO] [stdout] 274 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:297:9 [INFO] [stdout] | [INFO] [stdout] 297 | / sqlx::query!( [INFO] [stdout] 298 | | "UPDATE quotes SET ticker_id=$2, price=$3, time=$4, volume=$5 [INFO] [stdout] 299 | | WHERE id=$1", [INFO] [stdout] 300 | | id, [INFO] [stdout] ... | [INFO] [stdout] 304 | | quote.volume, [INFO] [stdout] 305 | | ) [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:312:9 [INFO] [stdout] | [INFO] [stdout] 312 | sqlx::query!("DELETE FROM quotes WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:319:20 [INFO] [stdout] | [INFO] [stdout] 319 | let rows = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 320 | | "SELECT digits FROM rounding_digits WHERE currency=$1;", [INFO] [stdout] 321 | | currency.to_string(), [INFO] [stdout] 322 | | ).fetch_all(&self.pool).await; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/quote_handler.rs:337:20 [INFO] [stdout] | [INFO] [stdout] 337 | let _row = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 338 | | "INSERT INTO rounding_digits (currency, digits) VALUES ($1, $2)", [INFO] [stdout] 339 | | currency.to_string(), digits, [INFO] [stdout] 340 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | async fn insert_asset(&mut self, asset: &Asset) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_id` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | async fn get_asset_id(&mut self, asset: &Asset) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_by_id` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | async fn get_asset_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_by_isin` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | async fn get_asset_by_isin(&mut self, isin: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_assets` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | async fn get_all_assets(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | async fn update_asset(&mut self, asset: &Asset) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | async fn delete_asset(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_currencies` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | async fn get_all_currencies(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `insert_asset_if_new` [INFO] [stdout] --> src/asset_handler.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | impl AssetHandler for PostgresDB { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `insert_asset_if_new` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn insert_asset_if_new(&'life0 self, _: &'life1 finql_data::Asset, _: bool) -> Pin> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | async fn insert_ticker(&mut self, ticker: &Ticker) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_ticker_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | async fn get_ticker_id(&mut self, ticker: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_ticker_by_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | async fn get_ticker_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 67 | async fn get_all_ticker(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker_for_source` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / async fn get_all_ticker_for_source( [INFO] [stdout] 95 | | &mut self, [INFO] [stdout] 96 | | source: &str, [INFO] [stdout] 97 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 121 | | Ok(all_ticker) [INFO] [stdout] 122 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker_for_asset` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | / async fn get_all_ticker_for_asset( [INFO] [stdout] 125 | | &mut self, [INFO] [stdout] 126 | | asset_id: usize, [INFO] [stdout] 127 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 151 | | Ok(all_ticker) [INFO] [stdout] 152 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | async fn update_ticker(&mut self, ticker: &Ticker) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | async fn delete_ticker(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | async fn insert_quote(&mut self, quote: &Quote) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_last_quote_before` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | / async fn get_last_quote_before( [INFO] [stdout] 201 | | &mut self, [INFO] [stdout] 202 | | asset_name: &str, [INFO] [stdout] 203 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 231 | | )) [INFO] [stdout] 232 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_last_quote_before_by_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | / async fn get_last_quote_before_by_id( [INFO] [stdout] 235 | | &mut self, [INFO] [stdout] 236 | | asset_id: usize, [INFO] [stdout] 237 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 265 | | )) [INFO] [stdout] 266 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_quotes_for_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:268:5 [INFO] [stdout] | [INFO] [stdout] 268 | async fn get_all_quotes_for_ticker(&mut self, ticker_id: usize) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:290:5 [INFO] [stdout] | [INFO] [stdout] 290 | async fn update_quote(&mut self, quote: &Quote) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:311:5 [INFO] [stdout] | [INFO] [stdout] 311 | async fn delete_quote(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_rounding_digits` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:318:5 [INFO] [stdout] | [INFO] [stdout] 318 | async fn get_rounding_digits(&mut self, currency: Currency) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, Currency) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, Currency) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `set_rounding_digits` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:336:5 [INFO] [stdout] | [INFO] [stdout] 336 | async fn set_rounding_digits(&mut self, currency: Currency, digits: i32) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, Currency, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, Currency, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `insert_if_new_ticker` [INFO] [stdout] --> src/quote_handler.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | impl QuoteHandler for PostgresDB { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `insert_if_new_ticker` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn insert_if_new_ticker(&'life0 self, _: &'life1 Ticker) -> Pin> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | async fn insert_transaction(&mut self, transaction: &Transaction) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_transaction_by_id` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:153:5 [INFO] [stdout] | [INFO] [stdout] 153 | async fn get_transaction_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_transactions` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | async fn get_all_transactions(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | async fn update_transaction(&mut self, transaction: &Transaction) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:233:5 [INFO] [stdout] | [INFO] [stdout] 233 | async fn delete_transaction(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:134:19 [INFO] [stdout] | [INFO] [stdout] 134 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 135 | | "INSERT INTO transactions (trans_type, asset_id, cash_amount, [INFO] [stdout] 136 | | cash_currency, cash_date, related_trans, position, [INFO] [stdout] 137 | | note) [INFO] [stdout] ... | [INFO] [stdout] 146 | | transaction.note, [INFO] [stdout] 147 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:154:19 [INFO] [stdout] | [INFO] [stdout] 154 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 155 | | "SELECT trans_type, asset_id, [INFO] [stdout] 156 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 157 | | FROM transactions [INFO] [stdout] 158 | | WHERE id=$1", (id as i32), [INFO] [stdout] 159 | | ).fetch_one(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:177:20 [INFO] [stdout] | [INFO] [stdout] 177 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 178 | | "SELECT id, trans_type, asset_id, [INFO] [stdout] 179 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 180 | | FROM transactions", [INFO] [stdout] 181 | | ).fetch_all(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / sqlx::query!( [INFO] [stdout] 209 | | "UPDATE transactions SET [INFO] [stdout] 210 | | trans_type=$2, [INFO] [stdout] 211 | | asset_id=$3, [INFO] [stdout] ... | [INFO] [stdout] 227 | | transaction.note, [INFO] [stdout] 228 | | ).execute(&self.pool).await [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/transaction_handler.rs:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | sqlx::query!("DELETE FROM transactions WHERE id=$1;", (id as i32)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | sqlx::query!("DROP TABLE IF EXISTS transactions").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | sqlx::query!("DROP TABLE IF EXISTS quotes").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | sqlx::query!("DROP TABLE IF EXISTS ticker").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:28:9 [INFO] [stdout] | [INFO] [stdout] 28 | sqlx::query!("DROP TYPE IF EXISTS market_data_source").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | sqlx::query!("DROP TABLE IF EXISTS assets").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:30:9 [INFO] [stdout] | [INFO] [stdout] 30 | sqlx::query!("DROP TABLE IF EXISTS rounding_digits").execute(&self.pool).await?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / sqlx::query!( [INFO] [stdout] 37 | | "CREATE TABLE IF NOT EXISTS assets ( [INFO] [stdout] 38 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 39 | | name TEXT NOT NULL UNIQUE, [INFO] [stdout] ... | [INFO] [stdout] 42 | | note TEXT [INFO] [stdout] 43 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:45:9 [INFO] [stdout] | [INFO] [stdout] 45 | / sqlx::query!( [INFO] [stdout] 46 | | "CREATE TABLE IF NOT EXISTS transactions ( [INFO] [stdout] 47 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 48 | | trans_type TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 57 | | FOREIGN KEY(related_trans) REFERENCES transactions(id) [INFO] [stdout] 58 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:60:9 [INFO] [stdout] | [INFO] [stdout] 60 | / sqlx::query!( [INFO] [stdout] 61 | | "CREATE TABLE IF NOT EXISTS ticker ( [INFO] [stdout] 62 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 63 | | name TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 69 | | FOREIGN KEY(asset_id) REFERENCES assets(id) [INFO] [stdout] 70 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | / sqlx::query!( [INFO] [stdout] 73 | | "CREATE TABLE IF NOT EXISTS quotes ( [INFO] [stdout] 74 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 75 | | ticker_id INTEGER NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 79 | | FOREIGN KEY(ticker_id) REFERENCES ticker(id) [INFO] [stdout] 80 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/lib.rs:82:9 [INFO] [stdout] | [INFO] [stdout] 82 | / sqlx::query!( [INFO] [stdout] 83 | | "CREATE TABLE IF NOT EXISTS rounding_digits ( [INFO] [stdout] 84 | | id SERIAL PRIMARY KEY, [INFO] [stdout] 85 | | currency TEXT NOT NULL UNIQUE, [INFO] [stdout] 86 | | digits INT NOT NULL [INFO] [stdout] 87 | | )").execute(&self.pool).await?; [INFO] [stdout] | |_______________^ [INFO] [stdout] | [INFO] [stdout] = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 73 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0046, E0053. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0046`. [INFO] [stdout] [INFO] [stderr] error: could not compile `finql-postgres` [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error[E0053]: method `insert_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | async fn insert_asset(&mut self, asset: &Asset) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_id` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | async fn get_asset_id(&mut self, asset: &Asset) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_by_id` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | async fn get_asset_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_asset_by_isin` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | async fn get_asset_by_isin(&mut self, isin: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_assets` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | async fn get_all_assets(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:88:5 [INFO] [stdout] | [INFO] [stdout] 88 | async fn update_asset(&mut self, asset: &Asset) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:104:5 [INFO] [stdout] | [INFO] [stdout] 104 | async fn delete_asset(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_currencies` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:111:5 [INFO] [stdout] | [INFO] [stdout] 111 | async fn get_all_currencies(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `insert_asset_if_new` [INFO] [stdout] --> src/asset_handler.rs:16:1 [INFO] [stdout] | [INFO] [stdout] 16 | impl AssetHandler for PostgresDB { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `insert_asset_if_new` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn insert_asset_if_new(&'life0 self, _: &'life1 finql_data::Asset, _: bool) -> Pin> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | async fn insert_ticker(&mut self, ticker: &Ticker) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_ticker_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 32 | async fn get_ticker_id(&mut self, ticker: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_ticker_by_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:44:5 [INFO] [stdout] | [INFO] [stdout] 44 | async fn get_ticker_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 67 | async fn get_all_ticker(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker_for_source` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:94:5 [INFO] [stdout] | [INFO] [stdout] 94 | / async fn get_all_ticker_for_source( [INFO] [stdout] 95 | | &mut self, [INFO] [stdout] 96 | | source: &str, [INFO] [stdout] 97 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 121 | | Ok(all_ticker) [INFO] [stdout] 122 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_ticker_for_asset` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | / async fn get_all_ticker_for_asset( [INFO] [stdout] 125 | | &mut self, [INFO] [stdout] 126 | | asset_id: usize, [INFO] [stdout] 127 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 151 | | Ok(all_ticker) [INFO] [stdout] 152 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:155:5 [INFO] [stdout] | [INFO] [stdout] 155 | async fn update_ticker(&mut self, ticker: &Ticker) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | async fn delete_ticker(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:186:5 [INFO] [stdout] | [INFO] [stdout] 186 | async fn insert_quote(&mut self, quote: &Quote) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_last_quote_before` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | / async fn get_last_quote_before( [INFO] [stdout] 201 | | &mut self, [INFO] [stdout] 202 | | asset_name: &str, [INFO] [stdout] 203 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 231 | | )) [INFO] [stdout] 232 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_last_quote_before_by_id` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:234:5 [INFO] [stdout] | [INFO] [stdout] 234 | / async fn get_last_quote_before_by_id( [INFO] [stdout] 235 | | &mut self, [INFO] [stdout] 236 | | asset_id: usize, [INFO] [stdout] 237 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 265 | | )) [INFO] [stdout] 266 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_quotes_for_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:268:5 [INFO] [stdout] | [INFO] [stdout] 268 | async fn get_all_quotes_for_ticker(&mut self, ticker_id: usize) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:290:5 [INFO] [stdout] | [INFO] [stdout] 290 | async fn update_quote(&mut self, quote: &Quote) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:311:5 [INFO] [stdout] | [INFO] [stdout] 311 | async fn delete_quote(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_rounding_digits` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:318:5 [INFO] [stdout] | [INFO] [stdout] 318 | async fn get_rounding_digits(&mut self, currency: Currency) -> i32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, Currency) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, Currency) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `set_rounding_digits` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:336:5 [INFO] [stdout] | [INFO] [stdout] 336 | async fn set_rounding_digits(&mut self, currency: Currency, digits: i32) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, Currency, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, Currency, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0046]: not all trait items implemented, missing: `insert_if_new_ticker` [INFO] [stdout] --> src/quote_handler.rs:14:1 [INFO] [stdout] | [INFO] [stdout] 14 | impl QuoteHandler for PostgresDB { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `insert_if_new_ticker` in implementation [INFO] [stdout] | [INFO] [stdout] = help: implement the missing item: `fn insert_if_new_ticker(&'life0 self, _: &'life1 Ticker) -> Pin> + Send + 'async_trait)>> { todo!() }` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | async fn insert_transaction(&mut self, transaction: &Transaction) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_transaction_by_id` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:153:5 [INFO] [stdout] | [INFO] [stdout] 153 | async fn get_transaction_by_id(&mut self, id: usize) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `get_all_transactions` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:175:5 [INFO] [stdout] | [INFO] [stdout] 175 | async fn get_all_transactions(&mut self) -> Result, DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:200:5 [INFO] [stdout] | [INFO] [stdout] 200 | async fn update_transaction(&mut self, transaction: &Transaction) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:233:5 [INFO] [stdout] | [INFO] [stdout] 233 | async fn delete_transaction(&mut self, id: usize) -> Result<(), DataError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 PostgresDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut PostgresDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 73 previous errors [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0046, E0053. [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0046`. [INFO] [stdout] [INFO] [stderr] error: build failed [INFO] running `Command { std: "docker" "inspect" "6a472e9fa988f7f08ed26832016bb02a2355afec728e62ceca57a5f437f69285", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6a472e9fa988f7f08ed26832016bb02a2355afec728e62ceca57a5f437f69285", kill_on_drop: false }` [INFO] [stdout] 6a472e9fa988f7f08ed26832016bb02a2355afec728e62ceca57a5f437f69285