()
| 292 | } |
| 293 | |
| 294 | func (b WorkspaceBuildBuilder) doInTX() WorkspaceResponse { |
| 295 | b.t.Helper() |
| 296 | jobID := uuid.New() |
| 297 | b.seed.ID = uuid.New() |
| 298 | b.seed.JobID = jobID |
| 299 | |
| 300 | if b.taskAppID != uuid.Nil { |
| 301 | b.seed.HasAITask = sql.NullBool{ |
| 302 | Bool: true, |
| 303 | Valid: true, |
| 304 | } |
| 305 | } |
| 306 | |
| 307 | resp := WorkspaceResponse{ |
| 308 | AgentToken: b.agentToken, |
| 309 | Agents: make([]database.WorkspaceAgent, 0), |
| 310 | } |
| 311 | if b.ws.TemplateID == uuid.Nil { |
| 312 | b.logger.Debug(context.Background(), "creating template and version") |
| 313 | resp.TemplateVersionResponse = TemplateVersion(b.t, b.db). |
| 314 | Resources(b.resources...). |
| 315 | Pubsub(b.ps). |
| 316 | Seed(database.TemplateVersion{ |
| 317 | OrganizationID: b.ws.OrganizationID, |
| 318 | CreatedBy: b.ws.OwnerID, |
| 319 | }). |
| 320 | Do() |
| 321 | b.ws.TemplateID = resp.Template.ID |
| 322 | b.seed.TemplateVersionID = resp.TemplateVersion.ID |
| 323 | } |
| 324 | |
| 325 | // If no template version is set assume the active version. |
| 326 | if b.seed.TemplateVersionID == uuid.Nil { |
| 327 | b.logger.Debug(context.Background(), "assuming active template version") |
| 328 | template, err := b.db.GetTemplateByID(ownerCtx, b.ws.TemplateID) |
| 329 | require.NoError(b.t, err) |
| 330 | require.NotNil(b.t, template.ActiveVersionID, "active version ID unexpectedly nil") |
| 331 | b.seed.TemplateVersionID = template.ActiveVersionID |
| 332 | } |
| 333 | |
| 334 | // No ID on the workspace implies we should generate an entry. |
| 335 | if b.ws.ID == uuid.Nil { |
| 336 | // nolint: revive |
| 337 | b.ws = dbgen.Workspace(b.t, b.db, b.ws) |
| 338 | b.logger.Debug(context.Background(), "created workspace", |
| 339 | slog.F("name", b.ws.Name), |
| 340 | slog.F("workspace_id", b.ws.ID)) |
| 341 | } |
| 342 | resp.Workspace = b.ws |
| 343 | b.seed.WorkspaceID = b.ws.ID |
| 344 | b.seed.InitiatorID = takeFirst(b.seed.InitiatorID, b.ws.OwnerID) |
| 345 | |
| 346 | // If a task was requested, ensure it exists and is associated with this |
| 347 | // workspace. |
| 348 | if b.taskAppID != uuid.Nil { |
| 349 | b.logger.Debug(context.Background(), "creating or updating task", slog.F("task_id", b.taskSeed.ID)) |
| 350 | b.taskSeed.OrganizationID = takeFirst(b.taskSeed.OrganizationID, b.ws.OrganizationID) |
| 351 | b.taskSeed.OwnerID = takeFirst(b.taskSeed.OwnerID, b.ws.OwnerID) |
no test coverage detected