From bbed522266deeefe55c677f4ec8ece8b2d936135 Mon Sep 17 00:00:00 2001 From: Tit Petric Date: Tue, 16 Oct 2018 11:56:11 +0200 Subject: [PATCH] upd(crm): return module info from pages --- crm/repository/page.go | 52 +++++++++++++++++++++++++++++++++--------- crm/types/types.go | 8 ++++--- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/crm/repository/page.go b/crm/repository/page.go index e25af5a14..ca612957b 100644 --- a/crm/repository/page.go +++ b/crm/repository/page.go @@ -37,30 +37,60 @@ func (r *page) With(ctx context.Context, db *factory.DB) PageRepository { } func (r *page) FindByID(id uint64) (*types.Page, error) { - mod := &types.Page{} - return mod, r.db().Get(mod, "SELECT * FROM crm_page WHERE id=?", id) + page := &types.Page{} + if err := r.db().Get(page, "SELECT * FROM crm_page WHERE id=?", id); err != nil { + return page, err + } + if err := r.fillModule(page); err != nil { + return page, err + } + return page, nil } func (r *page) FindByModuleID(id uint64) (*types.Page, error) { - mod := &types.Page{} - return mod, r.db().Get(mod, "SELECT * FROM crm_page WHERE module_id=?", id) + 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 page, nil } func (r *page) Find() ([]*types.Page, error) { - mod := make([]*types.Page, 0) - return mod, r.db().Select(&mod, "SELECT * FROM crm_page ORDER BY id ASC") + pages := make([]*types.Page, 0) + if err := r.db().Select(&pages, "SELECT * FROM crm_page ORDER BY id ASC"); err != nil { + return pages, err + } + for _, page := range pages { + if err := r.fillModule(page); err != nil { + return pages, err + } + } + return pages, nil } -func (r *page) Create(mod *types.Page) (*types.Page, error) { - mod.ID = factory.Sonyflake.NextID() - return mod, r.db().Insert("crm_page", mod) +func (r *page) Create(page *types.Page) (*types.Page, error) { + page.ID = factory.Sonyflake.NextID() + return page, r.db().Insert("crm_page", page) } -func (r *page) Update(mod *types.Page) (*types.Page, error) { - return mod, r.db().Replace("crm_page", mod) +func (r *page) Update(page *types.Page) (*types.Page, error) { + return page, r.db().Replace("crm_page", page) } func (r *page) DeleteByID(id uint64) error { _, err := r.db().Exec("DELETE FROM crm_page WHERE id=?", id) return err } + +func (r *page) fillModule(page *types.Page) error { + if page.ModuleID > 0 { + api := Module(r.Context(), r.db()) + module, err := api.FindByID(page.ModuleID) + page.Module = module + return err + } + return nil +} diff --git a/crm/types/types.go b/crm/types/types.go index 7ec11442b..800488756 100644 --- a/crm/types/types.go +++ b/crm/types/types.go @@ -60,9 +60,11 @@ type ( // Page - page structure Page struct { - ID uint64 `json:"id" db:"id"` - SelfID uint64 `json:"selfID" db:"self_id"` - ModuleID uint64 `json:"moduleID" db:"module_id"` + ID uint64 `json:"id" db:"id"` + SelfID uint64 `json:"selfID" db:"self_id"` + + ModuleID uint64 `json:"moduleID" db:"module_id"` + Module *Module `json:"module,omitempty" db:"-"` Title string `json:"title" db:"title"` Description string `json:"description" db:"description"`