Move logic from repo to store, fix module-check condition

This commit is contained in:
Denis Arh
2018-11-27 06:10:48 +01:00
parent 0881381068
commit 390409ed6a
2 changed files with 31 additions and 22 deletions
-18
View File
@@ -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
View File
@@ -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 {