feat(batch5): implement jetstream error constructors group09

This commit is contained in:
Joseph Doherty
2026-02-28 08:55:28 -05:00
parent b96d3ae182
commit eee3a431dd
4 changed files with 213 additions and 0 deletions

View File

@@ -1008,6 +1008,118 @@ public static partial class JsApiErrors
return Clone(StreamExpectedLastSeqPerSubjectNotReady);
}
public static JsApiError NewJSStreamHeaderExceedsMaximumError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamHeaderExceedsMaximum);
}
public static JsApiError NewJSStreamInfoMaxSubjectsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamInfoMaxSubjects);
}
public static JsApiError NewJSStreamInvalidError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamInvalid);
}
public static JsApiError NewJSStreamMaxBytesRequiredError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMaxBytesRequired);
}
public static JsApiError NewJSStreamMaxStreamBytesExceededError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMaxStreamBytesExceeded);
}
public static JsApiError NewJSStreamMessageExceedsMaximumError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMessageExceedsMaximum);
}
public static JsApiError NewJSStreamMinLastSeqError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMinLastSeq);
}
public static JsApiError NewJSStreamMirrorNotUpdatableError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMirrorNotUpdatable);
}
public static JsApiError NewJSStreamMismatchError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMismatch);
}
public static JsApiError NewJSStreamMoveAndScaleError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMoveAndScale);
}
public static JsApiError NewJSStreamMoveNotInProgressError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamMoveNotInProgress);
}
public static JsApiError NewJSStreamNameContainsPathSeparatorsError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamNameContainsPathSeparators);
}
public static JsApiError NewJSStreamNameExistError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamNameExist);
}
public static JsApiError NewJSStreamNameExistRestoreFailedError(params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return Clone(StreamNameExistRestoreFailed);
}
public static JsApiError NewJSAtomicPublishTooLargeBatchError(object? size, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
@@ -1232,6 +1344,54 @@ public static partial class JsApiErrors
return NewWithTags(StreamDelete, "{err}", err);
}
public static JsApiError NewJSStreamGeneralError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamGeneralError, "{err}", err);
}
public static JsApiError NewJSStreamInvalidConfigError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamInvalidConfig, "{err}", err);
}
public static JsApiError NewJSStreamInvalidExternalDeliverySubjError(object? prefix, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamInvalidExternalDeliverySubj, "{prefix}", prefix);
}
public static JsApiError NewJSStreamLimitsError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamLimits, "{err}", err);
}
public static JsApiError NewJSStreamMoveInProgressError(object? msg, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamMoveInProgress, "{msg}", msg);
}
public static JsApiError NewJSStreamMsgDeleteFailedError(Exception err, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)
return Clone(overridden);
return NewWithTags(StreamMsgDeleteFailed, "{err}", err);
}
public static JsApiError NewJSStreamExternalApiOverlapError(object? prefix, object? subject, params ErrorOption[] opts)
{
if (ParseOpts(opts) is JsApiError overridden)

View File

@@ -267,4 +267,37 @@ public sealed class JetStreamErrorsGeneratedConstructorsTests
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
[Fact]
public void ConstructorSurface_Group09()
{
JsApiErrors.NewJSStreamHeaderExceedsMaximumError().ErrCode.ShouldBe(JsApiErrors.StreamHeaderExceedsMaximum.ErrCode);
JsApiErrors.NewJSStreamInfoMaxSubjectsError().ErrCode.ShouldBe(JsApiErrors.StreamInfoMaxSubjects.ErrCode);
JsApiErrors.NewJSStreamInvalidError().ErrCode.ShouldBe(JsApiErrors.StreamInvalid.ErrCode);
JsApiErrors.NewJSStreamMaxBytesRequiredError().ErrCode.ShouldBe(JsApiErrors.StreamMaxBytesRequired.ErrCode);
JsApiErrors.NewJSStreamMaxStreamBytesExceededError().ErrCode.ShouldBe(JsApiErrors.StreamMaxStreamBytesExceeded.ErrCode);
JsApiErrors.NewJSStreamMessageExceedsMaximumError().ErrCode.ShouldBe(JsApiErrors.StreamMessageExceedsMaximum.ErrCode);
JsApiErrors.NewJSStreamMinLastSeqError().ErrCode.ShouldBe(JsApiErrors.StreamMinLastSeq.ErrCode);
JsApiErrors.NewJSStreamMirrorNotUpdatableError().ErrCode.ShouldBe(JsApiErrors.StreamMirrorNotUpdatable.ErrCode);
JsApiErrors.NewJSStreamMismatchError().ErrCode.ShouldBe(JsApiErrors.StreamMismatch.ErrCode);
JsApiErrors.NewJSStreamMoveAndScaleError().ErrCode.ShouldBe(JsApiErrors.StreamMoveAndScale.ErrCode);
JsApiErrors.NewJSStreamMoveNotInProgressError().ErrCode.ShouldBe(JsApiErrors.StreamMoveNotInProgress.ErrCode);
JsApiErrors.NewJSStreamNameContainsPathSeparatorsError().ErrCode.ShouldBe(JsApiErrors.StreamNameContainsPathSeparators.ErrCode);
JsApiErrors.NewJSStreamNameExistError().ErrCode.ShouldBe(JsApiErrors.StreamNameExist.ErrCode);
JsApiErrors.NewJSStreamNameExistRestoreFailedError().ErrCode.ShouldBe(JsApiErrors.StreamNameExistRestoreFailed.ErrCode);
JsApiErrors.NewJSStreamGeneralError(new InvalidOperationException("stream failed")).Description.ShouldBe("stream failed");
JsApiErrors.NewJSStreamInvalidConfigError(new InvalidOperationException("invalid config")).Description.ShouldBe("invalid config");
JsApiErrors.NewJSStreamInvalidExternalDeliverySubjError("api.*").Description.ShouldBe("stream external delivery prefix api.* must not contain wildcards");
JsApiErrors.NewJSStreamLimitsError(new InvalidOperationException("limit error")).Description.ShouldBe("limit error");
JsApiErrors.NewJSStreamMoveInProgressError("move-1").Description.ShouldBe("stream move already in progress: move-1");
JsApiErrors.NewJSStreamMsgDeleteFailedError(new InvalidOperationException("delete failed")).Description.ShouldBe("delete failed");
var expected = new JsApiError { Code = 491, ErrCode = 9098, Description = "override-9" };
var fromOverride = JsApiErrors.NewJSStreamHeaderExceedsMaximumError(JsApiErrors.Unless(expected));
fromOverride.Code.ShouldBe(expected.Code);
fromOverride.ErrCode.ShouldBe(expected.ErrCode);
fromOverride.Description.ShouldBe(expected.Description);
ReferenceEquals(fromOverride, expected).ShouldBeFalse();
}
}

