From 5ecdddbacb2e0a845d854229fffe9313682be7c1 Mon Sep 17 00:00:00 2001 From: Ryo Date: Tue, 26 Aug 2025 16:04:49 +0800 Subject: [PATCH] fix(prompt): disallow update if prompt is empty (#1816) --- backend/application/prompt/prompt.go | 6 +----- .../prompt/internal/dal/prompt_resource.go | 16 ++++++++-------- backend/domain/prompt/repository/repository.go | 2 +- backend/domain/prompt/service/prompt.go | 2 +- backend/domain/prompt/service/prompt_impl.go | 4 ++-- 5 files changed, 13 insertions(+), 17 deletions(-) diff --git a/backend/application/prompt/prompt.go b/backend/application/prompt/prompt.go index 3e9d1885..b6aff2b0 100644 --- a/backend/application/prompt/prompt.go +++ b/backend/application/prompt/prompt.go @@ -199,11 +199,7 @@ func (p *PromptApplicationService) updatePromptResource(ctx context.Context, req return nil, errorx.New(errno.ErrPromptPermissionCode, errorx.KV("msg", "no permission")) } - promptResource.Name = req.Prompt.GetName() - promptResource.Description = req.Prompt.GetDescription() - promptResource.PromptText = req.Prompt.GetPromptText() - - err = p.DomainSVC.UpdatePromptResource(ctx, promptResource) + err = p.DomainSVC.UpdatePromptResource(ctx, promptID, req.Prompt.Name, req.Prompt.Description, req.Prompt.PromptText) if err != nil { return nil, err } diff --git a/backend/domain/prompt/internal/dal/prompt_resource.go b/backend/domain/prompt/internal/dal/prompt_resource.go index e0a703cd..3d91c1d7 100644 --- a/backend/domain/prompt/internal/dal/prompt_resource.go +++ b/backend/domain/prompt/internal/dal/prompt_resource.go @@ -116,24 +116,24 @@ func (d *PromptDAO) GetPromptResource(ctx context.Context, promptID int64) (*ent return do, nil } -func (d *PromptDAO) UpdatePromptResource(ctx context.Context, p *entity.PromptResource) error { +func (d *PromptDAO) UpdatePromptResource(ctx context.Context, promptID int64, name, description, promptText *string) error { updateMap := make(map[string]any, 5) - if p.Name != "" { - updateMap["name"] = p.Name + if name != nil { + updateMap["name"] = *name } - if p.Description != "" { - updateMap["description"] = p.Description + if description != nil { + updateMap["description"] = *description } - if p.PromptText != "" { - updateMap["prompt_text"] = p.PromptText + if promptText != nil { + updateMap["prompt_text"] = *promptText } promptModel := query.PromptResource promptWhere := []gen.Condition{ - promptModel.ID.Eq(p.ID), + promptModel.ID.Eq(promptID), } _, err := promptModel.WithContext(ctx).Where(promptWhere...).Updates(updateMap) diff --git a/backend/domain/prompt/repository/repository.go b/backend/domain/prompt/repository/repository.go index 42fbbade..68794bbf 100644 --- a/backend/domain/prompt/repository/repository.go +++ b/backend/domain/prompt/repository/repository.go @@ -33,6 +33,6 @@ func NewPromptRepo(db *gorm.DB, generator idgen.IDGenerator) PromptRepository { type PromptRepository interface { CreatePromptResource(ctx context.Context, do *entity.PromptResource) (int64, error) GetPromptResource(ctx context.Context, promptID int64) (*entity.PromptResource, error) - UpdatePromptResource(ctx context.Context, p *entity.PromptResource) error + UpdatePromptResource(ctx context.Context, promptID int64, name, description, promptText *string) error DeletePromptResource(ctx context.Context, ID int64) error } diff --git a/backend/domain/prompt/service/prompt.go b/backend/domain/prompt/service/prompt.go index a41fc87c..5c7e906a 100644 --- a/backend/domain/prompt/service/prompt.go +++ b/backend/domain/prompt/service/prompt.go @@ -25,7 +25,7 @@ import ( type Prompt interface { CreatePromptResource(ctx context.Context, p *entity.PromptResource) (int64, error) GetPromptResource(ctx context.Context, promptID int64) (*entity.PromptResource, error) - UpdatePromptResource(ctx context.Context, p *entity.PromptResource) error + UpdatePromptResource(ctx context.Context, promptID int64, name, description, promptText *string) error DeletePromptResource(ctx context.Context, promptID int64) error ListOfficialPromptResource(ctx context.Context, keyword string) ([]*entity.PromptResource, error) diff --git a/backend/domain/prompt/service/prompt_impl.go b/backend/domain/prompt/service/prompt_impl.go index 091eb483..cb0e0186 100644 --- a/backend/domain/prompt/service/prompt_impl.go +++ b/backend/domain/prompt/service/prompt_impl.go @@ -40,8 +40,8 @@ func (s *promptService) CreatePromptResource(ctx context.Context, p *entity.Prom return s.Repo.CreatePromptResource(ctx, p) } -func (s *promptService) UpdatePromptResource(ctx context.Context, p *entity.PromptResource) error { - return s.Repo.UpdatePromptResource(ctx, p) +func (s *promptService) UpdatePromptResource(ctx context.Context, promptID int64, name, description, promptText *string) error { + return s.Repo.UpdatePromptResource(ctx, promptID, name, description, promptText) } func (s *promptService) GetPromptResource(ctx context.Context, promptID int64) (*entity.PromptResource, error) {