Skip to content

Commit b939647

Browse files
committed
refactor(errors)!: ErrorType → ErrorKind 전면 rename (추상 기반 + 3 레이어)
"ErrorType" 토큰 3중 오버로드(추상 record·프로퍼티·Serilog 필드) 해소의 최종 단계. 분류 의미를 명확히 표현하는 "Kind"로 통일. 변경: - Src/Functorium/Abstractions/Errors/ - ErrorType.cs → ErrorKind.cs (추상 record + .Name 프로퍼티) - ErrorName 프로퍼티 → Name (더 짧고 명확) - Src/Functorium/Domains/Errors/DomainErrorType* (11 partial) → DomainErrorKind.*.cs - Src/Functorium/Applications/Errors/ApplicationErrorType* (7 partial) → ApplicationErrorKind.*.cs - Src/Functorium.Adapters/Errors/AdapterErrorType* (10 partial) → AdapterErrorKind.*.cs - 레이어 팩토리 시그니처 갱신: - DomainError.For<T>(DomainErrorKind errorKind, ...) - ApplicationError.For<T>(ApplicationErrorKind errorKind, ...) - AdapterError.For<T>(AdapterErrorKind errorKind, ...) - 전 레이어 Testing 어설션 시그니처 갱신 - LayerErrorCore, ErrorLogFieldNames XML 주석 정리 상호 구분 유지 (의도적 비-rename): - ObservabilityNaming.OTelAttributes.ErrorType — OpenTelemetry 의미 규약 (error.type 표준 키)이므로 그대로 유지 - ObservabilityNaming.ErrorTypes — 내부 에러 분류 카테고리 (Aggregate/ Exceptional/Expected) 컬렉션 이름이므로 그대로 유지 - ErrorInfoExtractor의 tuple 필드 ErrorType — OTel 태그 값 소스이므로 OTel 규약과 일치하도록 유지 BREAKING CHANGE: - 추상 base: public record ErrorType → ErrorKind - ErrorType.ErrorName (virtual prop) → ErrorKind.Name - DomainErrorType → DomainErrorKind (커스텀 에러 정의 시 `: DomainErrorKind.Custom`로 변경 필요) - ApplicationErrorType → ApplicationErrorKind - AdapterErrorType → AdapterErrorKind - 모든 nested sealed record 파생 타입은 자동 rename됨 (예: DomainErrorType.Empty → DomainErrorKind.Empty) 참고: Docs.Site 가이드·샘플의 ErrorType 참조와 "ErrorCodeFactory" 문서 예시는 Stage 5에서 일괄 갱신.
1 parent 2bd7c21 commit b939647

97 files changed

Lines changed: 4878 additions & 4878 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Src/Functorium.Adapters/Abstractions/Errors/DestructuringPolicies/IErrorDestructurer.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
55

