ms-tester/internal/transport/server.go

55 lines
1.2 KiB
Go
Raw Normal View History

2024-07-27 07:31:04 +00:00
package transport
import (
"context"
2024-08-16 11:05:29 +00:00
"git.sch9.ru/new_gate/ms-tester/internal/models"
testerv1 "git.sch9.ru/new_gate/ms-tester/pkg/go/gen/tester/v1"
2024-07-27 07:31:04 +00:00
"go.uber.org/zap"
"google.golang.org/protobuf/types/known/timestamppb"
"time"
"google.golang.org/grpc"
)
2024-08-16 11:05:29 +00:00
type ProblemService interface {
CreateProblem(ctx context.Context, problem *models.Problem) (int32, error)
ReadProblem(ctx context.Context, id int32) (*models.Problem, error)
UpdateProblem(ctx context.Context, problem *models.Problem) error
DeleteProblem(ctx context.Context, id int32) error
2024-07-27 07:31:04 +00:00
}
2024-08-16 11:05:29 +00:00
type TesterServer struct {
testerv1.UnimplementedTesterServiceServer
problemService ProblemService
2024-07-27 07:31:04 +00:00
gRPCServer *grpc.Server
logger *zap.Logger
}
2024-08-16 11:05:29 +00:00
func NewTesterServer(problemService ProblemService, gRPCServer *grpc.Server, logger *zap.Logger) *TesterServer {
server := &TesterServer{
problemService: problemService,
2024-07-27 07:31:04 +00:00
gRPCServer: gRPCServer,
logger: logger,
}
2024-08-16 11:05:29 +00:00
testerv1.RegisterTesterServiceServer(gRPCServer, server)
2024-07-27 07:31:04 +00:00
2024-08-16 11:05:29 +00:00
return server
2024-07-27 07:31:04 +00:00
}
func AsTimeP(t *timestamppb.Timestamp) *time.Time {
if t == nil {
return nil
}
tt := t.AsTime()
return &tt
}
func AsTimestampP(t *time.Time) *timestamppb.Timestamp {
if t == nil {
return nil
}
return timestamppb.New(*t)
}