Skip to content

Commit 49669ec

Browse files
authored
Merge pull request #35 from makeopensource/dev
adde getStatus
2 parents 1fdf8a1 + d353a13 commit 49669ec

7 files changed

Lines changed: 100 additions & 23 deletions

File tree

spec/leviathan_node/src/generated/jobs/v1/jobs_pb.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf";
1212
* Describes the file jobs/v1/jobs.proto.
1313
*/
1414
export const file_jobs_v1_jobs: GenFile = /*@__PURE__*/
15-
fileDesc("ChJqb2JzL3YxL2pvYnMucHJvdG8SB2pvYnMudjEizAEKDU5ld0pvYlJlcXVlc3QSJgoIam9iRmlsZXMYASADKAsyFC50eXBlcy52MS5GaWxlVXBsb2FkEigKCmRvY2tlckZpbGUYAiABKAsyFC50eXBlcy52MS5GaWxlVXBsb2FkEhEKCWltYWdlTmFtZRgDIAEoCRIbChNqb2JUaW1lb3V0SW5TZWNvbmRzGAQgASgEEhAKCGVudHJ5Q21kGAUgASgJEicKBmxpbWl0cxgGIAEoCzIXLnR5cGVzLnYxLk1hY2hpbmVMaW1pdHMiHwoOTmV3Sm9iUmVzcG9uc2USDQoFam9iSWQYASABKAkiIQoQQ2FuY2VsSm9iUmVxdWVzdBINCgVqb2JJZBgBIAEoCSITChFDYW5jZWxKb2JSZXNwb25zZSIeCg1Kb2JMb2dSZXF1ZXN0Eg0KBWpvYklkGAEgASgJIkQKD0pvYkxvZ3NSZXNwb25zZRIjCgdqb2JJbmZvGAEgASgLMhIuam9icy52MS5Kb2JTdGF0dXMSDAoEbG9ncxgCIAEoCSJDCglKb2JTdGF0dXMSDgoGam9iX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIWCg5zdGF0dXNfbWVzc2FnZRgDIAEoCTLVAQoKSm9iU2VydmljZRI7CgZOZXdKb2ISFi5qb2JzLnYxLk5ld0pvYlJlcXVlc3QaFy5qb2JzLnYxLk5ld0pvYlJlc3BvbnNlIgASRAoMU3RyZWFtU3RhdHVzEhYuam9icy52MS5Kb2JMb2dSZXF1ZXN0Ghguam9icy52MS5Kb2JMb2dzUmVzcG9uc2UiADABEkQKCUNhbmNlbEpvYhIZLmpvYnMudjEuQ2FuY2VsSm9iUmVxdWVzdBoaLmpvYnMudjEuQ2FuY2VsSm9iUmVzcG9uc2UiAEKMAQoLY29tLmpvYnMudjFCCUpvYnNQcm90b1ABWjVnaXRodWIuY29tL21ha2VvcGVuc291cmNlL2xldmlhdGhhbi9nZW5lcmF0ZWQvam9icy92MaICA0pYWKoCB0pvYnMuVjHKAgdKb2JzXFYx4gITSm9ic1xWMVxHUEJNZXRhZGF0YeoCCEpvYnM6OlYxYgZwcm90bzM", [file_types_v1_types]);
15+
fileDesc("ChJqb2JzL3YxL2pvYnMucHJvdG8SB2pvYnMudjEizAEKDU5ld0pvYlJlcXVlc3QSJgoIam9iRmlsZXMYASADKAsyFC50eXBlcy52MS5GaWxlVXBsb2FkEigKCmRvY2tlckZpbGUYAiABKAsyFC50eXBlcy52MS5GaWxlVXBsb2FkEhEKCWltYWdlTmFtZRgDIAEoCRIbChNqb2JUaW1lb3V0SW5TZWNvbmRzGAQgASgEEhAKCGVudHJ5Q21kGAUgASgJEicKBmxpbWl0cxgGIAEoCzIXLnR5cGVzLnYxLk1hY2hpbmVMaW1pdHMiHwoOTmV3Sm9iUmVzcG9uc2USDQoFam9iSWQYASABKAkiIQoQQ2FuY2VsSm9iUmVxdWVzdBINCgVqb2JJZBgBIAEoCSITChFDYW5jZWxKb2JSZXNwb25zZSIeCg1Kb2JMb2dSZXF1ZXN0Eg0KBWpvYklkGAEgASgJIkQKD0pvYkxvZ3NSZXNwb25zZRIjCgdqb2JJbmZvGAEgASgLMhIuam9icy52MS5Kb2JTdGF0dXMSDAoEbG9ncxgCIAEoCSJDCglKb2JTdGF0dXMSDgoGam9iX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIWCg5zdGF0dXNfbWVzc2FnZRgDIAEoCTKWAgoKSm9iU2VydmljZRI7CgZOZXdKb2ISFi5qb2JzLnYxLk5ld0pvYlJlcXVlc3QaFy5qb2JzLnYxLk5ld0pvYlJlc3BvbnNlIgASPwoJR2V0U3RhdHVzEhYuam9icy52MS5Kb2JMb2dSZXF1ZXN0Ghguam9icy52MS5Kb2JMb2dzUmVzcG9uc2UiABJECgxTdHJlYW1TdGF0dXMSFi5qb2JzLnYxLkpvYkxvZ1JlcXVlc3QaGC5qb2JzLnYxLkpvYkxvZ3NSZXNwb25zZSIAMAESRAoJQ2FuY2VsSm9iEhkuam9icy52MS5DYW5jZWxKb2JSZXF1ZXN0Ghouam9icy52MS5DYW5jZWxKb2JSZXNwb25zZSIAQowBCgtjb20uam9icy52MUIJSm9ic1Byb3RvUAFaNWdpdGh1Yi5jb20vbWFrZW9wZW5zb3VyY2UvbGV2aWF0aGFuL2dlbmVyYXRlZC9qb2JzL3YxogIDSlhYqgIHSm9icy5WMcoCB0pvYnNcVjHiAhNKb2JzXFYxXEdQQk1ldGFkYXRh6gIISm9iczo6VjFiBnByb3RvMw", [file_types_v1_types]);
1616

