warning: failed to parse serde attribute
  | 
  | #[serde(into = "String", try_from = "String")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: unused import: `tokio::sync::Mutex`
 --> src/datafold_node/operation_processor.rs:6:5
  |
6 | use tokio::sync::Mutex;
  |     ^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `std::thread`
 --> src/fold_db_core/orchestration/index_event_handler.rs:7:5
  |
7 | use std::thread;
  |     ^^^^^^^^^^^

warning: unused import: `TableConfig`
 --> src/lambda/config.rs:5:53
  |
5 | use crate::storage::{StorageConfig, DynamoDbConfig, TableConfig};
  |                                                     ^^^^^^^^^^^

warning: unused import: `NodeConfig`
 --> src/lambda/context.rs:5:42
  |
5 | use crate::datafold_node::{DataFoldNode, NodeConfig};
  |                                          ^^^^^^^^^^

warning: unused import: `crate::fold_db_core::FoldDB`
 --> src/lambda/context.rs:7:5
  |
7 | use crate::fold_db_core::FoldDB;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `LambdaStorage`
  --> src/lambda/context.rs:11:65
   |
11 | use crate::lambda::config::{AIConfig, AIProvider, LambdaConfig, LambdaStorage};
   |                                                                 ^^^^^^^^^^^^^

warning: unused import: `crate::storage::StorageConfig`
  --> src/lambda/context.rs:14:5
   |
14 | use crate::storage::StorageConfig;
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `Mutex`
  --> src/lambda/context.rs:16:22
   |
16 | use std::sync::{Arc, Mutex};
   |                      ^^^^^

warning: unused import: `DynamoDbConfig`
  --> src/lambda/node_manager.rs:76:45
   |
76 |         use crate::storage::{StorageConfig, DynamoDbConfig};
   |                                             ^^^^^^^^^^^^^^

warning: unused import: `tracing_subscriber::layer::SubscriberExt`
 --> src/logging/outputs/console.rs:7:5
  |
7 | use tracing_subscriber::layer::SubscriberExt;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `tracing_subscriber::layer::SubscriberExt`
 --> src/logging/outputs/file.rs:7:5
  |
7 | use tracing_subscriber::layer::SubscriberExt;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `tracing_subscriber::layer::SubscriberExt`
 --> src/logging/outputs/structured.rs:7:5
  |
7 | use tracing_subscriber::layer::SubscriberExt;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `get_current_user_id`
 --> src/logging/outputs/dynamodb.rs:8:56
  |
8 | use crate::logging::core::{Logger, LogEntry, LogLevel, get_current_user_id};
  |                                                        ^^^^^^^^^^^^^^^^^^^

warning: unused import: `fetch_atoms_for_matches`
  --> src/schema/types/field/hash_range_field.rs:12:78
   |
12 | use crate::schema::types::field::{FilterApplicator, apply_hash_range_filter, fetch_atoms_for_matches};
   |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `fetch_atoms_for_matches`
  --> src/schema/types/field/range_field.rs:11:113
   |
11 | use crate::schema::types::field::{HashRangeFilter, HashRangeFilterResult, FilterApplicator, apply_range_filter, fetch_atoms_for_matches};
   |                                                                                                                 ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `fetch_atoms_for_matches`
 --> src/schema/types/field/single_field.rs:8:75
  |
8 | use crate::schema::types::field::{HashRangeFilter, HashRangeFilterResult, fetch_atoms_for_matches, FilterApplicator};
  |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^

warning: use of deprecated function `aws_config::load_from_env`: Use the `aws_config::load_defaults` function. If you don't care about future default behavior changes, you can continue to use this function by enabling the `behavior-version-latest` feature. Doing so will make this deprecation notice go away.
   --> src/ingestion/progress.rs:203:34
    |
203 |         let config = aws_config::load_from_env().await;
    |                                  ^^^^^^^^^^^^^
    |
    = note: `#[warn(deprecated)]` on by default

warning: use of deprecated function `aws_config::from_env`: Use the `aws_config::defaults` function. If you don't care about future default behavior changes, you can continue to use this function by enabling the `behavior-version-latest` feature. Doing so will make this deprecation notice go away.
  --> src/logging/mod.rs:98:46
   |
98 |                 let sdk_config = aws_config::from_env().region(region_provider).load().await;
   |                                              ^^^^^^^^

warning: use of deprecated function `aws_config::load_from_env`: Use the `aws_config::load_defaults` function. If you don't care about future default behavior changes, you can continue to use this function by enabling the `behavior-version-latest` feature. Doing so will make this deprecation notice go away.
  --> src/logging/outputs/dynamodb.rs:29:34
   |
29 |         let config = aws_config::load_from_env().await;
   |                                  ^^^^^^^^^^^^^

warning: use of deprecated function `schema::types::field::filter_utils::fetch_atoms_for_matches`: Use fetch_atoms_for_matches_async instead
  --> src/schema/types/field/mod.rs:17:5
   |
17 |     fetch_atoms_for_matches,
   |     ^^^^^^^^^^^^^^^^^^^^^^^

warning: use of deprecated function `schema::types::field::filter_utils::fetch_atoms_for_matches`: Use fetch_atoms_for_matches_async instead
  --> src/schema/types/field/hash_range_field.rs:12:78
   |
12 | use crate::schema::types::field::{FilterApplicator, apply_hash_range_filter, fetch_atoms_for_matches};
   |                                                                              ^^^^^^^^^^^^^^^^^^^^^^^

warning: use of deprecated function `schema::types::field::filter_utils::fetch_atoms_for_matches`: Use fetch_atoms_for_matches_async instead
  --> src/schema/types/field/range_field.rs:11:113
   |
11 | use crate::schema::types::field::{HashRangeFilter, HashRangeFilterResult, FilterApplicator, apply_range_filter, fetch_atoms_for_matches};
   |                                                                                                                 ^^^^^^^^^^^^^^^^^^^^^^^

warning: use of deprecated function `schema::types::field::filter_utils::fetch_atoms_for_matches`: Use fetch_atoms_for_matches_async instead
 --> src/schema/types/field/single_field.rs:8:75
  |
8 | use crate::schema::types::field::{HashRangeFilter, HashRangeFilterResult, fetch_atoms_for_matches, FilterApplicator};
  |                                                                           ^^^^^^^^^^^^^^^^^^^^^^^

warning: unused variable: `non_blocking`
  --> src/logging/outputs/file.rs:51:14
   |
51 |         let (non_blocking, guard) = non_blocking(file_appender);
   |              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_non_blocking`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: associated function `parse_file_size` is never used
  --> src/logging/outputs/file.rs:86:8
   |
19 | impl FileOutput {
   | --------------- associated function in this implementation
...
86 |     fn parse_file_size(size_str: &str) -> Result<u64, LoggingError> {
   |        ^^^^^^^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

warning: failed to parse serde attribute
  | 
  | #[serde(into = "String", try_from = "String")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none", default)]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: failed to parse serde attribute
  | 
  | #[serde(skip_serializing_if = "Option::is_none")]
  | 
  = note: ts-rs failed to parse this attribute. It will be ignored.
warning: unused import: `LambdaStorage`
   --> src/lambda/node_manager.rs:174:47
    |
174 |     use crate::lambda::config::{LambdaConfig, LambdaStorage};
    |                                               ^^^^^^^^^^^^^

warning: unused variable: `fold_db`
   --> src/ingestion/core.rs:953:13
    |
953 |         let fold_db = FoldDB::new(&test_path).await.unwrap();
    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fold_db`

warning: unused variable: `schemas`
   --> src/storage/dynamodb_store.rs:543:13
    |
543 |         let schemas = store.list_schema_names().await.unwrap();
    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_schemas`

warning: `datafold` (lib) generated 25 warnings (run `cargo fix --lib -p datafold` to apply 16 suggestions)
warning: `datafold` (lib test) generated 28 warnings (25 duplicates) (run `cargo fix --lib -p datafold --tests` to apply 1 suggestion)
   Compiling datafold v0.1.38 (/Users/tomtang/Documents/projects/datafold-exemem/fold_db)
warning: unused variable: `mutation_json`
  --> tests/transform_execution_test.rs:78:9
   |
78 |     let mutation_json = json!({
   |         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_mutation_json`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: `datafold` (test "transform_execution_test") generated 1 warning
warning: unused import: `LogLevel`
 --> tests/lambda_sync_logging_test.rs:2:71
  |
2 | use datafold::lambda::{LambdaConfig, LambdaContext, Logger, LogEntry, LogLevel, LambdaLogging};
  |                                                                       ^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `datafold::ingestion::IngestionError`
 --> tests/lambda_sync_logging_test.rs:3:5
  |
3 | use datafold::ingestion::IngestionError;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: unused import: `std::collections::HashMap`
 --> tests/lambda_sync_logging_test.rs:9:5
  |
9 | use std::collections::HashMap;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^