Binary file not shown.

View File

@@ -130,6 +130,20 @@ simple_methods=(
"NewJSStreamDuplicateMessageConflictError|StreamDuplicateMessageConflict"
"NewJSStreamExpectedLastSeqPerSubjectInvalidError|StreamExpectedLastSeqPerSubjectInvalid"
"NewJSStreamExpectedLastSeqPerSubjectNotReadyError|StreamExpectedLastSeqPerSubjectNotReady"
"NewJSStreamHeaderExceedsMaximumError|StreamHeaderExceedsMaximum"
"NewJSStreamInfoMaxSubjectsError|StreamInfoMaxSubjects"
"NewJSStreamInvalidError|StreamInvalid"
"NewJSStreamMaxBytesRequiredError|StreamMaxBytesRequired"
"NewJSStreamMaxStreamBytesExceededError|StreamMaxStreamBytesExceeded"
"NewJSStreamMessageExceedsMaximumError|StreamMessageExceedsMaximum"
"NewJSStreamMinLastSeqError|StreamMinLastSeq"
"NewJSStreamMirrorNotUpdatableError|StreamMirrorNotUpdatable"
"NewJSStreamMismatchError|StreamMismatch"
"NewJSStreamMoveAndScaleError|StreamMoveAndScale"
"NewJSStreamMoveNotInProgressError|StreamMoveNotInProgress"
"NewJSStreamNameContainsPathSeparatorsError|StreamNameContainsPathSeparators"
"NewJSStreamNameExistError|StreamNameExist"
"NewJSStreamNameExistRestoreFailedError|StreamNameExistRestoreFailed"
)
templated_methods=(
@@ -161,6 +175,12 @@ templated_methods=(
"NewJSStreamAssignmentError|Exception|err|StreamAssignment|{err}"
"NewJSStreamCreateError|Exception|err|StreamCreate|{err}"
"NewJSStreamDeleteError|Exception|err|StreamDelete|{err}"
"NewJSStreamGeneralError|Exception|err|StreamGeneralError|{err}"
"NewJSStreamInvalidConfigError|Exception|err|StreamInvalidConfig|{err}"
"NewJSStreamInvalidExternalDeliverySubjError|object?|prefix|StreamInvalidExternalDeliverySubj|{prefix}"
"NewJSStreamLimitsError|Exception|err|StreamLimits|{err}"
"NewJSStreamMoveInProgressError|object?|msg|StreamMoveInProgress|{msg}"
"NewJSStreamMsgDeleteFailedError|Exception|err|StreamMsgDeleteFailed|{err}"
)
templated_methods_two_args=(