github.com/machinefi/w3bstream@v1.6.5-rc9.0.20240426031326-b8c7c4876e72/cmd/srv-applet-mgr/apis/project/pos.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  )
    12  
    13  type CreateProject struct {
    14  	httpx.MethodPost
    15  	project.CreateReq `in:"body"`
    16  }
    17  
    18  func (r *CreateProject) Output(ctx context.Context) (interface{}, error) {
    19  	acc := middleware.MustCurrentAccountFromContext(ctx)
    20  	ctx = acc.WithAccount(ctx)
    21  
    22  	prefix, err := middleware.ProjectNameModifier(ctx)
    23  	if err != nil {
    24  		return nil, err
    25  	}
    26  	r.Name = prefix + r.Name
    27  
    28  	// make sure monitor and metrics deleted
    29  	blockchain.RemoveMonitor(ctx, r.Name)
    30  	metrics.RemoveMetrics(ctx, acc.AccountID.String(), r.Name)
    31  
    32  	rsp, err := project.Create(ctx, &r.CreateReq)
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	rsp.Name, _ = middleware.ProjectNameForDisplay(rsp.Name)
    37  	return rsp, nil
    38  }