66
// Field | ExpectedError | ExpectedError<T> | ExceptionalError | ManyErrors
77
// --- | --- | --- | --- | ---
8-
// ErrorType | O | O | O | O
8+
// ErrorKind | O | O | O | O
99
// ErrorCode | O | O | O | X
1010
// NumericCode | O | O | O | O
1111
// ErrorCurrentValue | O | O | X | X
@@ -19,7 +19,7 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
1919
// -----------------------------------
2020
//"Properties": {
2121
// "Error": {
22-
// "ErrorType": "ExpectedError", <- string 에러 타입
22+
// "ErrorKind": "ExpectedError", <- string 에러 타입
2323
// "ErrorCode": "<에러 코드>",
2424
// "NumericCode": <에러 Id>
2525
// "ErrorCurrentValue": "<현재 값>"
@@ -31,7 +31,7 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
3131
// -----------------------------------
3232
//"Properties": {
3333
// "Error": {
34-
// "ErrorType": "ExpectedError`1", <- <T> 에러 타입
34+
// "ErrorKind": "ExpectedError`1", <- <T> 에러 타입
3535
// "ErrorCode": "<에러 코드>",
3636
// "NumericCode": <에러 Id>
3737
// "ErrorCurrentValue": {
@@ -47,7 +47,7 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
4747
// -----------------------------------
4848
//"Properties": {
4949
// "Error": {
50-
// "ErrorType": "ExpectedError`2", <- <T1, T2> 에러 타입
50+
// "ErrorKind": "ExpectedError`2", <- <T1, T2> 에러 타입
5151
// "ErrorCode": "<에러 코드>",
5252
// "NumericCode": <에러 Id>
5353
// "ErrorCurrentValue1": {
@@ -68,12 +68,12 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
6868
// -----------------------------------
6969
//"Properties": {
7070
// "Error": {
71-
// "ErrorType": "ManyErrors", <- 에러 타입
71+
// "ErrorKind": "ManyErrors", <- 에러 타입
7272
// "NumericCode": -2000000006, <- -2000000006: ManyErrors 고유 Id
7373
// "Count": 2, <- 에러 건수
7474
// "Errors": [
7575
// {
76-
// "ErrorType": "ExpectedError",
76+
// "ErrorKind": "ExpectedError",
7777
// "ErrorCode": "<에러 코드>",
7878
// "NumericCode": <에러 Id>,
7979
// "ErrorCurrentValue": {
@@ -92,7 +92,7 @@ namespace Functorium.Adapters.Abstractions.Errors.DestructuringPolicies;
9292
// -----------------------------------
9393
//"Properties": {
9494
// "Error": {
95-
// "ErrorType": "ExceptionalError", <- 예외 타입
95+
// "ErrorKind": "ExceptionalError", <- 예외 타입
9696
// "NumericCode": -2147352558, <- Exception의 HResult
9797
// "Message": "Attempted to divide by zero.", <- Exception의 Message
9898
// "ExceptionDetails": {

Src/Functorium.Adapters/Errors/AdapterError.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,48 +7,48 @@ namespace Functorium.Adapters.Errors;
77