1717
/**
1818
* @generated from message jobs.v1.NewJobRequest
@@ -182,6 +182,18 @@ export const JobService: GenService<{
182182
output: typeof NewJobResponseSchema;
183183
},
184184
/**
185+
* Gets job status at call time, whatever it may be
186+
*
187+
* @generated from rpc jobs.v1.JobService.GetStatus
188+
*/
189+
getStatus: {
190+
methodKind: "unary";
191+
input: typeof JobLogRequestSchema;
192+
output: typeof JobLogsResponseSchema;
193+
},
194+
/**
195+
* Streams job status until it is complete
196+
*
185197
* @generated from rpc jobs.v1.JobService.StreamStatus
186198
*/
187199
streamStatus: {

spec/proto/jobs/v1/jobs.proto

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ import "types/v1/types.proto";
88

99
service JobService {
1010
rpc NewJob(NewJobRequest) returns (NewJobResponse) {}
11+
// Gets job status at call time, whatever it may be
12+
rpc GetStatus (JobLogRequest) returns (JobLogsResponse) {}
13+
// Streams job status until it is complete
1114
rpc StreamStatus(JobLogRequest) returns (stream JobLogsResponse) {}
1215
rpc CancelJob(CancelJobRequest) returns (CancelJobResponse) {}
1316
}

src/api/v1/job_impl.go

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,24 @@ func (job *JobServer) NewJob(ctx context.Context, req *connect.Request[v1.NewJob
6363
return res, nil
6464
}
6565

66+
func (job *JobServer) GetStatus(_ context.Context, req *connect.Request[v1.JobLogRequest]) (*connect.Response[v1.JobLogsResponse], error) {
67+
status, logs, err := job.srv.GetJobStatusAndLogs(req.Msg.GetJobId())
68+
if err != nil {
69+
return nil, err
70+
}
71+
72+
res := connect.NewResponse(&v1.JobLogsResponse{
73+
JobInfo: status.ToProto(),
74+
Logs: logs,
75+
})
76+
return res, nil
77+
}
78+
6679
func (job *JobServer) StreamStatus(ctx context.Context, req *connect.Request[v1.JobLogRequest], stream *connect.ServerStream[v1.JobLogsResponse]) error {
6780
streamFunc := func(jobInfo *models.Job, logs string) error {
6881
return stream.Send(&v1.JobLogsResponse{
69-
JobInfo: &v1.JobStatus{
70-
JobId: jobInfo.JobId,
71-
Status: string(jobInfo.Status),
72-
StatusMessage: jobInfo.StatusMessage,
73-
},
74-
Logs: logs,
82+
JobInfo: jobInfo.ToProto(),
83+
Logs: logs,
7584
})
7685
}
7786

src/generated/jobs/v1/jobs.pb.go

Lines changed: 13 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/generated/jobs/v1/v1connect/jobs.connect.go

Lines changed: 38 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/models/job.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package models
33
import (
44
"context"
55
"fmt"
6+
v1 "github.com/makeopensource/leviathan/generated/jobs/v1"
67
"github.com/rs/zerolog/log"
78
"gorm.io/gorm"
89
)
@@ -63,6 +64,14 @@ type Job struct {
6364
JobCtx context.Context `gorm:"-"`
6465
}
6566

67+
func (j *Job) ToProto() *v1.JobStatus {
68+
return &v1.JobStatus{
69+
JobId: j.JobId,
70+
Status: string(j.Status),
71+
StatusMessage: j.StatusMessage,
72+
}
73+
}
74+
6675
// ValidateForQueue checks for fields required before sending job to queue
6776
func (j *Job) ValidateForQueue() error {
6877
if j == nil {

src/service/jobs/job_service.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,15 @@ func (job *JobService) StreamJobAndLogs(
249249
}
250250
}
251251

252+
// GetJobStatusAndLogs gets the status once whatever it may be and current logs
253+
func (job *JobService) GetJobStatusAndLogs(jobUuid string) (*models.Job, string, error) {
254+
jobInfo, _, logs, err := job.checkJob(jobUuid)
255+
if err != nil {
256+
return nil, "", err
257+
}
258+
return jobInfo, logs, nil
259+
}
260+
252261
func (job *JobService) ListenToJobLogs(ctx context.Context, jobInfo *models.Job) chan string {
253262
logChannel := make(chan string, 2)
254263
go func(ctx context.Context) {

0 commit comments

Comments
 (0)