MCPcopy Create free account
hub / github.com/bytebase/bytebase / GetTaskRunSession

Method GetTaskRunSession

backend/api/v1/rollout_service.go:561–609  ·  view source on GitHub ↗
(ctx context.Context, req *connect.Request[v1pb.GetTaskRunSessionRequest])

Source from the content-addressed store, hash-verified

559}
560
561func (s *RolloutService) GetTaskRunSession(ctx context.Context, req *connect.Request[v1pb.GetTaskRunSessionRequest]) (*connect.Response[v1pb.TaskRunSession], error) {
562 request := req.Msg
563 projectID, planID, _, taskUID, taskRunUID, err := common.GetProjectIDPlanIDStageIDTaskIDTaskRunID(request.Parent)
564 if err != nil {
565 return nil, connect.NewError(connect.CodeInvalidArgument, errors.Wrapf(err, "failed to get task run uid"))
566 }
567
568 plan, err := s.store.GetPlan(ctx, &store.FindPlanMessage{
569 Workspace: common.GetWorkspaceIDFromContext(ctx),
570 ProjectID: projectID,
571 UID: &planID,
572 })
573 if err != nil {
574 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get plan"))
575 }
576 if plan == nil {
577 return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("plan %d not found in project %s", planID, projectID))
578 }
579
580 tasks, err := s.store.ListTasks(ctx, &store.TaskFind{Workspace: common.GetWorkspaceIDFromContext(ctx), ProjectID: projectID, ID: &taskUID, PlanID: &planID})
581 if err != nil {
582 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get task"))
583 }
584 if len(tasks) == 0 {
585 return nil, connect.NewError(connect.CodeNotFound, errors.Errorf("task %d not found in plan %d", taskUID, planID))
586 }
587 task := tasks[0]
588
589 instance, err := s.store.GetInstance(ctx, &store.FindInstanceMessage{Workspace: common.GetWorkspaceIDFromContext(ctx), ResourceID: &task.InstanceID})
590 if err != nil {
591 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get instance"))
592 }
593
594 driver, err := s.dbFactory.GetAdminDatabaseDriver(ctx, instance, nil, db.ConnectionContext{})
595 if err != nil {
596 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get driver"))
597 }
598 defer driver.Close(ctx)
599
600 appName := fmt.Sprintf("bytebase-taskrun-%d", taskRunUID)
601 session, err := getSession(ctx, instance.Metadata.GetEngine(), driver.GetDB(), appName)
602 if err != nil {
603 return nil, connect.NewError(connect.CodeInternal, errors.Wrapf(err, "failed to get session"))
604 }
605
606 session.Name = request.Parent + "/session"
607
608 return connect.NewResponse(session), nil
609}
610
611func getSession(ctx context.Context, engine storepb.Engine, db *sql.DB, appName string) (*v1pb.TaskRunSession, error) {
612 switch engine {

Callers

nothing calls this directly

Calls 11

getSessionFunction · 0.85
ErrorfMethod · 0.80
ListTasksMethod · 0.80
GetPlanMethod · 0.65
GetInstanceMethod · 0.65
CloseMethod · 0.65
GetDBMethod · 0.65
GetEngineMethod · 0.45

Tested by

no test coverage detected