Skip to content

Commit 5316ff0

Browse files
committed
Raise errors in FE on workspaces table
1 parent 7b20ada commit 5316ff0

File tree

5 files changed

+43
-13
lines changed

5 files changed

+43
-13
lines changed

coderd/database/dbfake/databasefake.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -966,13 +966,13 @@ func (q *fakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
966966
return nil, xerrors.Errorf("get provisioner job: %w", err)
967967
}
968968

969-
switch arg.Status {
970-
case "pending":
969+
switch database.WorkspaceStatus(arg.Status) {
970+
case database.WorkspaceStatusPending:
971971
if !job.StartedAt.Valid {
972972
continue
973973
}
974974

975-
case "starting":
975+
case database.WorkspaceStatusStarting:
976976
if !job.StartedAt.Valid &&
977977
!job.CanceledAt.Valid &&
978978
job.CompletedAt.Valid &&
@@ -981,15 +981,15 @@ func (q *fakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
981981
continue
982982
}
983983

984-
case "running":
984+
case database.WorkspaceStatusRunning:
985985
if !job.CompletedAt.Valid &&
986986
job.CanceledAt.Valid &&
987987
job.Error.Valid ||
988988
build.Transition != database.WorkspaceTransitionStart {
989989
continue
990990
}
991991

992-
case "stopping":
992+
case database.WorkspaceStatusStopping:
993993
if !job.StartedAt.Valid &&
994994
!job.CanceledAt.Valid &&
995995
job.CompletedAt.Valid &&
@@ -998,31 +998,31 @@ func (q *fakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
998998
continue
999999
}
10001000

1001-
case "stopped":
1001+
case database.WorkspaceStatusStopped:
10021002
if !job.CompletedAt.Valid &&
10031003
job.CanceledAt.Valid &&
10041004
job.Error.Valid ||
10051005
build.Transition != database.WorkspaceTransitionStop {
10061006
continue
10071007
}
10081008

1009-
case "failed":
1009+
case database.WorkspaceStatusFailed:
10101010
if (!job.CanceledAt.Valid && !job.Error.Valid) ||
10111011
(!job.CompletedAt.Valid && !job.Error.Valid) {
10121012
continue
10131013
}
10141014

1015-
case "canceling":
1015+
case database.WorkspaceStatusCanceling:
10161016
if !job.CanceledAt.Valid && job.CompletedAt.Valid {
10171017
continue
10181018
}
10191019

1020-
case "canceled":
1020+
case database.WorkspaceStatusCanceled:
10211021
if !job.CanceledAt.Valid && !job.CompletedAt.Valid {
10221022
continue
10231023
}
10241024

1025-
case "deleted":
1025+
case database.WorkspaceStatusDeleted:
10261026
if !job.StartedAt.Valid &&
10271027
job.CanceledAt.Valid &&
10281028
!job.CompletedAt.Valid &&
@@ -1031,7 +1031,7 @@ func (q *fakeQuerier) GetAuthorizedWorkspaces(ctx context.Context, arg database.
10311031
continue
10321032
}
10331033

1034-
case "deleting":
1034+
case database.WorkspaceStatusDeleting:
10351035
if !job.CompletedAt.Valid &&
10361036
job.CanceledAt.Valid &&
10371037
job.Error.Valid &&

coderd/database/modelmethods.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,33 @@ import (
77
"github.com/coder/coder/coderd/rbac"
88
)
99

10+
type WorkspaceStatus string
11+
12+
const (
13+
WorkspaceStatusPending WorkspaceStatus = "pending"
14+
WorkspaceStatusStarting WorkspaceStatus = "starting"
15+
WorkspaceStatusRunning WorkspaceStatus = "running"
16+
WorkspaceStatusStopping WorkspaceStatus = "stopping"
17+
WorkspaceStatusStopped WorkspaceStatus = "stopped"
18+
WorkspaceStatusFailed WorkspaceStatus = "failed"
19+
WorkspaceStatusCanceling WorkspaceStatus = "canceling"
20+
WorkspaceStatusCanceled WorkspaceStatus = "canceled"
21+
WorkspaceStatusDeleting WorkspaceStatus = "deleting"
22+
WorkspaceStatusDeleted WorkspaceStatus = "deleted"
23+
)
24+
25+
func (s WorkspaceStatus) Valid() bool {
26+
switch s {
27+
case WorkspaceStatusPending, WorkspaceStatusStarting, WorkspaceStatusRunning,
28+
WorkspaceStatusStopping, WorkspaceStatusStopped, WorkspaceStatusFailed,
29+
WorkspaceStatusCanceling, WorkspaceStatusCanceled, WorkspaceStatusDeleting,
30+
WorkspaceStatusDeleted:
31+
return true
32+
default:
33+
return false
34+
}
35+
}
36+
1037
type AuditableGroup struct {
1138
Group
1239
Members []GroupMember `json:"members"`

coderd/httpapi/queryparams.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ func (p *QueryParamParser) Strings(vals url.Values, def []string, queryParam str
110110

111111
// ValidEnum parses enum query params. Add more to the list as needed.
112112
type ValidEnum interface {
113-
database.ResourceType | database.AuditAction | database.BuildReason | database.UserStatus
113+
database.ResourceType | database.AuditAction | database.BuildReason | database.UserStatus |
114+
database.WorkspaceStatus
114115

115116
// Valid is required on the enum type to be used with ParseEnum.
116117
Valid() bool

coderd/searchquery/search.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ func Audit(query string) (database.GetAuditLogsOffsetParams, []codersdk.Validati
3838
Action: string(httpapi.ParseCustom(parser, values, "", "action", httpapi.ParseEnum[database.ResourceType])),
3939
BuildReason: string(httpapi.ParseCustom(parser, values, "", "build_reason", httpapi.ParseEnum[database.ResourceType])),
4040
}
41+
parser.ErrorExcessParams(values)
4142
return filter, parser.Errors
4243
}
4344

@@ -98,7 +99,7 @@ func Workspace(query string, page codersdk.Pagination, agentInactiveDisconnectTi
9899
filter.OwnerUsername = parser.String(values, "", "owner")
99100
filter.TemplateName = parser.String(values, "", "template")
100101
filter.Name = parser.String(values, "", "name")
101-
filter.Status = parser.String(values, "", "status")
102+
filter.Status = string(httpapi.ParseCustom(parser, values, "", "status", httpapi.ParseEnum[database.WorkspaceStatus]))
102103
filter.HasAgent = parser.String(values, "", "has-agent")
103104
parser.ErrorExcessParams(values)
104105
return filter, parser.Errors

site/src/pages/WorkspacesPage/WorkspacesPageView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ export const WorkspacesPageView: FC<
9595
filter={filter}
9696
onFilter={onFilter}
9797
presetFilters={presetFilters}
98+
error={error}
9899
/>
99100
</Stack>
100101
<WorkspacesTable

0 commit comments

Comments
 (0)