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 }