mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: store coder_workspace_tags in the database (#13294)
This commit is contained in:
@@ -817,6 +817,25 @@ func (s *server) UpdateJob(ctx context.Context, request *proto.UpdateJobRequest)
|
||||
s.Logger.Debug(ctx, "published job logs", slog.F("job_id", parsedID))
|
||||
}
|
||||
|
||||
if len(request.WorkspaceTags) > 0 {
|
||||
templateVersion, err := s.Database.GetTemplateVersionByJobID(ctx, job.ID)
|
||||
if err != nil {
|
||||
s.Logger.Error(ctx, "failed to get the template version", slog.F("job_id", parsedID), slog.Error(err))
|
||||
return nil, xerrors.Errorf("get template version by job id: %w", err)
|
||||
}
|
||||
|
||||
for key, value := range request.WorkspaceTags {
|
||||
_, err := s.Database.InsertTemplateVersionWorkspaceTag(ctx, database.InsertTemplateVersionWorkspaceTagParams{
|
||||
TemplateVersionID: templateVersion.ID,
|
||||
Key: key,
|
||||
Value: value,
|
||||
})
|
||||
if err != nil {
|
||||
return nil, xerrors.Errorf("update template version workspace tags: %w", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(request.Readme) > 0 {
|
||||
err := s.Database.UpdateTemplateVersionDescriptionByJobID(ctx, database.UpdateTemplateVersionDescriptionByJobIDParams{
|
||||
JobID: job.ID,
|
||||
|
||||
@@ -750,6 +750,38 @@ func TestUpdateJob(t *testing.T) {
|
||||
require.Equal(t, templateVariables[1].Value, "")
|
||||
})
|
||||
})
|
||||
|
||||
t.Run("WorkspaceTags", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitLong)
|
||||
defer cancel()
|
||||
|
||||
srv, db, _, pd := setup(t, false, &overrides{})
|
||||
job := setupJob(t, db, pd.ID)
|
||||
versionID := uuid.New()
|
||||
err := db.InsertTemplateVersion(ctx, database.InsertTemplateVersionParams{
|
||||
ID: versionID,
|
||||
JobID: job,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
_, err = srv.UpdateJob(ctx, &proto.UpdateJobRequest{
|
||||
JobId: job.String(),
|
||||
WorkspaceTags: map[string]string{
|
||||
"bird": "tweety",
|
||||
"cat": "jinx",
|
||||
},
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
workspaceTags, err := db.GetTemplateVersionWorkspaceTags(ctx, versionID)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, workspaceTags, 2)
|
||||
require.Equal(t, workspaceTags[0].Key, "bird")
|
||||
require.Equal(t, workspaceTags[0].Value, "tweety")
|
||||
require.Equal(t, workspaceTags[1].Key, "cat")
|
||||
require.Equal(t, workspaceTags[1].Value, "jinx")
|
||||
})
|
||||
}
|
||||
|
||||
func TestFailJob(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user