[INFO] fetching crate finql-sqlite 0.2.0... [INFO] checking finql-sqlite-0.2.0 against try#8e3afc79c11f48cb3acd1be5b3b7de98fe3f93a8 for pr-82565 [INFO] extracting crate finql-sqlite 0.2.0 into /workspace/builds/worker-1/source [INFO] validating manifest of crates.io crate finql-sqlite 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-sqlite 0.2.0 [INFO] finished tweaking crates.io crate finql-sqlite 0.2.0 [INFO] tweaked toml for crates.io crate finql-sqlite 0.2.0 written to /workspace/builds/worker-1/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] 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] Downloading crates ... [INFO] [stderr] Downloaded finql-data v0.1.4 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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] 2f5969d41ad6927d975447cf99f9a6f105094bdcd0d5ce8c16d62a93bc799b23 [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" "2f5969d41ad6927d975447cf99f9a6f105094bdcd0d5ce8c16d62a93bc799b23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "2f5969d41ad6927d975447cf99f9a6f105094bdcd0d5ce8c16d62a93bc799b23", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2f5969d41ad6927d975447cf99f9a6f105094bdcd0d5ce8c16d62a93bc799b23", kill_on_drop: false }` [INFO] [stdout] 2f5969d41ad6927d975447cf99f9a6f105094bdcd0d5ce8c16d62a93bc799b23 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1/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] e437d0d1a5e4f8675097e0d912ed4c011cf10f564fc6ea2e7640bb9bc009032c [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" "e437d0d1a5e4f8675097e0d912ed4c011cf10f564fc6ea2e7640bb9bc009032c", kill_on_drop: false }` [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Checking cfg-if v1.0.0 [INFO] [stderr] Compiling bitflags v1.2.1 [INFO] [stderr] Compiling once_cell v1.7.2 [INFO] [stderr] Compiling spin v0.5.2 [INFO] [stderr] Compiling pin-project-lite v0.2.6 [INFO] [stderr] Compiling untrusted v0.7.1 [INFO] [stderr] Compiling matches v0.1.8 [INFO] [stderr] Compiling build_const v0.2.1 [INFO] [stderr] Compiling futures-core v0.3.13 [INFO] [stderr] Compiling tinyvec_macros v0.1.0 [INFO] [stderr] Compiling futures-sink v0.3.13 [INFO] [stderr] Compiling base64 v0.13.0 [INFO] [stderr] Compiling futures-io v0.3.13 [INFO] [stderr] Compiling slab v0.4.2 [INFO] [stderr] Compiling futures-task v0.3.13 [INFO] [stderr] Checking lazy_static v1.4.0 [INFO] [stderr] Compiling pin-utils v0.1.0 [INFO] [stderr] Compiling smallvec v1.6.1 [INFO] [stderr] Compiling ahash v0.4.7 [INFO] [stderr] Compiling scopeguard v1.1.0 [INFO] [stderr] Checking funty v1.1.0 [INFO] [stderr] Compiling percent-encoding v2.1.0 [INFO] [stderr] Compiling opaque-debug v0.3.0 [INFO] [stderr] Compiling unicode_categories v0.1.1 [INFO] [stderr] Compiling cpuid-bool v0.1.2 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling whoami v1.1.0 [INFO] [stderr] Checking maplit v1.0.2 [INFO] [stderr] Compiling byteorder v1.4.3 [INFO] [stderr] Compiling dotenv v0.15.0 [INFO] [stderr] Checking hex v0.4.3 [INFO] [stderr] Checking itoa v0.4.7 [INFO] [stderr] Compiling generic-array v0.14.4 [INFO] [stderr] Compiling nom v6.1.2 [INFO] [stderr] Compiling ahash v0.6.3 [INFO] [stderr] Compiling instant v0.1.9 [INFO] [stderr] Compiling libsqlite3-sys v0.20.1 [INFO] [stderr] Compiling unicode-bidi v0.3.4 [INFO] [stderr] Compiling tinyvec v1.1.1 [INFO] [stderr] Compiling futures-channel v0.3.13 [INFO] [stderr] Compiling lock_api v0.4.2 [INFO] [stderr] Compiling hashbrown v0.9.1 [INFO] [stderr] Compiling crc v1.8.1 [INFO] [stderr] Compiling form_urlencoded v1.0.1 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling typenum v1.13.0 [INFO] [stderr] Checking radium v0.5.3 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling proc-macro-nested v0.1.7 [INFO] [stderr] Compiling num_cpus v1.13.0 [INFO] [stderr] Compiling time v0.1.43 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling parking_lot_core v0.8.3 [INFO] [stderr] Compiling ring v0.16.20 [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] Checking stringprep v0.1.2 [INFO] [stderr] Checking mio v0.7.9 [INFO] [stderr] Checking bitvec v0.19.5 [INFO] [stderr] Compiling syn v1.0.63 [INFO] [stderr] Checking parking_lot v0.11.1 [INFO] [stderr] Compiling hashlink v0.6.0 [INFO] [stderr] Compiling lexical-core v0.7.5 [INFO] [stderr] Checking block-buffer v0.9.0 [INFO] [stderr] Checking digest v0.9.0 [INFO] [stderr] Compiling unicode-normalization v0.1.17 [INFO] [stderr] Checking sha2 v0.9.3 [INFO] [stderr] Checking webpki v0.21.4 [INFO] [stderr] Checking sct v0.6.0 [INFO] [stderr] Compiling crossbeam-queue v0.3.1 [INFO] [stderr] Compiling crossbeam-channel v0.5.0 [INFO] [stderr] Compiling idna v0.2.2 [INFO] [stderr] Checking rustls v0.19.0 [INFO] [stderr] Checking webpki-roots v0.21.0 [INFO] [stderr] Compiling atoi v0.4.0 [INFO] [stderr] Compiling url v2.2.1 [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] Checking sqlformat v0.1.6 [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] Compiling serde v1.0.124 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Checking sqlx-core v0.5.1 [INFO] [stderr] Checking finql-data v0.1.4 [INFO] [stderr] Compiling sqlx-macros v0.5.1 [INFO] [stderr] Checking sqlx v0.5.1 [INFO] [stderr] Checking finql-sqlite v0.2.0 (/opt/rustwide/workdir) [INFO] [stdout] error: `DATABASE_URL` must be set to use query macros [INFO] [stdout] --> src/asset_handler.rs:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / sqlx::query!( [INFO] [stdout] 20 | | "INSERT INTO assets (name, wkn, isin, note) VALUES (?1, ?2, ?3, ?4)", [INFO] [stdout] 21 | | asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 22 | | ).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:24:19 [INFO] [stdout] | [INFO] [stdout] 24 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 25 | | "SELECT id FROM assets WHERE name=?", [INFO] [stdout] 26 | | asset.name, [INFO] [stdout] 27 | | ).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:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE isin=?", isin).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:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE wkn=?", wkn).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:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE name=?", asset.name).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:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 54 | | "SELECT name, wkn, isin, note FROM assets WHERE id=?", [INFO] [stdout] 55 | | id_param, [INFO] [stdout] 56 | | ).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:68:19 [INFO] [stdout] | [INFO] [stdout] 68 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 69 | | "SELECT id, name, wkn, note FROM assets WHERE isin=?", [INFO] [stdout] 70 | | isin, [INFO] [stdout] 71 | | ).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:85:20 [INFO] [stdout] | [INFO] [stdout] 85 | 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:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | / sqlx::query!( [INFO] [stdout] 109 | | "UPDATE assets SET name=?2, wkn=?3, isin=?4, note=?5 [INFO] [stdout] 110 | | WHERE id=?1", [INFO] [stdout] 111 | | id, asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 112 | | ).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:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | sqlx::query!("DELETE FROM assets WHERE id=?;", id) [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:127:20 [INFO] [stdout] | [INFO] [stdout] 127 | 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:19:9 [INFO] [stdout] | [INFO] [stdout] 19 | / sqlx::query!( [INFO] [stdout] 20 | | "INSERT INTO assets (name, wkn, isin, note) VALUES (?1, ?2, ?3, ?4)", [INFO] [stdout] 21 | | asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 22 | | ).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:24:19 [INFO] [stdout] | [INFO] [stdout] 24 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 25 | | "SELECT id FROM assets WHERE name=?", [INFO] [stdout] 26 | | asset.name, [INFO] [stdout] 27 | | ).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:38:13 [INFO] [stdout] | [INFO] [stdout] 38 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE isin=?", isin).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:40:13 [INFO] [stdout] | [INFO] [stdout] 40 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE wkn=?", wkn).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:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | sqlx::query_as!(ID, "SELECT id FROM assets WHERE name=?", asset.name).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:53:19 [INFO] [stdout] | [INFO] [stdout] 53 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 54 | | "SELECT name, wkn, isin, note FROM assets WHERE id=?", [INFO] [stdout] 55 | | id_param, [INFO] [stdout] 56 | | ).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:68:19 [INFO] [stdout] | [INFO] [stdout] 68 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 69 | | "SELECT id, name, wkn, note FROM assets WHERE isin=?", [INFO] [stdout] 70 | | isin, [INFO] [stdout] 71 | | ).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:85:20 [INFO] [stdout] | [INFO] [stdout] 85 | 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:108:9 [INFO] [stdout] | [INFO] [stdout] 108 | / sqlx::query!( [INFO] [stdout] 109 | | "UPDATE assets SET name=?2, wkn=?3, isin=?4, note=?5 [INFO] [stdout] 110 | | WHERE id=?1", [INFO] [stdout] 111 | | id, asset.name, asset.wkn, asset.isin, asset.note, [INFO] [stdout] 112 | | ).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:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | sqlx::query!("DELETE FROM assets WHERE id=?;", id) [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:127:20 [INFO] [stdout] | [INFO] [stdout] 127 | 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:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / sqlx::query!( [INFO] [stdout] 50 | | "INSERT INTO ticker (name, asset_id, source, priority, currency, factor) [INFO] [stdout] 51 | | VALUES ($1, $2, $3, $4, $5, $6)", [INFO] [stdout] 52 | | ticker.name, [INFO] [stdout] ... | [INFO] [stdout] 57 | | ticker.factor, [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/quote_handler.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 62 | | "SELECT id FROM ticker WHERE name=? AND source=?", [INFO] [stdout] 63 | | ticker.name, ticker.source, [INFO] [stdout] 64 | | ).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:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | let row = sqlx::query!("SELECT id FROM ticker WHERE name=?", 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:83:19 [INFO] [stdout] | [INFO] [stdout] 83 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 84 | | "SELECT name, asset_id, source, priority, currency, factor FROM ticker WHERE id=?", [INFO] [stdout] 85 | | id_param, [INFO] [stdout] 86 | | ).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:107:20 [INFO] [stdout] | [INFO] [stdout] 107 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 108 | | "SELECT id, name, asset_id, priority, source, currency, factor FROM ticker", [INFO] [stdout] 109 | | ).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:137:20 [INFO] [stdout] | [INFO] [stdout] 137 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 138 | | "SELECT id, name, asset_id, priority, currency, factor FROM ticker WHERE source=?", [INFO] [stdout] 139 | | source, [INFO] [stdout] 140 | | ).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:168:20 [INFO] [stdout] | [INFO] [stdout] 168 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 169 | | "SELECT id, name, source, priority, currency, factor FROM ticker WHERE asset_id=?", [INFO] [stdout] 170 | | a_id, [INFO] [stdout] 171 | | ).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:201:9 [INFO] [stdout] | [INFO] [stdout] 201 | / sqlx::query!( [INFO] [stdout] 202 | | "UPDATE ticker SET name=?2, asset_id=?3, source=?4, priority=?5, currency=?6, factor=?7 [INFO] [stdout] 203 | | WHERE id=?1", [INFO] [stdout] 204 | | id, [INFO] [stdout] ... | [INFO] [stdout] 210 | | ticker.factor, [INFO] [stdout] 211 | | ) [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:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | sqlx::query!("DELETE FROM ticker WHERE id=?", id) [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:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | / sqlx::query!( [INFO] [stdout] 229 | | "INSERT INTO quotes (ticker_id, price, time, volume) [INFO] [stdout] 230 | | VALUES (?, ?, ?, ?)", [INFO] [stdout] 231 | | ticker_id, [INFO] [stdout] ... | [INFO] [stdout] 234 | | quote.volume, [INFO] [stdout] 235 | | ).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:237:19 [INFO] [stdout] | [INFO] [stdout] 237 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 238 | | "SELECT id FROM quotes WHERE ticker_id=? and time=?", [INFO] [stdout] 239 | | ticker_id, quote.time, [INFO] [stdout] 240 | | ).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:250:19 [INFO] [stdout] | [INFO] [stdout] 250 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 251 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 252 | | FROM quotes q, ticker t, assets a [INFO] [stdout] 253 | | WHERE a.name=$1 AND t.asset_id=a.id AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 254 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 255 | | asset_name, time, [INFO] [stdout] 256 | | ).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:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 286 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 287 | | FROM quotes q, ticker t [INFO] [stdout] 288 | | WHERE t.asset_id=$1 AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 289 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 290 | | asset_id, time, [INFO] [stdout] 291 | | ).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:317:20 [INFO] [stdout] | [INFO] [stdout] 317 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 318 | | "SELECT id, price, time, volume FROM quotes [INFO] [stdout] 319 | | WHERE ticker_id=$1 ORDER BY time ASC;", [INFO] [stdout] 320 | | t_id, [INFO] [stdout] 321 | | ).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:345:9 [INFO] [stdout] | [INFO] [stdout] 345 | / sqlx::query!( [INFO] [stdout] 346 | | "UPDATE quotes SET ticker_id=$2, price=$3, time=$4, volume=$5 [INFO] [stdout] 347 | | WHERE id=$1", [INFO] [stdout] 348 | | id, [INFO] [stdout] ... | [INFO] [stdout] 352 | | quote.volume, [INFO] [stdout] 353 | | ) [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:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | sqlx::query!("DELETE FROM quotes WHERE id=$1;", id) [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:369:20 [INFO] [stdout] | [INFO] [stdout] 369 | let rows = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 370 | | "SELECT digits FROM rounding_digits WHERE currency=$1;", [INFO] [stdout] 371 | | curr, [INFO] [stdout] 372 | | ).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:387:20 [INFO] [stdout] | [INFO] [stdout] 387 | let _row = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 388 | | "INSERT INTO rounding_digits (currency, digits) VALUES ($1, $2)", [INFO] [stdout] 389 | | curr, digits, [INFO] [stdout] 390 | | ).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:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / sqlx::query!( [INFO] [stdout] 50 | | "INSERT INTO ticker (name, asset_id, source, priority, currency, factor) [INFO] [stdout] 51 | | VALUES ($1, $2, $3, $4, $5, $6)", [INFO] [stdout] 52 | | ticker.name, [INFO] [stdout] ... | [INFO] [stdout] 57 | | ticker.factor, [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/quote_handler.rs:61:19 [INFO] [stdout] | [INFO] [stdout] 61 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 62 | | "SELECT id FROM ticker WHERE name=? AND source=?", [INFO] [stdout] 63 | | ticker.name, ticker.source, [INFO] [stdout] 64 | | ).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:70:19 [INFO] [stdout] | [INFO] [stdout] 70 | let row = sqlx::query!("SELECT id FROM ticker WHERE name=?", 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:83:19 [INFO] [stdout] | [INFO] [stdout] 83 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 84 | | "SELECT name, asset_id, source, priority, currency, factor FROM ticker WHERE id=?", [INFO] [stdout] 85 | | id_param, [INFO] [stdout] 86 | | ).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:107:20 [INFO] [stdout] | [INFO] [stdout] 107 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 108 | | "SELECT id, name, asset_id, priority, source, currency, factor FROM ticker", [INFO] [stdout] 109 | | ).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:137:20 [INFO] [stdout] | [INFO] [stdout] 137 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 138 | | "SELECT id, name, asset_id, priority, currency, factor FROM ticker WHERE source=?", [INFO] [stdout] 139 | | source, [INFO] [stdout] 140 | | ).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:168:20 [INFO] [stdout] | [INFO] [stdout] 168 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 169 | | "SELECT id, name, source, priority, currency, factor FROM ticker WHERE asset_id=?", [INFO] [stdout] 170 | | a_id, [INFO] [stdout] 171 | | ).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:201:9 [INFO] [stdout] | [INFO] [stdout] 201 | / sqlx::query!( [INFO] [stdout] 202 | | "UPDATE ticker SET name=?2, asset_id=?3, source=?4, priority=?5, currency=?6, factor=?7 [INFO] [stdout] 203 | | WHERE id=?1", [INFO] [stdout] 204 | | id, [INFO] [stdout] ... | [INFO] [stdout] 210 | | ticker.factor, [INFO] [stdout] 211 | | ) [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:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | sqlx::query!("DELETE FROM ticker WHERE id=?", id) [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:228:9 [INFO] [stdout] | [INFO] [stdout] 228 | / sqlx::query!( [INFO] [stdout] 229 | | "INSERT INTO quotes (ticker_id, price, time, volume) [INFO] [stdout] 230 | | VALUES (?, ?, ?, ?)", [INFO] [stdout] 231 | | ticker_id, [INFO] [stdout] ... | [INFO] [stdout] 234 | | quote.volume, [INFO] [stdout] 235 | | ).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:237:19 [INFO] [stdout] | [INFO] [stdout] 237 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 238 | | "SELECT id FROM quotes WHERE ticker_id=? and time=?", [INFO] [stdout] 239 | | ticker_id, quote.time, [INFO] [stdout] 240 | | ).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:250:19 [INFO] [stdout] | [INFO] [stdout] 250 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 251 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 252 | | FROM quotes q, ticker t, assets a [INFO] [stdout] 253 | | WHERE a.name=$1 AND t.asset_id=a.id AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 254 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 255 | | asset_name, time, [INFO] [stdout] 256 | | ).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:285:19 [INFO] [stdout] | [INFO] [stdout] 285 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 286 | | "SELECT q.id, q.ticker_id, q.price, q.time, q.volume, t.currency, t.priority [INFO] [stdout] 287 | | FROM quotes q, ticker t [INFO] [stdout] 288 | | WHERE t.asset_id=$1 AND t.id=q.ticker_id AND q.time<= $2 [INFO] [stdout] 289 | | ORDER BY q.time DESC, t.priority ASC LIMIT 1", [INFO] [stdout] 290 | | asset_id, time, [INFO] [stdout] 291 | | ).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:317:20 [INFO] [stdout] | [INFO] [stdout] 317 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 318 | | "SELECT id, price, time, volume FROM quotes [INFO] [stdout] 319 | | WHERE ticker_id=$1 ORDER BY time ASC;", [INFO] [stdout] 320 | | t_id, [INFO] [stdout] 321 | | ).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:345:9 [INFO] [stdout] | [INFO] [stdout] 345 | / sqlx::query!( [INFO] [stdout] 346 | | "UPDATE quotes SET ticker_id=$2, price=$3, time=$4, volume=$5 [INFO] [stdout] 347 | | WHERE id=$1", [INFO] [stdout] 348 | | id, [INFO] [stdout] ... | [INFO] [stdout] 352 | | quote.volume, [INFO] [stdout] 353 | | ) [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:361:9 [INFO] [stdout] | [INFO] [stdout] 361 | sqlx::query!("DELETE FROM quotes WHERE id=$1;", id) [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:369:20 [INFO] [stdout] | [INFO] [stdout] 369 | let rows = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 370 | | "SELECT digits FROM rounding_digits WHERE currency=$1;", [INFO] [stdout] 371 | | curr, [INFO] [stdout] 372 | | ).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:387:20 [INFO] [stdout] | [INFO] [stdout] 387 | let _row = sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 388 | | "INSERT INTO rounding_digits (currency, digits) VALUES ($1, $2)", [INFO] [stdout] 389 | | curr, digits, [INFO] [stdout] 390 | | ).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:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | / sqlx::query!( [INFO] [stdout] 140 | | "INSERT INTO transactions (trans_type, asset_id, cash_amount, [INFO] [stdout] 141 | | cash_currency, cash_date, related_trans, position, [INFO] [stdout] 142 | | note) [INFO] [stdout] ... | [INFO] [stdout] 151 | | transaction.note, [INFO] [stdout] 152 | | ).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:154:19 [INFO] [stdout] | [INFO] [stdout] 154 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 155 | | r#"SELECT id FROM transactions [INFO] [stdout] 156 | | WHERE [INFO] [stdout] 157 | | trans_type=? [INFO] [stdout] ... | [INFO] [stdout] 172 | | transaction.note, [INFO] [stdout] 173 | | ).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:180:19 [INFO] [stdout] | [INFO] [stdout] 180 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 181 | | "SELECT trans_type, asset_id, [INFO] [stdout] 182 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 183 | | FROM transactions [INFO] [stdout] 184 | | WHERE id=$1", param_id, [INFO] [stdout] 185 | | ).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:203:20 [INFO] [stdout] | [INFO] [stdout] 203 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 204 | | "SELECT id, trans_type, asset_id, [INFO] [stdout] 205 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 206 | | FROM transactions", [INFO] [stdout] 207 | | ).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:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | / sqlx::query!( [INFO] [stdout] 235 | | "UPDATE transactions SET [INFO] [stdout] 236 | | trans_type=?2, [INFO] [stdout] 237 | | asset_id=?3, [INFO] [stdout] ... | [INFO] [stdout] 253 | | transaction.note, [INFO] [stdout] 254 | | ).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:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | sqlx::query!("DELETE FROM transactions WHERE id=?", id) [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:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | 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:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | 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:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | 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:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | 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:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | 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:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / sqlx::query!( [INFO] [stdout] 34 | | "CREATE TABLE IF NOT EXISTS assets ( [INFO] [stdout] 35 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 36 | | name TEXT NOT NULL UNIQUE, [INFO] [stdout] ... | [INFO] [stdout] 39 | | note TEXT [INFO] [stdout] 40 | | )").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:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / sqlx::query!( [INFO] [stdout] 43 | | "CREATE TABLE IF NOT EXISTS transactions ( [INFO] [stdout] 44 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 45 | | trans_type TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 54 | | FOREIGN KEY(related_trans) REFERENCES transactions(id) [INFO] [stdout] 55 | | )").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:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | / sqlx::query!( [INFO] [stdout] 58 | | "CREATE TABLE IF NOT EXISTS ticker ( [INFO] [stdout] 59 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 60 | | name TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 66 | | FOREIGN KEY(asset_id) REFERENCES assets(id) [INFO] [stdout] 67 | | )").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:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | / sqlx::query!( [INFO] [stdout] 70 | | "CREATE TABLE IF NOT EXISTS quotes ( [INFO] [stdout] 71 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 72 | | ticker_id INTEGER NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 76 | | FOREIGN KEY(ticker_id) REFERENCES ticker(id) [INFO] [stdout] 77 | | )").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:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | / sqlx::query!( [INFO] [stdout] 80 | | "CREATE TABLE IF NOT EXISTS rounding_digits ( [INFO] [stdout] 81 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 82 | | currency TEXT NOT NULL UNIQUE, [INFO] [stdout] 83 | | digits INT NOT NULL [INFO] [stdout] 84 | | )").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:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | / sqlx::query!( [INFO] [stdout] 140 | | "INSERT INTO transactions (trans_type, asset_id, cash_amount, [INFO] [stdout] 141 | | cash_currency, cash_date, related_trans, position, [INFO] [stdout] 142 | | note) [INFO] [stdout] ... | [INFO] [stdout] 151 | | transaction.note, [INFO] [stdout] 152 | | ).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:154:19 [INFO] [stdout] | [INFO] [stdout] 154 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 155 | | r#"SELECT id FROM transactions [INFO] [stdout] 156 | | WHERE [INFO] [stdout] 157 | | trans_type=? [INFO] [stdout] ... | [INFO] [stdout] 172 | | transaction.note, [INFO] [stdout] 173 | | ).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:180:19 [INFO] [stdout] | [INFO] [stdout] 180 | let row = sqlx::query!( [INFO] [stdout] | ___________________^ [INFO] [stdout] 181 | | "SELECT trans_type, asset_id, [INFO] [stdout] 182 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 183 | | FROM transactions [INFO] [stdout] 184 | | WHERE id=$1", param_id, [INFO] [stdout] 185 | | ).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:203:20 [INFO] [stdout] | [INFO] [stdout] 203 | for row in sqlx::query!( [INFO] [stdout] | ____________________^ [INFO] [stdout] 204 | | "SELECT id, trans_type, asset_id, [INFO] [stdout] 205 | | cash_amount, cash_currency, cash_date, related_trans, position, note [INFO] [stdout] 206 | | FROM transactions", [INFO] [stdout] 207 | | ).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:234:9 [INFO] [stdout] | [INFO] [stdout] 234 | / sqlx::query!( [INFO] [stdout] 235 | | "UPDATE transactions SET [INFO] [stdout] 236 | | trans_type=?2, [INFO] [stdout] 237 | | asset_id=?3, [INFO] [stdout] ... | [INFO] [stdout] 253 | | transaction.note, [INFO] [stdout] 254 | | ).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:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | sqlx::query!("DELETE FROM transactions WHERE id=?", id) [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:23:9 [INFO] [stdout] | [INFO] [stdout] 23 | 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:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | 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:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | 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:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | 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:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | 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:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / sqlx::query!( [INFO] [stdout] 34 | | "CREATE TABLE IF NOT EXISTS assets ( [INFO] [stdout] 35 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 36 | | name TEXT NOT NULL UNIQUE, [INFO] [stdout] ... | [INFO] [stdout] 39 | | note TEXT [INFO] [stdout] 40 | | )").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:42:9 [INFO] [stdout] | [INFO] [stdout] 42 | / sqlx::query!( [INFO] [stdout] 43 | | "CREATE TABLE IF NOT EXISTS transactions ( [INFO] [stdout] 44 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 45 | | trans_type TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 54 | | FOREIGN KEY(related_trans) REFERENCES transactions(id) [INFO] [stdout] 55 | | )").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:57:9 [INFO] [stdout] | [INFO] [stdout] 57 | / sqlx::query!( [INFO] [stdout] 58 | | "CREATE TABLE IF NOT EXISTS ticker ( [INFO] [stdout] 59 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 60 | | name TEXT NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 66 | | FOREIGN KEY(asset_id) REFERENCES assets(id) [INFO] [stdout] 67 | | )").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:69:9 [INFO] [stdout] | [INFO] [stdout] 69 | / sqlx::query!( [INFO] [stdout] 70 | | "CREATE TABLE IF NOT EXISTS quotes ( [INFO] [stdout] 71 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 72 | | ticker_id INTEGER NOT NULL, [INFO] [stdout] ... | [INFO] [stdout] 76 | | FOREIGN KEY(ticker_id) REFERENCES ticker(id) [INFO] [stdout] 77 | | )").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:79:9 [INFO] [stdout] | [INFO] [stdout] 79 | / sqlx::query!( [INFO] [stdout] 80 | | "CREATE TABLE IF NOT EXISTS rounding_digits ( [INFO] [stdout] 81 | | id INTEGER PRIMARY KEY, [INFO] [stdout] 82 | | currency TEXT NOT NULL UNIQUE, [INFO] [stdout] 83 | | digits INT NOT NULL [INFO] [stdout] 84 | | )").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:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:67:5 [INFO] [stdout] | [INFO] [stdout] 67 | 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 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 str) -> 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:36:5 [INFO] [stdout] | [INFO] [stdout] 36 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 finql_data::Asset) -> 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:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:51:5 [INFO] [stdout] | [INFO] [stdout] 51 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:67:5 [INFO] [stdout] | [INFO] [stdout] 67 | 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 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 str) -> 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:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:83:5 [INFO] [stdout] | [INFO] [stdout] 83 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:17:1 [INFO] [stdout] | [INFO] [stdout] 17 | impl AssetHandler for SqliteDB { [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 `update_asset` has an incompatible type for trait [INFO] [stdout] --> src/asset_handler.rs:101:5 [INFO] [stdout] | [INFO] [stdout] 101 | 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 SqliteDB, &'life1 finql_data::Asset) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:117:5 [INFO] [stdout] | [INFO] [stdout] 117 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | 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 SqliteDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | 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 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:125:5 [INFO] [stdout] | [INFO] [stdout] 125 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:105:5 [INFO] [stdout] | [INFO] [stdout] 105 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:17:1 [INFO] [stdout] | [INFO] [stdout] 17 | impl AssetHandler for SqliteDB { [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:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | 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 SqliteDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 Ticker) -> 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:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | / async fn get_all_ticker_for_source( [INFO] [stdout] 133 | | &mut self, [INFO] [stdout] 134 | | source: &str, [INFO] [stdout] 135 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 159 | | Ok(all_ticker) [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 str) -> 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:69:5 [INFO] [stdout] | [INFO] [stdout] 69 | 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 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | / async fn get_all_ticker_for_asset( [INFO] [stdout] 163 | | &mut self, [INFO] [stdout] 164 | | asset_id: usize, [INFO] [stdout] 165 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 189 | | Ok(all_ticker) [INFO] [stdout] 190 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:192:5 [INFO] [stdout] | [INFO] [stdout] 192 | 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 SqliteDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 Ticker) -> 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:81:5 [INFO] [stdout] | [INFO] [stdout] 81 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:105:5 [INFO] [stdout] | [INFO] [stdout] 105 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> 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:132:5 [INFO] [stdout] | [INFO] [stdout] 132 | / async fn get_all_ticker_for_source( [INFO] [stdout] 133 | | &mut self, [INFO] [stdout] 134 | | source: &str, [INFO] [stdout] 135 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 159 | | Ok(all_ticker) [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, &'life1 str) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:162:5 [INFO] [stdout] | [INFO] [stdout] 162 | / async fn get_all_ticker_for_asset( [INFO] [stdout] 163 | | &mut self, [INFO] [stdout] 164 | | asset_id: usize, [INFO] [stdout] 165 | | ) -> Result, DataError> { [INFO] [stdout] ... | [INFO] [stdout] 189 | | Ok(all_ticker) [INFO] [stdout] 190 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:192:5 [INFO] [stdout] | [INFO] [stdout] 192 | 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 SqliteDB, &'life1 Ticker) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:217:5 [INFO] [stdout] | [INFO] [stdout] 217 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `delete_ticker` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:217:5 [INFO] [stdout] | [INFO] [stdout] 217 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | 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 SqliteDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | 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 SqliteDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / async fn get_last_quote_before( [INFO] [stdout] 246 | | &mut self, [INFO] [stdout] 247 | | asset_name: &str, [INFO] [stdout] 248 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 276 | | )) [INFO] [stdout] 277 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:279:5 [INFO] [stdout] | [INFO] [stdout] 279 | / async fn get_last_quote_before_by_id( [INFO] [stdout] 280 | | &mut self, [INFO] [stdout] 281 | | asset_id: usize, [INFO] [stdout] 282 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 311 | | )) [INFO] [stdout] 312 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _, DateTime<_>) -> 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:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / async fn get_last_quote_before( [INFO] [stdout] 246 | | &mut self, [INFO] [stdout] 247 | | asset_name: &str, [INFO] [stdout] 248 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 276 | | )) [INFO] [stdout] 277 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, &'life1 str, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:279:5 [INFO] [stdout] | [INFO] [stdout] 279 | / async fn get_last_quote_before_by_id( [INFO] [stdout] 280 | | &mut self, [INFO] [stdout] 281 | | asset_id: usize, [INFO] [stdout] 282 | | time: DateTime, [INFO] [stdout] ... | [INFO] [stdout] 311 | | )) [INFO] [stdout] 312 | | } [INFO] [stdout] | |_____^ types differ in mutability [INFO] [stdout] | [INFO] [stdout] = note: expected fn pointer `fn(&'life0 SqliteDB, _, DateTime<_>) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _, 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:314:5 [INFO] [stdout] | [INFO] [stdout] 314 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:314:5 [INFO] [stdout] | [INFO] [stdout] 314 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:337:5 [INFO] [stdout] | [INFO] [stdout] 337 | 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 SqliteDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:367:5 [INFO] [stdout] | [INFO] [stdout] 367 | 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 SqliteDB, Currency) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, Currency) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:337:5 [INFO] [stdout] | [INFO] [stdout] 337 | 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 SqliteDB, &'life1 Quote) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'life1 Quote) -> 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:385:5 [INFO] [stdout] | [INFO] [stdout] 385 | 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 SqliteDB, Currency, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, 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:44:1 [INFO] [stdout] | [INFO] [stdout] 44 | impl QuoteHandler for SqliteDB { [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 `delete_quote` has an incompatible type for trait [INFO] [stdout] --> src/quote_handler.rs:359:5 [INFO] [stdout] | [INFO] [stdout] 359 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:367:5 [INFO] [stdout] | [INFO] [stdout] 367 | 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 SqliteDB, Currency) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, 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:385:5 [INFO] [stdout] | [INFO] [stdout] 385 | 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 SqliteDB, Currency, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, 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:44:1 [INFO] [stdout] | [INFO] [stdout] 44 | impl QuoteHandler for SqliteDB { [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:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | 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 SqliteDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:201:5 [INFO] [stdout] | [INFO] [stdout] 201 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | 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 SqliteDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:259:5 [INFO] [stdout] | [INFO] [stdout] 259 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `insert_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:137:5 [INFO] [stdout] | [INFO] [stdout] 137 | 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 SqliteDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:178:5 [INFO] [stdout] | [INFO] [stdout] 178 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> 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:201:5 [INFO] [stdout] | [INFO] [stdout] 201 | 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 SqliteDB) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0053]: method `update_transaction` has an incompatible type for trait [INFO] [stdout] --> src/transaction_handler.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 226 | 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 SqliteDB, &'life1 finql_data::Transaction) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, &'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:259:5 [INFO] [stdout] | [INFO] [stdout] 259 | 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 SqliteDB, _) -> Pin<_>` [INFO] [stdout] found fn pointer `fn(&'life0 mut SqliteDB, _) -> Pin<_>` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 76 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-sqlite` [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: aborting due to 76 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" "e437d0d1a5e4f8675097e0d912ed4c011cf10f564fc6ea2e7640bb9bc009032c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e437d0d1a5e4f8675097e0d912ed4c011cf10f564fc6ea2e7640bb9bc009032c", kill_on_drop: false }` [INFO] [stdout] e437d0d1a5e4f8675097e0d912ed4c011cf10f564fc6ea2e7640bb9bc009032c