Skip to content
This repository was archived by the owner on Feb 13, 2026. It is now read-only.

Commit 5d8b111

Browse files
author
Benjamin Hotop
authored
beautify result struct (#16)
1 parent 2cc6a5a commit 5d8b111

4 files changed

Lines changed: 27 additions & 25 deletions

File tree

pkg/must/return.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package must
22

3-
func Return[T any](val T, err error) TypedResult[T] {
3+
func Return[T any](data T, err error) TypedResult[T] {
44
return NewTypedResult(
55
Succeed(err),
6-
val,
6+
data,
77
)
88
}

pkg/must/return_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,27 @@ import (
1212
func TestReturn(t *testing.T) {
1313
type testCase struct {
1414
name string
15-
val any
15+
data any
1616
err error
1717
statusCode int
1818
}
1919

2020
testCases := []testCase{
2121
{
2222
name: "error is not nil",
23-
val: nil,
23+
data: nil,
2424
err: errors.New("something went wrong"),
2525
statusCode: http.StatusBadRequest,
2626
},
2727
{
2828
name: "value is string",
29-
val: "test",
29+
data: "test",
3030
err: nil,
3131
statusCode: http.StatusOK,
3232
},
3333
{
3434
name: "value is float",
35-
val: 1.1,
35+
data: 1.1,
3636
err: nil,
3737
statusCode: http.StatusOK,
3838
},
@@ -44,19 +44,19 @@ func TestReturn(t *testing.T) {
4444
tester := &must.ExecuteTester{}
4545

4646
if tc.err != nil {
47-
assert.Panics(t, func() { must.Return(tc.val, tc.err).ElseRespond(&writer, tc.statusCode) })
48-
assert.Panics(t, func() { must.Return(tc.val, tc.err).ElseExecute(tester.TestTyped) })
49-
assert.Panics(t, func() { must.Return(tc.val, tc.err).ElsePanic() })
47+
assert.Panics(t, func() { must.Return(tc.data, tc.err).ElseRespond(&writer, tc.statusCode) })
48+
assert.Panics(t, func() { must.Return(tc.data, tc.err).ElseExecute(tester.TestTyped) })
49+
assert.Panics(t, func() { must.Return(tc.data, tc.err).ElsePanic() })
5050
assert.True(t, tester.Called)
5151
assert.Contains(t, *writer.Error, tc.err.Error())
5252
assert.Equal(t, tc.statusCode, writer.StatusCode)
5353
} else {
5454
var result any
55-
assert.NotPanics(t, func() { result = must.Return(tc.val, tc.err).ElseRespond(&writer, tc.statusCode) })
56-
assert.NotPanics(t, func() { must.Return(tc.val, tc.err).ElseExecute(tester.TestTyped) })
57-
assert.NotPanics(t, func() { must.Return(tc.val, tc.err).ElsePanic() })
55+
assert.NotPanics(t, func() { result = must.Return(tc.data, tc.err).ElseRespond(&writer, tc.statusCode) })
56+
assert.NotPanics(t, func() { must.Return(tc.data, tc.err).ElseExecute(tester.TestTyped) })
57+
assert.NotPanics(t, func() { must.Return(tc.data, tc.err).ElsePanic() })
5858
assert.False(t, tester.Called)
59-
assert.Equal(t, tc.val, result)
59+
assert.Equal(t, tc.data, result)
6060
assert.Nil(t, writer.Error)
6161
assert.Zero(t, writer.StatusCode)
6262
}

pkg/must/typed_result.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import (
66

77
type TypedResult[T any] struct {
88
UntypedResult
9-
Val T `json:"val"`
9+
Data T `json:"data"`
1010
}
1111

1212
type TypedResultAction[T any] func(T)
1313

14-
func NewTypedResult[T any](res UntypedResult, val T) TypedResult[T] {
15-
return TypedResult[T]{res, val}
14+
func NewTypedResult[T any](res UntypedResult, data T) TypedResult[T] {
15+
return TypedResult[T]{res, data}
1616
}
1717

1818
func (res TypedResult[T]) ElseRespond(w ResponseWriter, statusCode int) T {
@@ -29,23 +29,23 @@ func (res TypedResult[T]) ElseRespond(w ResponseWriter, statusCode int) T {
2929
panic(res.err)
3030
}
3131

32-
return res.Val
32+
return res.Data
3333
}
3434

3535
func (res TypedResult[T]) ElseExecute(fn TypedResultAction[T]) T {
3636
if res.err != nil {
37-
fn(res.Val)
37+
fn(res.Data)
3838

3939
panic(res.err)
4040
}
4141

42-
return res.Val
42+
return res.Data
4343
}
4444

4545
func (res TypedResult[T]) ElsePanic() T {
4646
if res.err != nil {
4747
panic(res.err)
4848
}
4949

50-
return res.Val
50+
return res.Data
5151
}

pkg/must/untyped_result.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,22 @@ package must
33
import "encoding/json"
44

55
type UntypedResult struct {
6-
err error `json:"-"`
7-
HasError bool `json:"hasError"`
8-
ErrorMessage string `json:"errorMessage,omitempty"`
6+
err error `json:"-"`
7+
Success bool `json:"success"`
8+
Error bool `json:"error"`
9+
Message string `json:"message,omitempty"`
910
}
1011

1112
type ResultAction func()
1213

1314
func NewResult(err error) UntypedResult {
1415
var errorMessage string
15-
if err != nil {
16+
hasError := err != nil
17+
if hasError {
1618
errorMessage = err.Error()
1719
}
1820

19-
return UntypedResult{err, err != nil, errorMessage}
21+
return UntypedResult{err, !hasError, hasError, errorMessage}
2022
}
2123

2224
func (res UntypedResult) ElseRespond(w ResponseWriter, statusCode int) {

0 commit comments

Comments
 (0)