All checks were successful
ci/woodpecker/push/build Pipeline was successful
Signed-off-by: Nikolai Rodionov <iam@allanger.xyz>
79 lines
2.4 KiB
Go
79 lines
2.4 KiB
Go
package v1
|
|
|
|
import (
|
|
"context"
|
|
|
|
"gitea.badhouseplants.net/softplayer/softplayer-backend/internal/services"
|
|
projects "gitea.badhouseplants.net/softplayer/softplayer-go-proto/pkg/projects/v1"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/codes"
|
|
"google.golang.org/grpc/status"
|
|
)
|
|
|
|
func NewProjectsServer(projectCtrl *services.ProjectsController) *ProjectsServer {
|
|
return &ProjectsServer{
|
|
projectCtrl: projectCtrl,
|
|
}
|
|
}
|
|
|
|
// var _ projects.ProjectsServiceServer = (*ProjectsServer)(nil)
|
|
|
|
type ProjectsServer struct {
|
|
projects.UnimplementedProjectsServiceServer
|
|
projectCtrl *services.ProjectsController
|
|
}
|
|
|
|
// CreateProject implements [v1.ProjectsServiceServer].
|
|
func (p *ProjectsServer) CreateProject(ctx context.Context, in *projects.CreateProjectRequest) (*projects.CreateProjectResponse, error) {
|
|
claims, err := services.ClaimsFromContext(ctx)
|
|
if err != nil {
|
|
return nil, status.Error(codes.Aborted, "Context is invalid")
|
|
}
|
|
|
|
projectData := &services.ProjectData{
|
|
Name: in.Name,
|
|
Slug: in.Slug,
|
|
Description: in.Description,
|
|
}
|
|
|
|
id, err := p.projectCtrl.Create(ctx, projectData, claims.UserID)
|
|
if err != nil {
|
|
return nil, status.Error(codes.Aborted, "Couldn't create a project")
|
|
}
|
|
return &projects.CreateProjectResponse{Id: id}, nil
|
|
}
|
|
|
|
// GetProject implements [v1.ProjectsServiceServer].
|
|
func (p *ProjectsServer) GetProject(context.Context, *projects.GetProjectRequest) (*projects.GetProjectResponse, error) {
|
|
panic("unimplemented")
|
|
}
|
|
|
|
// ListProjects implements [v1.ProjectsServiceServer].
|
|
func (p *ProjectsServer) ListProjects(_in *projects.ListProjectsRequest, stream grpc.ServerStreamingServer[projects.ListProjectsResponse]) error {
|
|
claims, err := services.ClaimsFromContext(stream.Context())
|
|
if err != nil {
|
|
return status.Error(codes.Aborted, "Context is invalid")
|
|
}
|
|
|
|
res, err := p.projectCtrl.List(stream.Context(), claims.UserID)
|
|
if err != nil {
|
|
return status.Error(codes.Aborted, "Couldn't list projects")
|
|
}
|
|
for _, project := range res {
|
|
payload := &projects.ListProjectsResponse{
|
|
Id: project.UUID,
|
|
Slug: "dummy",
|
|
Name: project.Name,
|
|
}
|
|
if err := stream.Send(payload); err != nil {
|
|
return status.Error(codes.Aborted, "Couldn't send data")
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// UpdateProject implements [v1.ProjectsServiceServer].
|
|
func (p *ProjectsServer) UpdateProject(context.Context, *projects.UpdateProjectRequest) (*projects.UpdateProjectResponse, error) {
|
|
panic("unimplemented")
|
|
}
|