Move logic from repo to store, fix module-check condition
This commit is contained in:
@@ -114,15 +114,6 @@ func (r *page) Create(item *types.Page) (*types.Page, error) {
|
||||
*page = *item
|
||||
|
||||
page.ID = factory.Sonyflake.NextID()
|
||||
if page.ModuleID > 0 {
|
||||
if check, err := r.FindByModuleID(page.ModuleID); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
if check.ID > 0 {
|
||||
return nil, errors.New("Page for module already exists")
|
||||
}
|
||||
}
|
||||
}
|
||||
return page, r.db().Insert("crm_page", page)
|
||||
}
|
||||
|
||||
@@ -130,15 +121,6 @@ func (r *page) Update(page *types.Page) (*types.Page, error) {
|
||||
if page.ID == 0 {
|
||||
return nil, errors.New("Error when savig page, invalid ID")
|
||||
}
|
||||
if page.ModuleID > 0 {
|
||||
if check, err := r.FindByModuleID(page.ModuleID); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
if check.ID != page.ID {
|
||||
return nil, errors.New("Page for this module already exists")
|
||||
}
|
||||
}
|
||||
}
|
||||
return page, r.db().Replace("crm_page", page)
|
||||
}
|
||||
|
||||
|
||||
+31
-4
@@ -2,7 +2,9 @@ package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"github.com/titpetric/factory"
|
||||
|
||||
"github.com/crusttech/crust/crm/repository"
|
||||
@@ -100,12 +102,37 @@ func (s *page) Reorder(selfID uint64, pageIDs []uint64) error {
|
||||
return s.repository.Reorder(selfID, pageIDs)
|
||||
}
|
||||
|
||||
func (s *page) Create(mod *types.Page) (*types.Page, error) {
|
||||
return s.repository.Create(mod)
|
||||
func (s *page) Create(mod *types.Page) (p *types.Page, err error) {
|
||||
return p, s.db.Transaction(func() (err error) {
|
||||
if mod.ModuleID > 0 {
|
||||
// @todo check if module exists!
|
||||
if p, err = s.repository.FindByModuleID(mod.ModuleID); err != nil {
|
||||
return err
|
||||
} else if p.ID > 0 {
|
||||
return errors.New("Page for module already exists")
|
||||
}
|
||||
}
|
||||
|
||||
p, err = s.repository.Create(mod)
|
||||
return
|
||||
})
|
||||
}
|
||||
|
||||
func (s *page) Update(mod *types.Page) (*types.Page, error) {
|
||||
return s.repository.Update(mod)
|
||||
func (s *page) Update(mod *types.Page) (p *types.Page, err error) {
|
||||
return p, s.db.Transaction(func() (err error) {
|
||||
if mod.ModuleID > 0 {
|
||||
// @todo check if module exists!
|
||||
if p, err = s.repository.FindByModuleID(mod.ModuleID); err != nil {
|
||||
return err
|
||||
} else if p.ID > 0 && mod.ID != p.ID {
|
||||
spew.Dump(mod, p)
|
||||
return errors.New("Page for module already exists")
|
||||
}
|
||||
}
|
||||
|
||||
p, err = s.repository.Update(mod)
|
||||
return
|
||||
})
|
||||
}
|
||||
|
||||
func (s *page) DeleteByID(id uint64) error {
|
||||
|
||||
Reference in New Issue
Block a user