add comprehensive delete, fix bug in changeparent

This commit is contained in:
Dan Ballard 2015-07-09 07:31:54 -07:00
parent 542932a98b
commit ff1b804cd6
2 changed files with 37 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import (
_ "github.com/lib/pq" _ "github.com/lib/pq"
"fmt" "fmt"
"strings" "strings"
"errors"
) )
type Category struct { type Category struct {
@ -61,9 +62,42 @@ func Add(db *sql.DB, name string, parent int) error {
return err return err
} }
// Get parent id
// Set parent of children to parent
// set category of news to parent
// finallly delete
func Delete(db *sql.DB, id int) error { func Delete(db *sql.DB, id int) error {
rows, err := db.Query("SELECT parent_id FROM categories WHERE id=$1", id)
if err != nil {
fmt.Println("Categories DB Error loading category parent id: ", err)
return err
}
return nil if !rows.Next() {
fmt.Println("Categories DB Error loading category parent id: no category")
return errors.New("No category")
}
var parent_id sql.NullInt64
err = rows.Scan(&parent_id)
_, err = db.Exec("UPDATE categories SET parent_id =$2 WHERE parent_id=$1", id, parent_id)
if err != nil {
fmt.Println("Categories DB error changing child parent: ", err)
return err
}
_, err = db.Exec("UPDATE news SET category_id =$2 WHERE category_id=$1", id, parent_id)
if err != nil {
fmt.Println("Categories DB error changing category of news: ", err)
return err
}
_, err = db.Exec("DELETE FROM categories WHERE id=$1", id)
if err != nil {
fmt.Println("Categories DB Error Delete(): ", err)
}
return err
} }
func (category *Category) ChangeParent(db *sql.DB, parent *Category) error { func (category *Category) ChangeParent(db *sql.DB, parent *Category) error {

View File

@ -266,6 +266,8 @@ func categoryChangeParentHandler(w http.ResponseWriter, r *http.Request, user *u
if category == nil { if category == nil {
session.AddFlash("Invalid category", flash_err) session.AddFlash("Invalid category", flash_err)
} else if parent != nil && category.Id == parent.Id {
session.AddFlash("Cannot set category parent to itself", flash_err)
} else { } else {
err := category.ChangeParent(db, parent) err := category.ChangeParent(db, parent)
if err != nil { if err != nil {