|
@@ -7,6 +7,12 @@ import (
|
|
|
|
|
|
func (this *Modules) blog_ActionCategoryAdd(wrap *wrapper.Wrapper, pf_id, pf_name, pf_alias, pf_parent string) error {
|
|
func (this *Modules) blog_ActionCategoryAdd(wrap *wrapper.Wrapper, pf_id, pf_name, pf_alias, pf_parent string) error {
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
|
|
+ // Block rows
|
|
|
|
+ if _, err := tx.Exec("SELECT id FROM blog_cats FOR UPDATE;"); err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // Process
|
|
if _, err := tx.Exec("SELECT @mr := rgt FROM blog_cats WHERE id = ?;", pf_parent); err != nil {
|
|
if _, err := tx.Exec("SELECT @mr := rgt FROM blog_cats WHERE id = ?;", pf_parent); err != nil {
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
@@ -32,6 +38,7 @@ func (this *Modules) blog_ActionCategoryUpdate(wrap *wrapper.Wrapper, pf_id, pf_
|
|
if utils.StrToInt(pf_parent) == parentId {
|
|
if utils.StrToInt(pf_parent) == parentId {
|
|
// If parent not changed, just update category data
|
|
// If parent not changed, just update category data
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
|
|
+ // Process
|
|
if _, err := tx.Exec(`
|
|
if _, err := tx.Exec(`
|
|
UPDATE blog_cats SET
|
|
UPDATE blog_cats SET
|
|
name = ?,
|
|
name = ?,
|
|
@@ -52,6 +59,11 @@ func (this *Modules) blog_ActionCategoryUpdate(wrap *wrapper.Wrapper, pf_id, pf_
|
|
|
|
|
|
// Parent is changed, move category to new parent
|
|
// Parent is changed, move category to new parent
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
return wrap.DBTrans(func(tx *wrapper.Tx) error {
|
|
|
|
+ // Block rows
|
|
|
|
+ if _, err := tx.Exec("SELECT id FROM blog_cats FOR UPDATE;"); err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
// Shift
|
|
// Shift
|
|
if _, err := tx.Exec("SELECT @ml := lft, @mr := rgt FROM blog_cats WHERE id = ?;", pf_id); err != nil {
|
|
if _, err := tx.Exec("SELECT @ml := lft, @mr := rgt FROM blog_cats WHERE id = ?;", pf_id); err != nil {
|
|
return err
|
|
return err
|