From a15c8131ccbf646ecd58ed6543a10bdfa98eb864 Mon Sep 17 00:00:00 2001 From: Joseph Doherty Date: Sat, 28 Feb 2026 09:00:03 -0500 Subject: [PATCH] feat(batch5): implement jetstream error constructors group10 --- .../JetStreamErrors.GeneratedConstructors.cs | 152 ++++++++++++++++++ ...tStreamErrorsGeneratedConstructorsTests.cs | 33 ++++ porting.db | Bin 6447104 -> 6455296 bytes tools/generate-jetstream-errors.sh | 19 +++ 4 files changed, 204 insertions(+) diff --git a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs index 53f8ea2..c20c0cb 100644 --- a/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs +++ b/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs @@ -1120,6 +1120,86 @@ public static partial class JsApiErrors return Clone(StreamNameExistRestoreFailed); } + public static JsApiError NewJSStreamNotFoundError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamNotFound); + } + + public static JsApiError NewJSStreamNotMatchError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamNotMatch); + } + + public static JsApiError NewJSStreamOfflineError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamOffline); + } + + public static JsApiError NewJSStreamReplicasNotSupportedError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamReplicasNotSupported); + } + + public static JsApiError NewJSStreamReplicasNotUpdatableError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamReplicasNotUpdatable); + } + + public static JsApiError NewJSStreamSealedError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamSealed); + } + + public static JsApiError NewJSStreamSequenceNotMatchError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamSequenceNotMatch); + } + + public static JsApiError NewJSStreamSubjectOverlapError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamSubjectOverlap); + } + + public static JsApiError NewJSStreamTemplateNotFoundError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamTemplateNotFound); + } + + public static JsApiError NewJSStreamTooManyRequestsError(params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return Clone(StreamTooManyRequests); + } + public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) @@ -1392,6 +1472,78 @@ public static partial class JsApiErrors return NewWithTags(StreamMsgDeleteFailed, "{err}", err); } + public static JsApiError NewJSStreamOfflineReasonError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamOfflineReason, "{err}", err); + } + + public static JsApiError NewJSStreamPurgeFailedError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamPurgeFailed, "{err}", err); + } + + public static JsApiError NewJSStreamRollupFailedError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamRollupFailed, "{err}", err); + } + + public static JsApiError NewJSStreamSnapshotError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamSnapshot, "{err}", err); + } + + public static JsApiError NewJSStreamStoreFailedError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamStoreFailed, "{err}", err); + } + + public static JsApiError NewJSStreamTemplateCreateError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamTemplateCreate, "{err}", err); + } + + public static JsApiError NewJSStreamTemplateDeleteError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamTemplateDelete, "{err}", err); + } + + public static JsApiError NewJSStreamTransformInvalidDestinationError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamTransformInvalidDestination, "{err}", err); + } + + public static JsApiError NewJSStreamTransformInvalidSourceError(Exception err, params ErrorOption[] opts) + { + if (ParseOpts(opts) is JsApiError overridden) + return Clone(overridden); + + return NewWithTags(StreamTransformInvalidSource, "{err}", err); + } + public static JsApiError NewJSStreamExternalApiOverlapError(object? prefix, object? subject, params ErrorOption[] opts) { if (ParseOpts(opts) is JsApiError overridden) diff --git a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs index 7c7ed63..1065454 100644 --- a/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs +++ b/dotnet/tests/ZB.MOM.NatsNet.Server.Tests/JetStream/JetStreamErrorsGeneratedConstructorsTests.cs @@ -300,4 +300,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests fromOverride.Description.ShouldBe(expected.Description); ReferenceEquals(fromOverride, expected).ShouldBeFalse(); } + + [Fact] + public void ConstructorSurface_Group10() + { + JsApiErrors.NewJSStreamNotFoundError().ErrCode.ShouldBe(JsApiErrors.StreamNotFound.ErrCode); + JsApiErrors.NewJSStreamNotMatchError().ErrCode.ShouldBe(JsApiErrors.StreamNotMatch.ErrCode); + JsApiErrors.NewJSStreamOfflineError().ErrCode.ShouldBe(JsApiErrors.StreamOffline.ErrCode); + JsApiErrors.NewJSStreamReplicasNotSupportedError().ErrCode.ShouldBe(JsApiErrors.StreamReplicasNotSupported.ErrCode); + JsApiErrors.NewJSStreamReplicasNotUpdatableError().ErrCode.ShouldBe(JsApiErrors.StreamReplicasNotUpdatable.ErrCode); + JsApiErrors.NewJSStreamSealedError().ErrCode.ShouldBe(JsApiErrors.StreamSealed.ErrCode); + JsApiErrors.NewJSStreamSequenceNotMatchError().ErrCode.ShouldBe(JsApiErrors.StreamSequenceNotMatch.ErrCode); + JsApiErrors.NewJSStreamSubjectOverlapError().ErrCode.ShouldBe(JsApiErrors.StreamSubjectOverlap.ErrCode); + JsApiErrors.NewJSStreamTemplateNotFoundError().ErrCode.ShouldBe(JsApiErrors.StreamTemplateNotFound.ErrCode); + JsApiErrors.NewJSStreamTooManyRequestsError().ErrCode.ShouldBe(JsApiErrors.StreamTooManyRequests.ErrCode); + + JsApiErrors.NewJSStreamOfflineReasonError(new InvalidOperationException("offline reason")).Description.ShouldBe("stream is offline: offline reason"); + JsApiErrors.NewJSStreamPurgeFailedError(new InvalidOperationException("purge failed")).Description.ShouldBe("purge failed"); + JsApiErrors.NewJSStreamRestoreError(new InvalidOperationException("restore failed")).Description.ShouldBe("restore failed: restore failed"); + JsApiErrors.NewJSStreamRollupFailedError(new InvalidOperationException("rollup failed")).Description.ShouldBe("rollup failed"); + JsApiErrors.NewJSStreamSnapshotError(new InvalidOperationException("snapshot failed")).Description.ShouldBe("snapshot failed: snapshot failed"); + JsApiErrors.NewJSStreamStoreFailedError(new InvalidOperationException("store failed")).Description.ShouldBe("store failed"); + JsApiErrors.NewJSStreamTemplateCreateError(new InvalidOperationException("template create failed")).Description.ShouldBe("template create failed"); + JsApiErrors.NewJSStreamTemplateDeleteError(new InvalidOperationException("template delete failed")).Description.ShouldBe("template delete failed"); + JsApiErrors.NewJSStreamTransformInvalidDestinationError(new InvalidOperationException("bad destination")).Description.ShouldBe("stream transform: bad destination"); + JsApiErrors.NewJSStreamTransformInvalidSourceError(new InvalidOperationException("bad source")).Description.ShouldBe("stream transform source: bad source"); + + var expected = new JsApiError { Code = 490, ErrCode = 9099, Description = "override-10" }; + var fromOverride = JsApiErrors.NewJSStreamNotFoundError(JsApiErrors.Unless(expected)); + fromOverride.Code.ShouldBe(expected.Code); + fromOverride.ErrCode.ShouldBe(expected.ErrCode); + fromOverride.Description.ShouldBe(expected.Description); + ReferenceEquals(fromOverride, expected).ShouldBeFalse(); + } } diff --git a/porting.db b/porting.db index 497fd3ea9899c2d4f32fa122477307b43df66c70..f27c5a43014dbf81e322e49f5d759d9b0c97a24c 100644 GIT binary patch delta 4613 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 aJP+GoJ2XQJ?0}u{0