From 3edacabd23adac7e65e0ff208fd2d998dc9ddf2f Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:02:22 +0000 Subject: [PATCH 1/3] Update DropAllData mutation to delete new entities - Added deletion logic for `ShellTask`, `Portal`, `Link`, `Tome`, `Asset`, and `Repository` in `DropAllData` resolver. - Ensured correct deletion order to satisfy Foreign Key constraints. - Updated `DropsData` test case with SQL INSERTs for the new entities to verify successful deletion. Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com> --- tavern/internal/graphql/mutation.resolvers.go | 18 ++++++++++++++++++ .../mutations/dropAllData/DropsData.yml | 14 ++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/tavern/internal/graphql/mutation.resolvers.go b/tavern/internal/graphql/mutation.resolvers.go index 7b74a125f..9086655d8 100644 --- a/tavern/internal/graphql/mutation.resolvers.go +++ b/tavern/internal/graphql/mutation.resolvers.go @@ -35,6 +35,12 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { // Delete relevant ents // We must delete children before parents to avoid foreign key constraint violations + if _, err := client.ShellTask.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete shell tasks: %w", err)) + } + if _, err := client.Portal.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete portals: %w", err)) + } if _, err := client.Shell.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete shells: %w", err)) } @@ -56,6 +62,18 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { if _, err := client.Quest.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete quests: %w", err)) } + if _, err := client.Link.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete links: %w", err)) + } + if _, err := client.Tome.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete tomes: %w", err)) + } + if _, err := client.Asset.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete assets: %w", err)) + } + if _, err := client.Repository.Delete().Exec(ctx); err != nil { + return false, rollback(tx, fmt.Errorf("failed to delete repositories: %w", err)) + } if _, err := client.Host.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete hosts: %w", err)) } diff --git a/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml b/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml index ade61ef72..e706b3ee7 100644 --- a/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml +++ b/tavern/internal/graphql/testdata/mutations/dropAllData/DropsData.yml @@ -15,6 +15,20 @@ state: | VALUES (2000, 3000); INSERT INTO `tome_assets` (tome_id, asset_id) VALUES (2000, 3001); + INSERT INTO `repositories` (id, url, repository_owner, public_key, private_key, created_at, last_modified_at) + VALUES (4000, "http://github.com/repo", 5, "pubkey", "privkey", "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `links` (id, path, expires_at, link_asset, link_creator, created_at, last_modified_at) + VALUES (5000, "linkpath", "2024-01-23 14:51:13", 3000, 5, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `shells` (id, shell_beacon, shell_owner, data, created_at, last_modified_at) + VALUES (6000, 1337, 5, "", "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `shell_tasks` (id, shell_shell_tasks, shell_task_creator, input, stream_id, sequence_id, created_at, last_modified_at) + VALUES (7000, 6000, 5, "whoami", "stream1", 1, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `quests` (id, name, quest_tome, created_at, last_modified_at) + VALUES (9000, "quest1", 2000, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `tasks` (id, quest_tasks, task_beacon, created_at, last_modified_at) + VALUES (10000, 9000, 1337, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); + INSERT INTO `portals` (id, portal_beacon, portal_task, portal_owner, created_at, last_modified_at) + VALUES (8000, 1337, 10000, 5, "2024-01-22 14:51:13", "2024-01-22 14:51:13"); requestor: session_token: secretToken query: | From d523c488d0361bb332a9235ee9c4e024ba52feb5 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 21 Feb 2026 23:49:29 +0000 Subject: [PATCH 2/3] Update DropAllData mutation to delete new entities - Added deletion logic for `ShellTask`, `Portal`, `Link`, and `Tome` in `DropAllData` resolver. - Ensured correct deletion order to satisfy Foreign Key constraints. - Updated `DropsData` test case with SQL INSERTs for the new entities (including repositories and assets) to verify successful deletion of targets and preservation of non-targets. - Removed deletion of `Repository` and `Asset` based on code review feedback. Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com> --- tavern/internal/graphql/mutation.resolvers.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tavern/internal/graphql/mutation.resolvers.go b/tavern/internal/graphql/mutation.resolvers.go index 9086655d8..a3b107170 100644 --- a/tavern/internal/graphql/mutation.resolvers.go +++ b/tavern/internal/graphql/mutation.resolvers.go @@ -68,12 +68,6 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { if _, err := client.Tome.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete tomes: %w", err)) } - if _, err := client.Asset.Delete().Exec(ctx); err != nil { - return false, rollback(tx, fmt.Errorf("failed to delete assets: %w", err)) - } - if _, err := client.Repository.Delete().Exec(ctx); err != nil { - return false, rollback(tx, fmt.Errorf("failed to delete repositories: %w", err)) - } if _, err := client.Host.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete hosts: %w", err)) } From 40d66c2e054afd452e1c066b8bd3114cba1b7384 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sun, 22 Feb 2026 02:21:24 +0000 Subject: [PATCH 3/3] Update DropAllData mutation to delete new entities - Added deletion logic for `ShellTask`, `Portal`, and `Link` in `DropAllData` resolver. - Ensured correct deletion order to satisfy Foreign Key constraints. - Updated `DropsData` test case with SQL INSERTs for the new entities (including repositories, assets, and tomes) to verify successful deletion of targets and preservation of non-targets. - Removed deletion of `Repository`, `Asset`, and `Tome` based on code review feedback. Co-authored-by: KCarretto <16250309+KCarretto@users.noreply.github.com> --- tavern/internal/graphql/mutation.resolvers.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/tavern/internal/graphql/mutation.resolvers.go b/tavern/internal/graphql/mutation.resolvers.go index a3b107170..330194b4f 100644 --- a/tavern/internal/graphql/mutation.resolvers.go +++ b/tavern/internal/graphql/mutation.resolvers.go @@ -65,9 +65,6 @@ func (r *mutationResolver) DropAllData(ctx context.Context) (bool, error) { if _, err := client.Link.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete links: %w", err)) } - if _, err := client.Tome.Delete().Exec(ctx); err != nil { - return false, rollback(tx, fmt.Errorf("failed to delete tomes: %w", err)) - } if _, err := client.Host.Delete().Exec(ctx); err != nil { return false, rollback(tx, fmt.Errorf("failed to delete hosts: %w", err)) }