github.com/machinefi/w3bstream@v1.6.5-rc9.0.20240426031326-b8c7c4876e72/cmd/srv-applet-mgr/apis/projectoperator/pos.go (about)

     1  package projectoperator
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/machinefi/w3bstream/cmd/srv-applet-mgr/apis/middleware"
     7  	"github.com/machinefi/w3bstream/pkg/depends/kit/httptransport/httpx"
     8  	"github.com/machinefi/w3bstream/pkg/modules/projectoperator"
     9  	"github.com/machinefi/w3bstream/pkg/types"
    10  )
    11  
    12  type CreateProjectOperator struct {
    13  	httpx.MethodPost
    14  	ProjectID  types.SFID `in:"path" name:"projectID"`
    15  	OperatorID types.SFID `in:"path" name:"operatorID"`
    16  }
    17  
    18  func (r *CreateProjectOperator) Path() string { return "/:projectID/:operatorID" }
    19  
    20  func (r *CreateProjectOperator) Output(ctx context.Context) (interface{}, error) {
    21  	ctx, err := middleware.MustCurrentAccountFromContext(ctx).
    22  		WithOperatorBySFID(ctx, r.OperatorID)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	ctx, err = middleware.MustCurrentAccountFromContext(ctx).
    27  		WithProjectContextBySFID(ctx, r.ProjectID)
    28  	if err != nil {
    29  		return nil, err
    30  	}
    31  
    32  	return projectoperator.Create(ctx, r.ProjectID, r.OperatorID)
    33  }