add comprehensive delete, fix bug in changeparent
This commit is contained in:
parent
542932a98b
commit
ff1b804cd6
|
@ -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 {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue