diff --git a/.github/workflows/license_headers_check.yml b/.github/workflows/license_headers_check.yml index 6583135a..c4bd8363 100644 --- a/.github/workflows/license_headers_check.yml +++ b/.github/workflows/license_headers_check.yml @@ -28,5 +28,5 @@ jobs: -ignore '.github/*.yml' \ -ignore '.github/workflows/*.yaml' \ -ignore '.github/*.yaml' \ - -ignore 'crates/migrations/*.sql' \ + -ignore 'migrations/*.sql' \ . diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 99b60a9e..041007c8 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -53,7 +53,7 @@ jobs: - name: Install sqlx run: cargo install sqlx-cli --no-default-features --features postgres - name: Run the test sqlx migrations - run: cargo sqlx migrate run --source crates/migrations + run: cargo sqlx migrate run - name: Check that the sqlx prepared query metadata is up-to-date run: cargo sqlx prepare --workspace --check -- --all-targets --all-features @@ -124,7 +124,7 @@ jobs: - name: Install sqlx run: cargo install sqlx-cli --no-default-features --features postgres - name: Run the test sqlx migrations - run: cargo sqlx migrate run --source crates/migrations + run: cargo sqlx migrate run - name: Run tests and generate coverage report run: cargo llvm-cov test --all-features --workspace --lcov --output-path lcov.info - name: Upload coverage to Coveralls @@ -172,6 +172,6 @@ jobs: - name: Install sqlx run: cargo install sqlx-cli --no-default-features --features postgres - name: Run the test sqlx migrations - run: cargo sqlx migrate run --source crates/migrations + run: cargo sqlx migrate run - name: Test documentation code snippets run: cargo test --doc --all-features --workspace diff --git a/crates/common/src/cost_model.rs b/crates/common/src/cost_model.rs index a2d50570..6a26e29d 100644 --- a/crates/common/src/cost_model.rs +++ b/crates/common/src/cost_model.rs @@ -250,7 +250,7 @@ pub(crate) mod test { ] } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn success_cost_models(pool: PgPool) { let test_models = test_data(); let test_deployments = test_models @@ -312,7 +312,7 @@ pub(crate) mod test { } } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn global_fallback_cost_models(pool: PgPool) { let test_models = test_data(); let test_deployments = test_models @@ -403,7 +403,7 @@ pub(crate) mod test { assert_eq!(missing_model.model, global_model.model); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn success_cost_model(pool: PgPool) { add_cost_models(&pool, to_db_models(test_data())).await; @@ -425,7 +425,7 @@ pub(crate) mod test { assert_eq!(model.model, Some("default => 0.00025;".to_string())); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn global_fallback_cost_model(pool: PgPool) { let test_models = test_data(); let global_model = global_cost_model(); diff --git a/crates/common/src/tap/checks/deny_list_check.rs b/crates/common/src/tap/checks/deny_list_check.rs index 2c0e17ed..d3c8ffd1 100644 --- a/crates/common/src/tap/checks/deny_list_check.rs +++ b/crates/common/src/tap/checks/deny_list_check.rs @@ -224,7 +224,7 @@ mod tests { .await } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_sender_denylist(pgpool: PgPool) { // Add the sender to the denylist sqlx::query!( @@ -253,7 +253,7 @@ mod tests { .is_err()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_sender_denylist_updates(pgpool: PgPool) { let allocation_id = Address::from_str(ALLOCATION_ID).unwrap(); let signed_receipt = diff --git a/crates/common/src/tap/checks/value_check.rs b/crates/common/src/tap/checks/value_check.rs index e55bd925..f9c152a9 100644 --- a/crates/common/src/tap/checks/value_check.rs +++ b/crates/common/src/tap/checks/value_check.rs @@ -361,13 +361,13 @@ mod tests { use super::MinimumValue; - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn initialize_check(pgpool: PgPool) { let check = MinimumValue::new(pgpool, Duration::from_secs(0)).await; assert_eq!(check.cost_model_map.read().unwrap().len(), 0); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_initialize_check_with_models(pgpool: PgPool) { // insert 2 cost models for different deployment_id let test_models = crate::cost_model::test::test_data(); @@ -381,7 +381,7 @@ mod tests { assert!(check.global_model.read().unwrap().is_none()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_watch_model_insert(pgpool: PgPool) { let check = MinimumValue::new(pgpool.clone(), Duration::from_secs(0)).await; assert_eq!(check.cost_model_map.read().unwrap().len(), 0); @@ -397,7 +397,7 @@ mod tests { ); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_watch_model_remove(pgpool: PgPool) { // insert 2 cost models for different deployment_id let test_models = crate::cost_model::test::test_data(); @@ -417,7 +417,7 @@ mod tests { assert_eq!(check.cost_model_map.read().unwrap().len(), 0); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_start_global_model(pgpool: PgPool) { let global_model = global_cost_model(); add_cost_models(&pgpool, vec![global_model.clone()]).await; @@ -426,7 +426,7 @@ mod tests { assert!(check.global_model.read().unwrap().is_some()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_watch_global_model(pgpool: PgPool) { let check = MinimumValue::new(pgpool.clone(), Duration::from_secs(0)).await; @@ -437,7 +437,7 @@ mod tests { assert!(check.global_model.read().unwrap().is_some()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_remove_global_model(pgpool: PgPool) { let global_model = global_cost_model(); add_cost_models(&pgpool, vec![global_model.clone()]).await; @@ -457,7 +457,7 @@ mod tests { const ALLOCATION_ID: Address = address!("deadbeefcafebabedeadbeefcafebabedeadbeef"); - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_check_minimal_value(pgpool: PgPool) { // insert cost models for different deployment_id let test_models = crate::cost_model::test::test_data(); @@ -531,7 +531,7 @@ mod tests { .expect("should accept more than minimal"); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_check_using_global(pgpool: PgPool) { // insert cost models for different deployment_id let test_models = crate::cost_model::test::test_data(); diff --git a/crates/tap-agent/src/agent/sender_account.rs b/crates/tap-agent/src/agent/sender_account.rs index 602b54e7..d8ac216d 100644 --- a/crates/tap-agent/src/agent/sender_account.rs +++ b/crates/tap-agent/src/agent/sender_account.rs @@ -1197,7 +1197,7 @@ pub mod tests { (sender, handle, prefix, escrow_accounts_tx) } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_update_allocation_ids(pgpool: PgPool) { // Start a mock graphql server using wiremock let mock_server = MockServer::start().await; @@ -1293,7 +1293,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_new_allocation_id(pgpool: PgPool) { // Start a mock graphql server using wiremock let mock_server = MockServer::start().await; @@ -1560,7 +1560,7 @@ pub mod tests { .as_nanos() as u64 } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_update_receipt_fees_no_rav(pgpool: PgPool) { let (sender_account, handle, prefix, _) = create_sender_account( pgpool, @@ -1604,7 +1604,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_update_receipt_fees_trigger_rav(pgpool: PgPool) { let (sender_account, handle, prefix, _) = create_sender_account( pgpool, @@ -1665,7 +1665,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_counter_greater_limit_trigger_rav(pgpool: PgPool) { let (sender_account, handle, prefix, _) = create_sender_account( pgpool, @@ -1732,7 +1732,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_remove_sender_account(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let (sender_account, handle, prefix, _) = create_sender_account( @@ -1769,7 +1769,7 @@ pub mod tests { } /// Test that the deny status is correctly loaded from the DB at the start of the actor - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_init_deny(pgpool: PgPool) { sqlx::query!( r#" @@ -1803,7 +1803,7 @@ pub mod tests { assert!(deny); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_retry_unaggregated_fees(pgpool: PgPool) { // we set to zero to block the sender, no matter the fee let max_unaggregated_fees_per_sender: u128 = 0; @@ -1856,7 +1856,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_deny_allow(pgpool: PgPool) { async fn get_deny_status(sender_account: &ActorRef) -> bool { call!(sender_account, SenderAccountMessage::GetDeny).unwrap() @@ -1956,7 +1956,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_initialization_with_pending_ravs_over_the_limit(pgpool: PgPool) { // add last non-final ravs let signed_rav = create_rav(*ALLOCATION_ID_0, SIGNER.0.clone(), 4, ESCROW_VALUE); @@ -1982,7 +1982,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_unaggregated_fees_over_balance(pgpool: PgPool) { // add last non-final ravs let signed_rav = create_rav(*ALLOCATION_ID_0, SIGNER.0.clone(), 4, ESCROW_VALUE / 2); @@ -2078,7 +2078,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_pending_rav_already_redeemed_and_redeem(pgpool: PgPool) { // Start a mock graphql server using wiremock let mock_server = MockServer::start().await; @@ -2156,7 +2156,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_thawing_deposit_process(pgpool: PgPool) { // add last non-final ravs let signed_rav = create_rav(*ALLOCATION_ID_0, SIGNER.0.clone(), 4, ESCROW_VALUE / 2); @@ -2208,7 +2208,7 @@ pub mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_sender_denied_close_allocation_stop_retry(pgpool: PgPool) { // we set to 1 to block the sender on a really low value let max_unaggregated_fees_per_sender: u128 = 1; diff --git a/crates/tap-agent/src/agent/sender_accounts_manager.rs b/crates/tap-agent/src/agent/sender_accounts_manager.rs index e194609c..b0c6410f 100644 --- a/crates/tap-agent/src/agent/sender_accounts_manager.rs +++ b/crates/tap-agent/src/agent/sender_accounts_manager.rs @@ -670,7 +670,7 @@ mod tests { ) } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_create_sender_accounts_manager(pgpool: PgPool) { let (_, (actor, join_handle)) = create_sender_accounts_manager(pgpool).await; actor.stop_and_wait(None, None).await.unwrap(); @@ -708,7 +708,7 @@ mod tests { ) } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_pending_sender_allocations(pgpool: PgPool) { let (_, state) = create_state(pgpool.clone()).await; @@ -732,7 +732,7 @@ mod tests { assert_eq!(pending_allocation_id.get(&SENDER.1).unwrap().len(), 2); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_update_sender_allocation(pgpool: PgPool) { let (prefix, (actor, join_handle)) = create_sender_accounts_manager(pgpool).await; @@ -766,7 +766,7 @@ mod tests { join_handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_create_sender_account(pgpool: PgPool) { struct DummyActor; #[async_trait::async_trait] @@ -803,7 +803,7 @@ mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_deny_sender_account_on_failure(pgpool: PgPool) { struct DummyActor; #[async_trait::async_trait] @@ -857,7 +857,7 @@ mod tests { handle.await.unwrap(); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_receive_notifications_(pgpool: PgPool) { let prefix = format!( "test-{}", diff --git a/crates/tap-agent/src/agent/sender_allocation.rs b/crates/tap-agent/src/agent/sender_allocation.rs index 5e2d7a6b..b0593455 100644 --- a/crates/tap-agent/src/agent/sender_allocation.rs +++ b/crates/tap-agent/src/agent/sender_allocation.rs @@ -1035,7 +1035,7 @@ pub mod tests { allocation_ref } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_update_unaggregated_fees_on_start(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let (mut last_message_emitted, sender_account, _join_handle) = @@ -1079,7 +1079,7 @@ pub mod tests { assert_eq!(total_unaggregated_fees.value, 55u128); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_return_invalid_receipts_on_startup(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let (mut message_receiver, sender_account, _join_handle) = @@ -1131,7 +1131,7 @@ pub mod tests { assert_eq!(total_unaggregated_fees.value, 0u128); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_receive_new_receipt(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let (mut message_receiver, sender_account, _join_handle) = @@ -1198,7 +1198,7 @@ pub mod tests { assert_eq!(last_message_emitted, expected_message); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_trigger_rav_request(pgpool: PgPool) { // Start a TAP aggregator server. let (handle, aggregator_endpoint) = run_server( @@ -1303,7 +1303,7 @@ pub mod tests { handle.stopped().await; } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_close_allocation_no_pending_fees(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let (mut message_receiver, sender_account, _join_handle) = @@ -1334,7 +1334,7 @@ pub mod tests { ); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_close_allocation_with_pending_fees(pgpool: PgPool) { struct Response { data: Arc, @@ -1425,7 +1425,7 @@ pub mod tests { assert_eq!(sender_allocation.get_status(), ActorStatus::Stopped); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_return_unaggregated_fees_without_rav(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let args = create_sender_allocation_args( @@ -1452,7 +1452,7 @@ pub mod tests { assert_eq!(total_unaggregated_fees.value, 45u128); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_calculate_invalid_receipts_fee(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let args = create_sender_allocation_args( @@ -1485,7 +1485,7 @@ pub mod tests { /// /// The sender_allocation should only consider receipts with a timestamp greater /// than the RAV's timestamp. - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn should_return_unaggregated_fees_with_rav(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let args = create_sender_allocation_args( @@ -1517,7 +1517,7 @@ pub mod tests { assert_eq!(total_unaggregated_fees.value, 35u128); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_store_failed_rav(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let args = create_sender_allocation_args( @@ -1539,7 +1539,7 @@ pub mod tests { assert!(result.is_ok()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_store_invalid_receipts(pgpool: PgPool) { struct FailingCheck; @@ -1591,7 +1591,7 @@ pub mod tests { assert!(result.is_ok()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_mark_rav_last(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; let signed_rav = create_rav(*ALLOCATION_ID_0, SIGNER.0.clone(), 4, 10); @@ -1613,7 +1613,7 @@ pub mod tests { assert!(result.is_ok()); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_failed_rav_request(pgpool: PgPool) { let (mock_escrow_subgraph_server, _mock_ecrow_subgraph) = mock_escrow_subgraph().await; @@ -1679,7 +1679,7 @@ pub mod tests { //assert_eq!(total_unaggregated_fees.value, 45u128); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn test_rav_request_when_all_receipts_invalid(pgpool: PgPool) { // Start a TAP aggregator server. let (_handle, aggregator_endpoint) = run_server( diff --git a/crates/tap-agent/src/tap/context/rav.rs b/crates/tap-agent/src/tap/context/rav.rs index 99ff2d66..5ec237cc 100644 --- a/crates/tap-agent/src/tap/context/rav.rs +++ b/crates/tap-agent/src/tap/context/rav.rs @@ -147,7 +147,7 @@ mod test { } } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn update_and_retrieve_rav(pool: PgPool) { let timestamp_ns = u64::MAX - 10; let value_aggregate = u128::MAX; diff --git a/crates/tap-agent/src/tap/context/receipt.rs b/crates/tap-agent/src/tap/context/receipt.rs index bc890cbc..5cbc3402 100644 --- a/crates/tap-agent/src/tap/context/receipt.rs +++ b/crates/tap-agent/src/tap/context/receipt.rs @@ -213,7 +213,7 @@ mod test { /// Insert a single receipt and retrieve it from the database using the adapter. /// The point here it to test the deserialization of large numbers. - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn insert_and_retrieve_single_receipt(pgpool: PgPool) { let escrow_accounts = watch::channel(EscrowAccounts::new( HashMap::from([(SENDER.1, U256::from(1000))]), @@ -424,7 +424,7 @@ mod test { Ok(()) } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn retrieve_receipts_with_limit(pgpool: PgPool) { let escrow_accounts = watch::channel(EscrowAccounts::new( HashMap::from([(SENDER.1, U256::from(1000))]), @@ -492,7 +492,7 @@ mod test { assert_eq!(recovered_received_receipt_vec.len(), 49); } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn retrieve_receipts_in_timestamp_range(pgpool: PgPool) { let escrow_accounts = watch::channel(EscrowAccounts::new( HashMap::from([(SENDER.1, U256::from(1000))]), @@ -620,7 +620,7 @@ mod test { } } - #[sqlx::test(migrations = "../migrations")] + #[sqlx::test(migrations = "../../migrations")] async fn remove_receipts_in_timestamp_range(pgpool: PgPool) { let escrow_accounts = watch::channel(EscrowAccounts::new( HashMap::from([(SENDER.1, U256::from(1000))]), diff --git a/crates/migrations/20230901142040_cost_models.down.sql b/migrations/20230901142040_cost_models.down.sql similarity index 100% rename from crates/migrations/20230901142040_cost_models.down.sql rename to migrations/20230901142040_cost_models.down.sql diff --git a/crates/migrations/20230901142040_cost_models.up.sql b/migrations/20230901142040_cost_models.up.sql similarity index 100% rename from crates/migrations/20230901142040_cost_models.up.sql rename to migrations/20230901142040_cost_models.up.sql diff --git a/crates/migrations/20230912220523_tap_receipts.down.sql b/migrations/20230912220523_tap_receipts.down.sql similarity index 100% rename from crates/migrations/20230912220523_tap_receipts.down.sql rename to migrations/20230912220523_tap_receipts.down.sql diff --git a/crates/migrations/20230912220523_tap_receipts.up.sql b/migrations/20230912220523_tap_receipts.up.sql similarity index 100% rename from crates/migrations/20230912220523_tap_receipts.up.sql rename to migrations/20230912220523_tap_receipts.up.sql diff --git a/crates/migrations/20230915230734_tap_ravs.down.sql b/migrations/20230915230734_tap_ravs.down.sql similarity index 100% rename from crates/migrations/20230915230734_tap_ravs.down.sql rename to migrations/20230915230734_tap_ravs.down.sql diff --git a/crates/migrations/20230915230734_tap_ravs.up.sql b/migrations/20230915230734_tap_ravs.up.sql similarity index 100% rename from crates/migrations/20230915230734_tap_ravs.up.sql rename to migrations/20230915230734_tap_ravs.up.sql diff --git a/crates/migrations/20231118024433_tap_denylist.down.sql b/migrations/20231118024433_tap_denylist.down.sql similarity index 100% rename from crates/migrations/20231118024433_tap_denylist.down.sql rename to migrations/20231118024433_tap_denylist.down.sql diff --git a/crates/migrations/20231118024433_tap_denylist.up.sql b/migrations/20231118024433_tap_denylist.up.sql similarity index 100% rename from crates/migrations/20231118024433_tap_denylist.up.sql rename to migrations/20231118024433_tap_denylist.up.sql diff --git a/crates/migrations/20241024191258_add_cost_model_notification.down.sql b/migrations/20241024191258_add_cost_model_notification.down.sql similarity index 100% rename from crates/migrations/20241024191258_add_cost_model_notification.down.sql rename to migrations/20241024191258_add_cost_model_notification.down.sql diff --git a/crates/migrations/20241024191258_add_cost_model_notification.up.sql b/migrations/20241024191258_add_cost_model_notification.up.sql similarity index 100% rename from crates/migrations/20241024191258_add_cost_model_notification.up.sql rename to migrations/20241024191258_add_cost_model_notification.up.sql diff --git a/crates/migrations/20241030141929_dips.down.sql b/migrations/20241030141929_dips.down.sql similarity index 100% rename from crates/migrations/20241030141929_dips.down.sql rename to migrations/20241030141929_dips.down.sql diff --git a/crates/migrations/20241030141929_dips.up.sql b/migrations/20241030141929_dips.up.sql similarity index 100% rename from crates/migrations/20241030141929_dips.up.sql rename to migrations/20241030141929_dips.up.sql diff --git a/crates/migrations/README.md b/migrations/README.md similarity index 100% rename from crates/migrations/README.md rename to migrations/README.md