Merge pull request #520 from trheyi/main
[add] builder page create and remove apis
This commit is contained in:
commit
20db5348a6
6 changed files with 65 additions and 32 deletions
|
|
@ -118,10 +118,10 @@ var dsl = []byte(`
|
||||||
"in": ["$param.id", "$param.template_id", "$param.route", ":context"],
|
"in": ["$param.id", "$param.template_id", "$param.route", ":context"],
|
||||||
"out": { "status": 200, "type": "application/json" }
|
"out": { "status": 200, "type": "application/json" }
|
||||||
},{
|
},{
|
||||||
"path": "/:id/page/create/:template_id/*route",
|
"path": "/:id/page/create/:template_id",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
"process": "sui.Page.Create",
|
"process": "sui.Page.Create",
|
||||||
"in": ["$param.id", "$param.template_id", "$param.route", ":context"],
|
"in": ["$param.id", "$param.template_id", ":payload", ":context"],
|
||||||
"out": { "status": 200, "type": "application/json" }
|
"out": { "status": 200, "type": "application/json" }
|
||||||
},{
|
},{
|
||||||
"path": "/:id/page/exist/:template_id/*route",
|
"path": "/:id/page/exist/:template_id/*route",
|
||||||
|
|
|
||||||
|
|
@ -457,7 +457,7 @@ func PageSave(process *process.Process) interface{} {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
page, err = tmpl.CreatePage(route)
|
page, err = tmpl.CreateEmptyPage(route, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
@ -499,7 +499,7 @@ func PageSaveTemp(process *process.Process) interface{} {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
page, err = tmpl.CreatePage(route)
|
page, err = tmpl.CreateEmptyPage(route, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
@ -530,14 +530,23 @@ func PageCreate(process *process.Process) interface{} {
|
||||||
process.ValidateArgNums(3)
|
process.ValidateArgNums(3)
|
||||||
sui := get(process)
|
sui := get(process)
|
||||||
templateID := process.ArgsString(1)
|
templateID := process.ArgsString(1)
|
||||||
route := route(process, 2)
|
payload := process.ArgsMap(2, map[string]interface{}{})
|
||||||
|
|
||||||
tmpl, err := sui.GetTemplate(templateID)
|
tmpl, err := sui.GetTemplate(templateID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
||||||
page, err := tmpl.CreatePage(route)
|
route, ok := payload["route"].(string)
|
||||||
|
if !ok {
|
||||||
|
exception.New("the route is required", 400).Throw()
|
||||||
|
}
|
||||||
|
title := route
|
||||||
|
if v, ok := payload["title"].(string); ok {
|
||||||
|
title = v
|
||||||
|
}
|
||||||
|
setting := &core.PageSetting{Title: title}
|
||||||
|
page, err := tmpl.CreateEmptyPage(route, setting)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
@ -548,7 +557,7 @@ func PageCreate(process *process.Process) interface{} {
|
||||||
|
|
||||||
source, err := getSource(process)
|
source, err := getSource(process)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if source == nil {
|
if source == nil {
|
||||||
|
|
@ -574,6 +583,10 @@ func PageRemove(process *process.Process) interface{} {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !tmpl.PageExist(route) {
|
||||||
|
exception.New("page does not exists!", 400).Throw()
|
||||||
|
}
|
||||||
|
|
||||||
err = tmpl.RemovePage(route)
|
err = tmpl.RemovePage(route)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
exception.New(err.Error(), 500).Throw()
|
exception.New(err.Error(), 500).Throw()
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ type ITemplate interface {
|
||||||
PageTree(route string) ([]*PageTreeNode, error)
|
PageTree(route string) ([]*PageTreeNode, error)
|
||||||
Page(route string) (IPage, error)
|
Page(route string) (IPage, error)
|
||||||
PageExist(route string) bool
|
PageExist(route string) bool
|
||||||
CreatePage(route string) (IPage, error)
|
CreateEmptyPage(route string, setting *PageSetting) (IPage, error)
|
||||||
RemovePage(route string) error
|
RemovePage(route string) error
|
||||||
GetPageFromAsset(asset string) (IPage, error)
|
GetPageFromAsset(asset string) (IPage, error)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -163,25 +163,28 @@ type Request struct {
|
||||||
|
|
||||||
// RequestSource is the struct for the request
|
// RequestSource is the struct for the request
|
||||||
type RequestSource struct {
|
type RequestSource struct {
|
||||||
UID string `json:"uid"`
|
UID string `json:"uid"`
|
||||||
User string `json:"user,omitempty"`
|
User string `json:"user,omitempty"`
|
||||||
Page *SourceData `json:"page,omitempty"`
|
Page *SourceData `json:"page,omitempty"`
|
||||||
Style *SourceData `json:"style,omitempty"`
|
Style *SourceData `json:"style,omitempty"`
|
||||||
Script *SourceData `json:"script,omitempty"`
|
Script *SourceData `json:"script,omitempty"`
|
||||||
Data *SourceData `json:"data,omitempty"`
|
Data *SourceData `json:"data,omitempty"`
|
||||||
Board *BoardSourceData `json:"board,omitempty"`
|
Board *BoardSourceData `json:"board,omitempty"`
|
||||||
Mock *PageMock `json:"mock,omitempty"`
|
Mock *PageMock `json:"mock,omitempty"`
|
||||||
Setting *PageSetting `json:"setting,omitempty"`
|
Setting *PageSetting `json:"setting,omitempty"`
|
||||||
NeedToSave struct {
|
NeedToSave ReqeustSourceNeedToSave `json:"needToSave,omitempty"`
|
||||||
Page bool `json:"page,omitempty"`
|
}
|
||||||
Style bool `json:"style,omitempty"`
|
|
||||||
Script bool `json:"script,omitempty"`
|
// ReqeustSourceNeedToSave is the struct for the request
|
||||||
Data bool `json:"data,omitempty"`
|
type ReqeustSourceNeedToSave struct {
|
||||||
Board bool `json:"board,omitempty"`
|
Page bool `json:"page,omitempty"`
|
||||||
Mock bool `json:"mock,omitempty"`
|
Style bool `json:"style,omitempty"`
|
||||||
Setting bool `json:"setting,omitempty"`
|
Script bool `json:"script,omitempty"`
|
||||||
Validate bool `json:"validate,omitempty"`
|
Data bool `json:"data,omitempty"`
|
||||||
} `json:"needToSave,omitempty"`
|
Board bool `json:"board,omitempty"`
|
||||||
|
Mock bool `json:"mock,omitempty"`
|
||||||
|
Setting bool `json:"setting,omitempty"`
|
||||||
|
Validate bool `json:"validate,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResponseEditorRender is the struct for the response
|
// ResponseEditorRender is the struct for the response
|
||||||
|
|
|
||||||
|
|
@ -186,6 +186,8 @@ func (tmpl *Template) RemovePage(route string) error {
|
||||||
|
|
||||||
path := filepath.Join(tmpl.Root, route)
|
path := filepath.Join(tmpl.Root, route)
|
||||||
name := filepath.Base(path) + ".*"
|
name := filepath.Base(path) + ".*"
|
||||||
|
name = strings.ReplaceAll(name, "[", "\\[")
|
||||||
|
name = strings.ReplaceAll(name, "]", "\\]")
|
||||||
err := tmpl.local.fs.Walk(path, func(root, file string, isdir bool) error {
|
err := tmpl.local.fs.Walk(path, func(root, file string, isdir bool) error {
|
||||||
if isdir {
|
if isdir {
|
||||||
return nil
|
return nil
|
||||||
|
|
@ -210,15 +212,15 @@ func (tmpl *Template) RemovePage(route string) error {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreatePage create a new page
|
// CreateEmptyPage create a new empty
|
||||||
func (tmpl *Template) CreatePage(route string) (core.IPage, error) {
|
func (tmpl *Template) CreateEmptyPage(route string, setting *core.PageSetting) (core.IPage, error) {
|
||||||
if tmpl.PageExist(route) {
|
if tmpl.PageExist(route) {
|
||||||
return nil, fmt.Errorf("Page %s already exist", route)
|
return nil, fmt.Errorf("Page %s already exist", route)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the page directory
|
// Create the page directory
|
||||||
name := tmpl.getPageBase(route)
|
name := tmpl.getPageBase(route)
|
||||||
return &Page{
|
page := &Page{
|
||||||
tmpl: tmpl,
|
tmpl: tmpl,
|
||||||
Page: &core.Page{
|
Page: &core.Page{
|
||||||
Route: route,
|
Route: route,
|
||||||
|
|
@ -235,7 +237,22 @@ func (tmpl *Template) CreatePage(route string) (core.IPage, error) {
|
||||||
CONF: core.Source{File: fmt.Sprintf("%s.config", name)},
|
CONF: core.Source{File: fmt.Sprintf("%s.config", name)},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}, nil
|
}
|
||||||
|
|
||||||
|
title := route
|
||||||
|
if setting != nil {
|
||||||
|
title = setting.Title
|
||||||
|
}
|
||||||
|
|
||||||
|
err := page.Save(&core.RequestSource{
|
||||||
|
Page: &core.SourceData{Source: fmt.Sprintf("<div>%s</div>", title), Language: "html"},
|
||||||
|
Setting: setting,
|
||||||
|
NeedToSave: core.ReqeustSourceNeedToSave{Page: true, Setting: true},
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return page, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remove remove the page
|
// Remove remove the page
|
||||||
|
|
|
||||||
|
|
@ -474,7 +474,7 @@ func TestPageSave(t *testing.T) {
|
||||||
req := &core.RequestSource{UID: "19e09e7e-9e19-44c1-bbab-2a55c51c9df3"}
|
req := &core.RequestSource{UID: "19e09e7e-9e19-44c1-bbab-2a55c51c9df3"}
|
||||||
jsoniter.Unmarshal([]byte(payload), &req)
|
jsoniter.Unmarshal([]byte(payload), &req)
|
||||||
|
|
||||||
page, err := tmpl.CreatePage("/unit-test")
|
page, err := tmpl.CreateEmptyPage("/unit-test", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Page error: %v", err)
|
t.Fatalf("Page error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue