diff --git a/src/api/api.go b/src/api/api.go index b94e004..2f5f79a 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -7,6 +7,7 @@ import ( "github.com/makeopensource/leviathan/common" dkclient "github.com/makeopensource/leviathan/generated/docker_rpc/v1/v1connect" jobClient "github.com/makeopensource/leviathan/generated/jobs/v1/v1connect" + labClient "github.com/makeopensource/leviathan/generated/labs/v1/v1connect" "github.com/makeopensource/leviathan/service" "github.com/rs/zerolog/log" "golang.org/x/net/http2" @@ -33,7 +34,7 @@ func StartGrpcServer() { } func setupEndpoints() *http.ServeMux { - docker, job := service.InitServices() + docker, job, lab := service.InitServices() interceptor := connect.WithInterceptors() if common.ApiKey.GetStr() != "" { @@ -52,6 +53,10 @@ func setupEndpoints() *http.ServeMux { dkSrv := &v1.DockerServer{Service: docker} return dkclient.NewDockerServiceHandler(dkSrv, interceptor) }, + func() (string, http.Handler) { + labSrv := v1.LabServer{Srv: lab} + return labClient.NewLabServiceHandler(labSrv, interceptor) + }, } mux := http.NewServeMux() diff --git a/src/api/v1/lab_impl.go b/src/api/v1/lab_impl.go index 7f632d8..130bcd2 100644 --- a/src/api/v1/lab_impl.go +++ b/src/api/v1/lab_impl.go @@ -11,7 +11,7 @@ import ( ) type LabServer struct { - srv *labs.LabService + Srv *labs.LabService } func (l LabServer) NewLab(ctx context.Context, req *connect.Request[v1.LabRequest]) (*connect.Response[v1.NewLabResponse], error) { @@ -34,7 +34,7 @@ func (l LabServer) NewLab(ctx context.Context, req *connect.Request[v1.LabReques JobEntryCmd: req.Msg.EntryCommand, } - labID, err := l.srv.CreateLab(lab, req.Msg.DockerFile, req.Msg.JobFiles) + labID, err := l.Srv.CreateLab(lab, req.Msg.DockerFile, req.Msg.JobFiles) if err != nil { return nil, err } diff --git a/src/service/service.go b/src/service/service.go index d0e9625..a8fc328 100644 --- a/src/service/service.go +++ b/src/service/service.go @@ -1,12 +1,16 @@ package service import ( + "github.com/makeopensource/leviathan/common" "github.com/makeopensource/leviathan/service/docker" "github.com/makeopensource/leviathan/service/jobs" + "github.com/makeopensource/leviathan/service/labs" ) -func InitServices() (*docker.DkService, *jobs.JobService) { +func InitServices() (*docker.DkService, *jobs.JobService, *labs.LabService) { + db, bc := common.InitDB() dkService := docker.NewDockerServiceWithClients() - jobService := jobs.NewJobServiceWithDeps(dkService) - return dkService, jobService + labService := labs.NewLabService(db, dkService) + jobService := jobs.NewJobService(db, bc, dkService, labService) + return dkService, jobService, labService }