Add support for fetching record-pages only, change behavior of a /page/tree endpoint
/page/tree now returns only non-module (non-record) pages /page endpoint now accepts optional recordPagesOnly param
This commit is contained in:
@@ -96,7 +96,7 @@
|
||||
"type": "uint64",
|
||||
"name": "moduleID",
|
||||
"required": false,
|
||||
"title": "Module ID (optional)"
|
||||
"title": "Module ID"
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
@@ -145,7 +145,7 @@
|
||||
"name": "tree",
|
||||
"path": "/tree",
|
||||
"method": "GET",
|
||||
"title": "Get page all pages, hierarchically",
|
||||
"title": "Get page all (non-record) pages, hierarchically",
|
||||
"parameters": {}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
{
|
||||
"name": "moduleID",
|
||||
"required": false,
|
||||
"title": "Module ID (optional)",
|
||||
"title": "Module ID",
|
||||
"type": "uint64"
|
||||
},
|
||||
{
|
||||
@@ -90,7 +90,7 @@
|
||||
{
|
||||
"Name": "tree",
|
||||
"Method": "GET",
|
||||
"Title": "Get page all pages, hierarchically",
|
||||
"Title": "Get page all (non-record) pages, hierarchically",
|
||||
"Path": "/tree",
|
||||
"Parameters": {}
|
||||
},
|
||||
|
||||
@@ -15,7 +15,8 @@ type (
|
||||
FindByID(id uint64) (*types.Page, error)
|
||||
FindByModuleID(id uint64) (*types.Page, error)
|
||||
FindBySelfID(selfID uint64) (types.PageSet, error)
|
||||
FindAll() (types.PageSet, error)
|
||||
Find() (types.PageSet, error)
|
||||
FindRecordPages() (types.PageSet, error)
|
||||
|
||||
Create(mod *types.Page) (*types.Page, error)
|
||||
Update(mod *types.Page) (*types.Page, error)
|
||||
@@ -55,6 +56,10 @@ func (r *page) FindByModuleID(id uint64) (*types.Page, error) {
|
||||
return page, nil
|
||||
}
|
||||
|
||||
func (r *page) FindRecordPages() (set types.PageSet, err error) {
|
||||
return set, r.db().Select(&set, "SELECT * FROM crm_page WHERE module_id > 0")
|
||||
}
|
||||
|
||||
func (r *page) FindBySelfID(selfID uint64) (types.PageSet, error) {
|
||||
pages := types.PageSet{}
|
||||
if err := r.db().Select(&pages, "SELECT * FROM crm_page WHERE self_id = ? ORDER BY weight ASC", selfID); err != nil {
|
||||
@@ -63,9 +68,9 @@ func (r *page) FindBySelfID(selfID uint64) (types.PageSet, error) {
|
||||
return pages, nil
|
||||
}
|
||||
|
||||
func (r *page) FindAll() (types.PageSet, error) {
|
||||
pages := types.PageSet{}
|
||||
return pages, r.db().Select(&pages, "SELECT * FROM crm_page ORDER BY self_id, weight ASC")
|
||||
// Find returns all of non-record pages
|
||||
func (r *page) Find() (set types.PageSet, err error) {
|
||||
return set, r.db().Select(&set, "SELECT * FROM crm_page WHERE module_id = 0 ORDER BY self_id, weight ASC")
|
||||
}
|
||||
|
||||
func (r *page) Reorder(selfID uint64, pageIDs []uint64) error {
|
||||
|
||||
@@ -26,6 +26,7 @@ type (
|
||||
FindByModuleID(moduleID uint64) (*types.Page, error)
|
||||
FindBySelfID(selfID uint64) (pages types.PageSet, err error)
|
||||
Tree() (pages types.PageSet, err error)
|
||||
FindRecordPages() (pages types.PageSet, err error)
|
||||
|
||||
Create(page *types.Page) (*types.Page, error)
|
||||
Update(page *types.Page) (*types.Page, error)
|
||||
@@ -89,14 +90,13 @@ func (s *page) Tree() (pages types.PageSet, err error) {
|
||||
var tree types.PageSet
|
||||
|
||||
return tree, s.db.Transaction(func() (err error) {
|
||||
if pages, err = s.pageRepo.FindAll(); err != nil {
|
||||
if pages, err = s.pageRepo.Find(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err = s.preloadAll(pages); err != nil {
|
||||
return
|
||||
}
|
||||
// No preloading - we do not need (or should have) any modules
|
||||
|
||||
// associated with us
|
||||
_ = pages.Walk(func(p *types.Page) error {
|
||||
if p.SelfID == 0 {
|
||||
tree = append(tree, p)
|
||||
@@ -117,6 +117,20 @@ func (s *page) Tree() (pages types.PageSet, err error) {
|
||||
})
|
||||
}
|
||||
|
||||
func (s *page) FindRecordPages() (pages types.PageSet, err error) {
|
||||
return pages, s.db.Transaction(func() (err error) {
|
||||
if pages, err = s.pageRepo.FindRecordPages(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err = s.preloadAll(pages); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (s *page) Reorder(selfID uint64, pageIDs []uint64) error {
|
||||
return s.pageRepo.Reorder(selfID, pageIDs)
|
||||
}
|
||||
|
||||
@@ -90,6 +90,14 @@ func TestPage(t *testing.T) {
|
||||
prevPageCount = len(ms)
|
||||
}
|
||||
|
||||
// fetch all record pages
|
||||
{
|
||||
ms, err := repository.FindRecordPages()
|
||||
assert(t, err == nil, "Error when retrieving pages: %+v", err)
|
||||
assert(t, len(ms) >= 1, "Expected at least one page, got %d", len(ms))
|
||||
prevPageCount = len(ms)
|
||||
}
|
||||
|
||||
// fetch all pages
|
||||
{
|
||||
ms, err := repository.FindBySelfID(m.ID)
|
||||
|
||||
@@ -430,7 +430,7 @@ CRM module pages
|
||||
| Parameter | Type | Method | Description | Default | Required? |
|
||||
| --------- | ---- | ------ | ----------- | ------- | --------- |
|
||||
| selfID | uint64 | POST | Parent Page ID | N/A | NO |
|
||||
| moduleID | uint64 | POST | Module ID (optional) | N/A | NO |
|
||||
| moduleID | uint64 | POST | Module ID | N/A | NO |
|
||||
| title | string | POST | Title | N/A | YES |
|
||||
| description | string | POST | Description | N/A | NO |
|
||||
| visible | bool | POST | Visible in navigation | N/A | NO |
|
||||
@@ -450,7 +450,7 @@ CRM module pages
|
||||
| --------- | ---- | ------ | ----------- | ------- | --------- |
|
||||
| pageID | uint64 | PATH | Page ID | N/A | YES |
|
||||
|
||||
## Get page all pages, hierarchically
|
||||
## Get page all (non-record) pages, hierarchically
|
||||
|
||||
#### Method
|
||||
|
||||
|
||||
Reference in New Issue
Block a user