feat(batch5): implement jetstream error helpers and group01 constructors
This commit is contained in:
77
tools/generate-jetstream-errors.sh
Executable file
77
tools/generate-jetstream-errors.sh
Executable file
@@ -0,0 +1,77 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
output_file="$repo_root/dotnet/src/ZB.MOM.NatsNet.Server/JetStream/JetStreamErrors.GeneratedConstructors.cs"
|
||||
|
||||
simple_methods=(
|
||||
"NewJSAccountResourcesExceededError|AccountResourcesExceeded"
|
||||
"NewJSAtomicPublishContainsDuplicateMessageError|AtomicPublishContainsDuplicateMessage"
|
||||
"NewJSAtomicPublishDisabledError|AtomicPublishDisabled"
|
||||
"NewJSAtomicPublishIncompleteBatchError|AtomicPublishIncompleteBatch"
|
||||
"NewJSAtomicPublishInvalidBatchCommitError|AtomicPublishInvalidBatchCommit"
|
||||
"NewJSAtomicPublishInvalidBatchIDError|AtomicPublishInvalidBatchID"
|
||||
"NewJSAtomicPublishMissingSeqError|AtomicPublishMissingSeq"
|
||||
"NewJSBadRequestError|BadRequest"
|
||||
"NewJSClusterIncompleteError|ClusterIncomplete"
|
||||
"NewJSClusterNotActiveError|ClusterNotActive"
|
||||
"NewJSClusterNotAssignedError|ClusterNotAssigned"
|
||||
"NewJSClusterNotAvailError|ClusterNotAvail"
|
||||
"NewJSClusterNotLeaderError|ClusterNotLeader"
|
||||
"NewJSClusterPeerNotMemberError|ClusterPeerNotMember"
|
||||
)
|
||||
|
||||
templated_methods=(
|
||||
"NewJSAtomicPublishTooLargeBatchError|object?|size|AtomicPublishTooLargeBatch|{size}"
|
||||
"NewJSAtomicPublishUnsupportedHeaderBatchError|object?|header|AtomicPublishUnsupportedHeaderBatch|{header}"
|
||||
"NewJSClusterNoPeersError|Exception|err|ClusterNoPeers|{err}"
|
||||
)
|
||||
|
||||
{
|
||||
cat <<'EOF'
|
||||
// Copyright 2020-2026 The NATS Authors
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
//
|
||||
// Generated constructor surface for JetStream API errors.
|
||||
// Source parity: server/jetstream_errors_generated.go
|
||||
|
||||
namespace ZB.MOM.NatsNet.Server;
|
||||
|
||||
public static partial class JsApiErrors
|
||||
{
|
||||
EOF
|
||||
|
||||
for entry in "${simple_methods[@]}"; do
|
||||
IFS='|' read -r method field <<<"$entry"
|
||||
cat <<EOF
|
||||
public static JsApiError ${method}(params ErrorOption[] opts)
|
||||
{
|
||||
if (ParseOpts(opts) is JsApiError overridden)
|
||||
return Clone(overridden);
|
||||
|
||||
return Clone(${field});
|
||||
}
|
||||
|
||||
EOF
|
||||
done
|
||||
|
||||
for entry in "${templated_methods[@]}"; do
|
||||
IFS='|' read -r method arg_type arg_name field placeholder <<<"$entry"
|
||||
cat <<EOF
|
||||
public static JsApiError ${method}(${arg_type} ${arg_name}, params ErrorOption[] opts)
|
||||
{
|
||||
if (ParseOpts(opts) is JsApiError overridden)
|
||||
return Clone(overridden);
|
||||
|
||||
return NewWithTags(${field}, "${placeholder}", ${arg_name});
|
||||
}
|
||||
|
||||
EOF
|
||||
done
|
||||
|
||||
cat <<'EOF'
|
||||
}
|
||||
EOF
|
||||
} >"$output_file"
|
||||
|
||||
echo "Generated $output_file"
|
||||
Reference in New Issue
Block a user