warning: `datafold` (test "lambda_sync_logging_test") generated 3 warnings (run `cargo fix --test "lambda_sync_logging_test"` to apply 3 suggestions)
warning: unused import: `StdoutLogger`
 --> tests/lambda_query_test.rs:3:68
  |
3 | use datafold::lambda::{LambdaConfig, LambdaContext, LambdaLogging, StdoutLogger};
  |                                                                    ^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `std::time::Duration`
 --> tests/test_ingestion_progress.rs:4:5
  |
4 | use std::time::Duration;
  |     ^^^^^^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused import: `serde_json::json`
 --> tests/lambda_query_test.rs:6:5
  |
6 | use serde_json::json;
  |     ^^^^^^^^^^^^^^^^

warning: unused import: `std::sync::Arc`
 --> tests/lambda_query_test.rs:7:5
  |
7 | use std::sync::Arc;
  |     ^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> tests/lambda_context_test.rs:133:9
    |
132 |     match result {
    |           ------ this expression has type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
133 |         Ok(None) => {
    |         ^^^^^^^^ expected future, found `Result<_, _>`
    |
    = note: expected opaque type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
                      found enum `Result<_, _>`
help: consider `await`ing on the `Future`
    |
132 |     match result.await {
    |                 ++++++

error[E0308]: mismatched types
   --> tests/lambda_context_test.rs:136:9
    |
132 |     match result {
    |           ------ this expression has type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
...
136 |         Ok(Some(_)) => {
    |         ^^^^^^^^^^^ expected future, found `Result<_, _>`
    |
    = note: expected opaque type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
                      found enum `Result<_, _>`
help: consider `await`ing on the `Future`
    |
132 |     match result.await {
    |                 ++++++

error[E0308]: mismatched types
   --> tests/lambda_context_test.rs:140:9
    |
132 |     match result {
    |           ------ this expression has type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
...
140 |         Err(e) => {
    |         ^^^^^^ expected future, found `Result<_, _>`
    |
    = note: expected opaque type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>`
                      found enum `Result<_, _>`
help: consider `await`ing on the `Future`
    |
132 |     match result.await {
    |                 ++++++

warning: use of deprecated function `aws_config::load_from_env`: Use the `aws_config::load_defaults` function. If you don't care about future default behavior changes, you can continue to use this function by enabling the `behavior-version-latest` feature. Doing so will make this deprecation notice go away.
  --> tests/test_ingestion_progress.rs:48:30
   |
48 |     let config = aws_config::load_from_env().await;
   |                              ^^^^^^^^^^^^^
   |
   = note: `#[warn(deprecated)]` on by default

warning: use of deprecated function `aws_config::load_from_env`: Use the `aws_config::load_defaults` function. If you don't care about future default behavior changes, you can continue to use this function by enabling the `behavior-version-latest` feature. Doing so will make this deprecation notice go away.
  --> tests/test_ingestion_progress.rs:83:30
   |
83 |     let config = aws_config::load_from_env().await;
   |                              ^^^^^^^^^^^^^

warning: method `has_log_containing` is never used
  --> tests/lambda_ingestion_logging_test.rs:34:14
   |
15 | impl TestLogger {
   | --------------- method in this implementation
...
34 |     async fn has_log_containing(&self, substring: &str) -> bool {
   |              ^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(dead_code)]` on by default

error[E0599]: no method named `is_ok` found for opaque type `impl std::future::Future<Output = Result<Option<IngestionProgress>, IngestionError>>` in the current scope
   --> tests/lambda_context_test.rs:219:30
    |
219 |             assert!(progress.is_ok());
    |                              ^^^^^
    |
help: there is a method `inspect_ok` with a similar name, but with different arguments
   --> /Users/tomtang/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/future/try_future/mod.rs:467:5
    |
467 | /     fn inspect_ok<F>(self, f: F) -> InspectOk<Self, F>
468 | |     where
469 | |         F: FnOnce(&Self::Ok),
470 | |         Self: Sized,
    | |____________________^
help: consider `await`ing on the `Future` and calling the method on its `Output`
    |
219 |             assert!(progress.await.is_ok());
    |                              ++++++

Some errors have detailed explanations: E0308, E0599.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `datafold` (test "lambda_context_test") due to 4 previous errors
warning: build failed, waiting for other jobs to finish...
warning: `datafold` (test "test_ingestion_progress") generated 3 warnings (run `cargo fix --test "test_ingestion_progress"` to apply 1 suggestion)
warning: `datafold` (test "lambda_query_test") generated 3 warnings (run `cargo fix --test "lambda_query_test"` to apply 3 suggestions)
warning: `datafold` (test "lambda_ingestion_logging_test") generated 1 warning
