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

     1  package project
     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/blockchain"
     9  	"github.com/machinefi/w3bstream/pkg/modules/metrics"
    10  	"github.com/machinefi/w3bstream/pkg/modules/project"
    11  	"github.com/machinefi/w3bstream/pkg/types"
    12  )
    13  
    14  type RemoveProject struct {
    15  	httpx.MethodDelete
    16  }
    17  
    18  func (r *RemoveProject) Output(ctx context.Context) (interface{}, error) {
    19  	name := middleware.MustProjectName(ctx)
    20  	acc := middleware.MustCurrentAccountFromContext(ctx)
    21  	ctx, err := acc.WithProjectContextByName(ctx, name)
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  	// TODO @zhiran  move this to bff request
    26  	// TODO: del op should be BASE among async modules
    27  	if err := blockchain.RemoveMonitor(ctx, name); err != nil {
    28  		return nil, err
    29  	}
    30  
    31  	metrics.RemoveMetrics(ctx, acc.AccountID.String(), name)
    32  
    33  	v := types.MustProjectFromContext(ctx)
    34  	return nil, project.RemoveBySFID(ctx, v.ProjectID)
    35  }