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 }