From 9a74195b24bee0c6b3eea247eb05472c26556955 Mon Sep 17 00:00:00 2001 From: Jedd Morgan <45512892+JR-Morgan@users.noreply.github.com> Date: Thu, 26 Feb 2026 17:10:54 +0000 Subject: [PATCH] feat(api): Add versionId to ModelIngestion (#448) * Add version id to ingestion query * and the sub * Add project & user ids * test --- .../Api/GraphQL/Models/ModelIngestion.cs | 3 ++- .../Models/ModelIngestionStatusData.cs | 1 + .../Resources/ModelIngestionResource.cs | 20 +++++++++++++++++++ .../GraphQL/Resources/SubscriptionResource.cs | 6 ++++++ .../Resources/ModelIngestionResourceTests.cs | 7 +++++++ 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestion.cs b/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestion.cs index 58d0dc67..e5c08dfc 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestion.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestion.cs @@ -6,7 +6,8 @@ public sealed class ModelIngestion public required DateTime createdAt { get; init; } public required DateTime updatedAt { get; init; } public required string modelId { get; init; } + public required string projectId { get; init; } + public required string userId { get; init; } public required bool cancellationRequested { get; init; } public required ModelIngestionStatusData statusData { get; init; } - // public required LimitedUser user { get; init; } } diff --git a/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestionStatusData.cs b/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestionStatusData.cs index a195bdfc..8e98d1e6 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestionStatusData.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Models/ModelIngestionStatusData.cs @@ -6,4 +6,5 @@ public sealed class ModelIngestionStatusData { public required ModelIngestionStatus status { get; init; } public required string? progressMessage { get; init; } + public required string? versionId { get; init; } } diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/ModelIngestionResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/ModelIngestionResource.cs index d029a61d..d01a6a10 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Resources/ModelIngestionResource.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Resources/ModelIngestionResource.cs @@ -44,6 +44,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -94,6 +96,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -102,6 +106,10 @@ public sealed class ModelIngestionResource ... on HasProgressMessage { progressMessage } + ... on ModelIngestionSuccessStatus + { + versionId + } } } } @@ -142,6 +150,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -194,6 +204,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -245,6 +257,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -343,6 +357,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -398,6 +414,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -457,6 +475,8 @@ public sealed class ModelIngestionResource createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { diff --git a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs index 9a014cff..8ba201d1 100644 --- a/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs +++ b/src/Speckle.Sdk/Api/GraphQL/Resources/SubscriptionResource.cs @@ -229,6 +229,8 @@ public sealed class SubscriptionResource : IDisposable createdAt updatedAt modelId + projectId + userId cancellationRequested statusData { ... on HasModelIngestionStatus { @@ -237,6 +239,10 @@ public sealed class SubscriptionResource : IDisposable ... on HasProgressMessage { progressMessage } + ... on ModelIngestionSuccessStatus + { + versionId + } } } type diff --git a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ModelIngestionResourceTests.cs b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ModelIngestionResourceTests.cs index 88ff78d2..7b8e1552 100644 --- a/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ModelIngestionResourceTests.cs +++ b/tests/Speckle.Sdk.Tests.Integration/Api/GraphQL/Resources/ModelIngestionResourceTests.cs @@ -129,8 +129,10 @@ public sealed class ModelIngestionResourceTests : IAsyncLifetime ModelIngestionSuccessInput finish = new(ingest.id, _project.id, sendResult.RootId, "yay!"); string versionId = await Sut.Complete(finish); Version version = await _testUser.Version.Get(versionId, _project.id); + ModelIngestion finalIngestion = await _testUser.Ingestion.Get(ingest.id, _project.id); Assert.Equal(version.id, versionId); Assert.Equal(sendResult.RootId, version.referencedObject); + Assert.Equal(finalIngestion.statusData.versionId, versionId); } [Fact] @@ -147,6 +149,11 @@ public sealed class ModelIngestionResourceTests : IAsyncLifetime ModelIngestion res = await Sut.Get(ingest.id, _project.id); Assert.Equal(ingest.id, res.id); Assert.Equal(ingest.statusData.status, res.statusData.status); + Assert.Equal(ingest.statusData.versionId, res.statusData.versionId); + Assert.Null(res.statusData.versionId); + Assert.Equal(_model.id, res.modelId); + Assert.Equal(_project.id, res.projectId); + Assert.Equal(_testUser.Account.userInfo.id, res.userId); } [Fact]