Skip to content

Commit 088b2e9

Browse files
committed
refactor: provider errors using errors pkg
1 parent af06253 commit 088b2e9

4 files changed

Lines changed: 58 additions & 4 deletions

File tree

mobius/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ require (
2020
github.com/zeebo/assert v1.3.1
2121
golang.org/x/net v0.20.0
2222
golang.org/x/text v0.14.0
23+
google.golang.org/grpc v1.60.1
2324
)
2425

2526
require (
@@ -28,6 +29,7 @@ require (
2829
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
2930
github.com/bufbuild/protovalidate-go v0.3.0 // indirect
3031
github.com/davecgh/go-spew v1.1.1 // indirect
32+
github.com/golang/protobuf v1.5.3 // indirect
3133
github.com/google/cel-go v0.17.4 // indirect
3234
github.com/inconshreveable/mousetrap v1.1.0 // indirect
3335
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect

mobius/go.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0/go.
8888
google.golang.org/grpc v1.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
8989
google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
9090
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
91+
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
9192
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
9293
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
9394
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=

mobius/internal/api/v1/chatcompletions.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package v1
22

33
import (
44
"context"
5-
"errors"
65

76
"connectrpc.com/connect"
7+
studioerrors "github.com/missingstudio/studio/backend/internal/errors"
88
"github.com/missingstudio/studio/backend/internal/providers"
99
"github.com/missingstudio/studio/backend/internal/providers/base"
1010
llmv1 "github.com/missingstudio/studio/protos/pkg/llm"
@@ -16,17 +16,17 @@ func (s *V1Handler) ChatCompletions(
1616
) (*connect.Response[llmv1.CompletionResponse], error) {
1717
provider, err := providers.GetProvider(ctx)
1818
if err != nil {
19-
return nil, connect.NewError(connect.CodeInternal, err)
19+
return nil, studioerrors.NewNotFound("provider not found")
2020
}
2121

2222
completionProvider, ok := provider.(base.ChatCompilationInterface)
2323
if !ok {
24-
return nil, connect.NewError(connect.CodeUnimplemented, errors.New("method not implemented"))
24+
return nil, studioerrors.NewInternalError("not able to get chat compilation provider")
2525
}
2626

2727
data, err := completionProvider.ChatCompilation(ctx, req.Msg)
2828
if err != nil {
29-
return nil, connect.NewError(connect.CodeInternal, err)
29+
return nil, studioerrors.New(err)
3030
}
3131

3232
return connect.NewResponse(data), nil

mobius/internal/errors/errors.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package studioerrors
2+
3+
import (
4+
"errors"
5+
6+
"connectrpc.com/connect"
7+
"google.golang.org/grpc/codes"
8+
"google.golang.org/grpc/status"
9+
)
10+
11+
func New(err error) error {
12+
if err == nil {
13+
return status.Error(codes.Internal, "unknown error")
14+
}
15+
if e, ok := status.FromError(err); ok {
16+
return e.Err()
17+
}
18+
return NewInternalError(err.Error())
19+
}
20+
21+
func NewInternalError(message string) error {
22+
return connect.NewError(connect.CodeInternal, errors.New(message))
23+
}
24+
25+
func NewNotFound(message string) error {
26+
return connect.NewError(connect.CodeNotFound, errors.New(message))
27+
}
28+
29+
func NewBadRequest(message string) error {
30+
return connect.NewError(connect.CodeInvalidArgument, errors.New(message))
31+
}
32+
33+
func NewAlreadyExists(message string) error {
34+
return connect.NewError(connect.CodeAlreadyExists, errors.New(message))
35+
}
36+
37+
func NewForbidden(message string) error {
38+
return connect.NewError(connect.CodePermissionDenied, errors.New(message))
39+
}
40+
41+
func NewUnauthenticated(message string) error {
42+
return connect.NewError(connect.CodeUnauthenticated, errors.New(message))
43+
}
44+
45+
func NewUnauthorized(message string) error {
46+
return NewUnauthenticated(message)
47+
}
48+
49+
func NewNotImplemented(message string) error {
50+
return connect.NewError(connect.CodeUnimplemented, errors.New(message))
51+
}

0 commit comments

Comments
 (0)