diff --git a/internal/manager/api_impl/jobs.go b/internal/manager/api_impl/jobs.go index dfc94adc..97407072 100644 --- a/internal/manager/api_impl/jobs.go +++ b/internal/manager/api_impl/jobs.go @@ -595,6 +595,9 @@ func jobDBtoAPI(dbJob *persistence.Job) api.Job { ShamanCheckoutId: &dbJob.Storage.ShamanCheckoutID, } } + if dbJob.DeleteRequestedAt.Valid { + apiJob.DeleteRequestedAt = &dbJob.DeleteRequestedAt.Time + } return apiJob } diff --git a/internal/manager/api_impl/jobs_query_test.go b/internal/manager/api_impl/jobs_query_test.go index f22fab00..74abd0b2 100644 --- a/internal/manager/api_impl/jobs_query_test.go +++ b/internal/manager/api_impl/jobs_query_test.go @@ -2,6 +2,7 @@ package api_impl import ( + "database/sql" "net/http" "testing" "time" @@ -32,10 +33,23 @@ func TestQueryJobs(t *testing.T) { }, } + deletionRequestedAt := time.Now() + deletionQueuedJob := persistence.Job{ + UUID: "d912ac69-de48-48ba-8028-35d82cb41451", + Name: "уходить", + JobType: "test", + Priority: 75, + Status: api.JobStatusCompleted, + DeleteRequestedAt: sql.NullTime{ + Time: deletionRequestedAt, + Valid: true, + }, + } + echoCtx := mf.prepareMockedRequest(nil) ctx := echoCtx.Request().Context() mf.persistence.EXPECT().QueryJobs(ctx, api.JobsQuery{}). - Return([]*persistence.Job{&activeJob}, nil) + Return([]*persistence.Job{&activeJob, &deletionQueuedJob}, nil) err := mf.flamenco.QueryJobs(echoCtx) assert.NoError(t, err) @@ -57,6 +71,18 @@ func TestQueryJobs(t *testing.T) { Id: "afc47568-bd9d-4368-8016-e91d945db36d", Status: api.JobStatusActive, }, + { + SubmittedJob: api.SubmittedJob{ + Name: "уходить", + Type: "test", + Priority: 75, + Settings: &api.JobSettings{}, + Metadata: &api.JobMetadata{}, + }, + Id: "d912ac69-de48-48ba-8028-35d82cb41451", + Status: api.JobStatusCompleted, + DeleteRequestedAt: &deletionRequestedAt, + }, }, } diff --git a/web/app/src/assets/base.css b/web/app/src/assets/base.css index f9d02abd..9e3f1e3e 100644 --- a/web/app/src/assets/base.css +++ b/web/app/src/assets/base.css @@ -620,6 +620,11 @@ button:focus, font-weight: bold; } +.tabulator-row.deletion-requested * { + text-decoration: line-through red 1px; + color: var(--color-text-muted); +} + span.state-transition-arrow { display: inline-block; font-weight: bold; diff --git a/web/app/src/components/jobs/JobDetails.vue b/web/app/src/components/jobs/JobDetails.vue index 4fcebe6c..9b6dc2b7 100644 --- a/web/app/src/components/jobs/JobDetails.vue +++ b/web/app/src/components/jobs/JobDetails.vue @@ -47,8 +47,14 @@