// Code scaffolded by goctl. Safe to edit. // goctl 1.10.2 package logic import ( "context" "strings" "udeServer/internal/apierr" "udeServer/internal/model" "udeServer/internal/svc" "udeServer/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type CreateKeyLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewCreateKeyLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CreateKeyLogic { return &CreateKeyLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *CreateKeyLogic) CreateKey(req *types.CreateKeyReq) (*types.KeyResp, error) { name := strings.TrimSpace(req.Name) if name == "" { return nil, apierr.BadRequest("name is required") } iden := newKeyIden() content, err := deriveKeyContent(iden) if err != nil { l.Errorf("derive key content failed: %v", err) return nil, err } data := &model.TKey{ Iden: nullString(iden), Name: nullString(name), Content: nullString(content), Status: nullString(keyDefaultStatus), } result, err := l.svcCtx.KeyModel.Insert(l.ctx, data) if err != nil { l.Errorf("insert key failed: %v", err) return nil, err } id, err := result.LastInsertId() if err != nil { l.Errorf("get inserted key id failed: %v", err) return nil, err } created, err := findKey(l.ctx, l.svcCtx.KeyModel, id) if err != nil { return nil, err } return toKeyResp(created), nil }