From 9d41963d0598e739c91199af5dd3fec16f82a811 Mon Sep 17 00:00:00 2001 From: WithoutPants <53250216+WithoutPants@users.noreply.github.com> Date: Thu, 17 Oct 2019 11:56:08 +1100 Subject: [PATCH] Display error when deleting tag used as primary --- pkg/models/querybuilder_tag.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pkg/models/querybuilder_tag.go b/pkg/models/querybuilder_tag.go index e5ed270c6..16a8bcb82 100644 --- a/pkg/models/querybuilder_tag.go +++ b/pkg/models/querybuilder_tag.go @@ -1,6 +1,7 @@ package models import ( + "errors" "database/sql" "github.com/jmoiron/sqlx" "github.com/stashapp/stash/pkg/database" @@ -63,7 +64,17 @@ func (qb *TagQueryBuilder) Destroy(id string, tx *sqlx.Tx) error { return err } - // does not unset primary_tag_id in scene_markers because it is not nullable + // cannot unset primary_tag_id in scene_markers because it is not nullable + countQuery := "SELECT COUNT(*) as count FROM scene_markers where primary_tag_id = ?" + args := []interface{}{id} + primaryMarkers, err := runCountQuery(countQuery, args) + if err != nil { + return err + } + + if primaryMarkers > 0 { + return errors.New("Cannot delete tag used as a primary tag in scene markers") + } return executeDeleteQuery("tags", id, tx) }