add(crm): page info for modules
This commit is contained in:
@@ -44,7 +44,13 @@ func (r *module) With(ctx context.Context, db *factory.DB) ModuleRepository {
|
||||
|
||||
func (r *module) FindByID(id uint64) (*types.Module, error) {
|
||||
mod := &types.Module{}
|
||||
return mod, r.db().Get(mod, "SELECT * FROM crm_module WHERE id=?", id)
|
||||
if err := r.db().Get(mod, "SELECT * FROM crm_module WHERE id=?", id); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := r.fillPage(mod); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return mod, nil
|
||||
}
|
||||
|
||||
func (r *module) Find() ([]*types.Module, error) {
|
||||
@@ -110,3 +116,9 @@ func (r *module) FieldNames(mod *types.Module) ([]string, error) {
|
||||
return result, nil
|
||||
}
|
||||
}
|
||||
|
||||
func (r *module) fillPage(mod *types.Module) (err error) {
|
||||
api := Page(r.Context(), r.db())
|
||||
mod.Page, err = api.FindByModuleID(mod.ID)
|
||||
return
|
||||
}
|
||||
|
||||
+11
-4
@@ -3,6 +3,7 @@ package repository
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"github.com/titpetric/factory"
|
||||
|
||||
"github.com/crusttech/crust/crm/types"
|
||||
@@ -50,10 +51,7 @@ func (r *page) FindByID(id uint64) (*types.Page, error) {
|
||||
func (r *page) FindByModuleID(id uint64) (*types.Page, error) {
|
||||
page := &types.Page{}
|
||||
if err := r.db().Get(page, "SELECT * FROM crm_page WHERE module_id=?", id); err != nil {
|
||||
return page, err
|
||||
}
|
||||
if err := r.fillModule(page); err != nil {
|
||||
return page, err
|
||||
return nil, err
|
||||
}
|
||||
return page, nil
|
||||
}
|
||||
@@ -73,6 +71,15 @@ func (r *page) Find() ([]*types.Page, error) {
|
||||
|
||||
func (r *page) Create(page *types.Page) (*types.Page, error) {
|
||||
page.ID = factory.Sonyflake.NextID()
|
||||
if page.ModuleID > 0 {
|
||||
check, err := r.FindByModuleID(page.ModuleID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if check.ID > 0 {
|
||||
return nil, errors.New("Page for module already exists")
|
||||
}
|
||||
}
|
||||
return page, r.db().Insert("crm_page", page)
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,8 @@ type (
|
||||
Name string `json:"name" db:"name"`
|
||||
Fields types.JSONText `json:"fields" db:"json"`
|
||||
|
||||
Page *Page `json:"page,omitempty"`
|
||||
|
||||
CreatedAt time.Time `db:"created_at" json:"createdAt,omitempty"`
|
||||
UpdatedAt *time.Time `db:"updated_at" json:"updatedAt,omitempty"`
|
||||
DeletedAt *time.Time `db:"deleted_at" json:"deletedAt,omitempty"`
|
||||
|
||||
Reference in New Issue
Block a user