88
/// <summary>
99
/// 어댑터의 오류 생성을 위한 정적 팩토리 클래스.
10-
/// 에러 코드를 자동으로 "Adapter.{AdapterName}.{ErrorName}" 형식으로 생성합니다.
10+
/// 에러 코드를 자동으로 "Adapter.{AdapterName}.{Name}" 형식으로 생성합니다.
1111
/// </summary>
1212
/// <remarks>
1313
/// 사용 예시:
1414
/// <code>
15-
/// using static Functorium.Adapters.Errors.AdapterErrorType;
15+
/// using static Functorium.Adapters.Errors.AdapterErrorKind;
1616
///
1717
/// AdapterError.For&lt;UsecaseValidationPipeline&gt;(new PipelineValidation("PropertyName"), value, "Validation failed");
1818
/// AdapterError.FromException&lt;UsecaseExceptionPipeline&gt;(new PipelineException(), exception);
1919
/// // 커스텀 에러: sealed record 파생 정의
20-
/// // public sealed record RateLimited : AdapterErrorType.Custom;
20+
/// // public sealed record RateLimited : AdapterErrorKind.Custom;
2121
/// AdapterError.For&lt;HttpClientAdapter&gt;(new RateLimited(), url, "Rate limit exceeded");
2222
/// </code>
2323
/// </remarks>
2424
public static class AdapterError
2525
{
2626
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
2727
public static Error For<TAdapter>(
28-
AdapterErrorType errorType,
28+
AdapterErrorKind errorType,
2929
string currentValue,
3030
string message) =>
3131
LayerErrorCore.Create<TAdapter>(ErrorCodePrefixes.Adapter, errorType, currentValue, message);
3232

3333
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
3434
public static Error For(
3535
Type adapterType,
36-
AdapterErrorType errorType,
36+
AdapterErrorKind errorType,
3737
string currentValue,
3838
string message) =>
3939
LayerErrorCore.Create(ErrorCodePrefixes.Adapter, adapterType, errorType, currentValue, message);
4040

4141
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
4242
public static Error For<TAdapter, TValue>(
43-
AdapterErrorType errorType,
43+
AdapterErrorKind errorType,
4444
TValue currentValue,
4545
string message)
4646
where TValue : notnull =>
4747
LayerErrorCore.Create<TAdapter, TValue>(ErrorCodePrefixes.Adapter, errorType, currentValue, message);
4848

4949
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
5050
public static Error For<TAdapter, T1, T2>(
51-
AdapterErrorType errorType,
51+
AdapterErrorKind errorType,
5252
T1 value1,
5353
T2 value2,
5454
string message)
@@ -58,7 +58,7 @@ public static Error For<TAdapter, T1, T2>(
5858

5959
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
6060
public static Error For<TAdapter, T1, T2, T3>(
61-
AdapterErrorType errorType,
61+
AdapterErrorKind errorType,
6262
T1 value1,
6363
T2 value2,
6464
T3 value3,
@@ -70,7 +70,7 @@ public static Error For<TAdapter, T1, T2, T3>(
7070

7171
[Pure, MethodImpl(MethodImplOptions.AggressiveInlining)]
7272
public static Error FromException<TAdapter>(
73-
AdapterErrorType errorType,
73+
AdapterErrorKind errorType,
7474
Exception exception) =>
7575
LayerErrorCore.FromException<TAdapter>(ErrorCodePrefixes.Adapter, errorType, exception);
7676
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Auth.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Auth.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 필수 설정이 누락됨
77
/// </summary>
8-
public sealed record NotConfigured : AdapterErrorType;
8+
public sealed record NotConfigured : AdapterErrorKind;
99

1010
/// <summary>
1111
/// 지원되지 않는 연산
1212
/// </summary>
13-
public sealed record NotSupported : AdapterErrorType;
13+
public sealed record NotSupported : AdapterErrorKind;
1414

1515
/// <summary>
1616
/// 인증되지 않음
1717
/// </summary>
18-
public sealed record Unauthorized : AdapterErrorType;
18+
public sealed record Unauthorized : AdapterErrorKind;
1919

2020
/// <summary>
2121
/// 접근 금지
2222
/// </summary>
23-
public sealed record Forbidden : AdapterErrorType;
23+
public sealed record Forbidden : AdapterErrorKind;
2424
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Concurrency.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Concurrency.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 낙관적 동시성 충돌.
77
/// Update/UpdateRange 호출 시 로드 이후 DB의 동일 엔티티가
88
/// 다른 주체에 의해 변경되었을 때 반환됩니다.
99
/// 재시도 가능성 판단은 호출자 책임입니다.
1010
/// </summary>
11-
public sealed record ConcurrencyConflict : AdapterErrorType;
11+
public sealed record ConcurrencyConflict : AdapterErrorKind;
1212
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Custom.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Custom.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 어댑터 특화 커스텀 에러의 기본 클래스 (표준 에러에 해당하지 않는 경우)
77
/// </summary>
88
/// <remarks>
99
/// 파생 sealed record로 정의하여 타입 안전하게 사용합니다.
1010
/// <code>
11-
/// public sealed record RateLimited : AdapterErrorType.Custom;
11+
/// public sealed record RateLimited : AdapterErrorKind.Custom;
1212
/// </code>
1313
/// </remarks>
14-
public abstract record Custom : AdapterErrorType;
14+
public abstract record Custom : AdapterErrorKind;
1515
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Data.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Data.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 직렬화 실패
77
/// </summary>
88
/// <param name="Format">직렬화 형식 (선택적)</param>
9-
public sealed record Serialization(string? Format = null) : AdapterErrorType;
9+
public sealed record Serialization(string? Format = null) : AdapterErrorKind;
1010

1111
/// <summary>
1212
/// 역직렬화 실패
1313
/// </summary>
1414
/// <param name="Format">역직렬화 형식 (선택적)</param>
15-
public sealed record Deserialization(string? Format = null) : AdapterErrorType;
15+
public sealed record Deserialization(string? Format = null) : AdapterErrorKind;
1616

1717
/// <summary>
1818
/// 데이터 손상
1919
/// </summary>
20-
public sealed record DataCorruption : AdapterErrorType;
20+
public sealed record DataCorruption : AdapterErrorKind;
2121
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Event.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Event.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 이벤트 발행 실패
77
/// </summary>
8-
public sealed record PublishFailed : AdapterErrorType;
8+
public sealed record PublishFailed : AdapterErrorKind;
99

1010
/// <summary>
1111
/// 이벤트 핸들러 실행 실패
1212
/// </summary>
13-
public sealed record HandlerFailed : AdapterErrorType;
13+
public sealed record HandlerFailed : AdapterErrorKind;
1414

1515
/// <summary>
1616
/// 이벤트 타입이 유효하지 않음
1717
/// </summary>
18-
public sealed record InvalidEventType : AdapterErrorType;
18+
public sealed record InvalidEventType : AdapterErrorKind;
1919

2020
/// <summary>
2121
/// 이벤트 발행 취소됨
2222
/// </summary>
23-
public sealed record PublishCancelled : AdapterErrorType;
23+
public sealed record PublishCancelled : AdapterErrorKind;
2424
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Existence.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Existence.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 값을 찾을 수 없음
77
/// </summary>
8-
public sealed record NotFound : AdapterErrorType;
8+
public sealed record NotFound : AdapterErrorKind;
99

1010
/// <summary>
1111
/// 요청한 ID 중 일부를 찾을 수 없음
1212
/// </summary>
13-
public sealed record PartialNotFound : AdapterErrorType;
13+
public sealed record PartialNotFound : AdapterErrorKind;
1414

1515
/// <summary>
1616
/// 값이 이미 존재함
1717
/// </summary>
18-
public sealed record AlreadyExists : AdapterErrorType;
18+
public sealed record AlreadyExists : AdapterErrorKind;
1919

2020
/// <summary>
2121
/// 중복된 값
2222
/// </summary>
23-
public sealed record Duplicate : AdapterErrorType;
23+
public sealed record Duplicate : AdapterErrorKind;
2424

2525
/// <summary>
2626
/// 유효하지 않은 상태
2727
/// </summary>
28-
public sealed record InvalidState : AdapterErrorType;
28+
public sealed record InvalidState : AdapterErrorKind;
2929
}

Src/Functorium.Adapters/Errors/AdapterErrorType.ExternalService.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.ExternalService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 외부 서비스 사용 불가
77
/// </summary>
88
/// <param name="ServiceName">서비스 이름 (선택적)</param>
9-
public sealed record ExternalServiceUnavailable(string? ServiceName = null) : AdapterErrorType;
9+
public sealed record ExternalServiceUnavailable(string? ServiceName = null) : AdapterErrorKind;
1010

1111
/// <summary>
1212
/// 연결 실패
1313
/// </summary>
1414
/// <param name="Target">연결 대상 (선택적)</param>
15-
public sealed record ConnectionFailed(string? Target = null) : AdapterErrorType;
15+
public sealed record ConnectionFailed(string? Target = null) : AdapterErrorKind;
1616

1717
/// <summary>
1818
/// 타임아웃
1919
/// </summary>
2020
/// <param name="Duration">타임아웃 시간 (선택적)</param>
21-
public sealed record Timeout(TimeSpan? Duration = null) : AdapterErrorType;
21+
public sealed record Timeout(TimeSpan? Duration = null) : AdapterErrorKind;
2222
}

Src/Functorium.Adapters/Errors/AdapterErrorType.Pipeline.cs renamed to Src/Functorium.Adapters/Errors/AdapterErrorKind.Pipeline.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
namespace Functorium.Adapters.Errors;
22

3-
public abstract partial record AdapterErrorType
3+
public abstract partial record AdapterErrorKind
44
{
55
/// <summary>
66
/// 파이프라인 검증 실패
77
/// </summary>
88
/// <param name="PropertyName">검증 실패한 속성 이름 (선택적)</param>
9-
public sealed record PipelineValidation(string? PropertyName = null) : AdapterErrorType;
9+
public sealed record PipelineValidation(string? PropertyName = null) : AdapterErrorKind;
1010

1111
/// <summary>
1212
/// 파이프라인 예외 발생
1313
/// </summary>
14-
public sealed record PipelineException : AdapterErrorType;
14+
public sealed record PipelineException : AdapterErrorKind;
1515
}

0 commit comments

Comments
 (0)