Set all campaign templates to default when a used template is deleted
This commit is contained in:
parent
67d65b3a8b
commit
595bdb241a
2 changed files with 19 additions and 4 deletions
13
queries.sql
13
queries.sql
|
@ -335,8 +335,17 @@ WITH u AS (
|
||||||
UPDATE templates SET is_default=false WHERE id != $1;
|
UPDATE templates SET is_default=false WHERE id != $1;
|
||||||
|
|
||||||
-- name: delete-template
|
-- name: delete-template
|
||||||
-- Delete a template as long as there's more than one.
|
-- Delete a template as long as there's more than one. One deletion, set all campaigns
|
||||||
DELETE FROM templates WHERE id=$1 AND (SELECT COUNT(id) FROM templates) > 1 AND is_default = false;
|
-- with that template to the default template instead.
|
||||||
|
WITH tpl AS (
|
||||||
|
DELETE FROM templates WHERE id = $1 AND (SELECT COUNT(id) FROM templates) > 1 AND is_default = false RETURNING id
|
||||||
|
),
|
||||||
|
def AS (
|
||||||
|
SELECT id FROM templates WHERE is_default = true LIMIT 1
|
||||||
|
)
|
||||||
|
UPDATE campaigns SET template_id = (SELECT id FROM def) WHERE (SELECT id FROM tpl) > 0 AND template_id = $1
|
||||||
|
RETURNING (SELECT id FROM tpl);
|
||||||
|
|
||||||
|
|
||||||
-- media
|
-- media
|
||||||
-- name: insert-media
|
-- name: insert-media
|
||||||
|
|
10
templates.go
10
templates.go
|
@ -1,6 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
@ -209,13 +210,18 @@ func handleDeleteTemplate(c echo.Context) error {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest, "Cannot delete the primordial template.")
|
return echo.NewHTTPError(http.StatusBadRequest, "Cannot delete the primordial template.")
|
||||||
}
|
}
|
||||||
|
|
||||||
res, err := app.Queries.DeleteTemplate.Exec(id)
|
var delID int
|
||||||
|
err := app.Queries.DeleteTemplate.Get(&delID, id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
if err == sql.ErrNoRows {
|
||||||
|
return c.JSON(http.StatusOK, okResp{true})
|
||||||
|
}
|
||||||
|
|
||||||
return echo.NewHTTPError(http.StatusBadRequest,
|
return echo.NewHTTPError(http.StatusBadRequest,
|
||||||
fmt.Sprintf("Error deleting template: %v", err))
|
fmt.Sprintf("Error deleting template: %v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, _ := res.RowsAffected(); n == 0 {
|
if delID == 0 {
|
||||||
return echo.NewHTTPError(http.StatusBadRequest,
|
return echo.NewHTTPError(http.StatusBadRequest,
|
||||||
"Cannot delete the last, default, or non-existent template.")
|
"Cannot delete the last, default, or non-existent template.")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue