3
0

Add provision for old -> new page setup

This commit is contained in:
Tomaž Jerman
2023-04-02 15:27:47 +02:00
committed by Jože Fortun
parent 9ec7139c84
commit c16307476c
2 changed files with 138 additions and 2 deletions
+136
View File
@@ -0,0 +1,136 @@
package provision
import (
"context"
"github.com/cortezaproject/corteza/server/compose/types"
"github.com/cortezaproject/corteza/server/pkg/filter"
"github.com/cortezaproject/corteza/server/store"
"github.com/cortezaproject/corteza/server/system/service"
"go.uber.org/zap"
)
func migratePages(ctx context.Context, log *zap.Logger, s store.Storer) (err error) {
layouts, _, err := store.SearchComposePageLayouts(ctx, s, types.PageLayoutFilter{})
if err != nil {
return
}
// Probably already ran, no need to continue
if len(layouts) > 0 {
return
}
var (
crs *filter.PagingCursor
pages types.PageSet
auxf types.PageFilter
)
return store.Tx(ctx, s, func(ctx context.Context, s store.Storer) (err error) {
for {
pages, auxf, err = store.SearchComposePages(ctx, s, types.PageFilter{
Deleted: filter.StateInclusive,
Paging: filter.Paging{
PageCursor: crs,
},
})
if err != nil {
return
}
if len(pages) == 0 {
break
}
err = migratePageChunk(ctx, s, pages)
if err != nil {
return
}
crs = auxf.Paging.PageCursor
if crs == nil {
break
}
}
return nil
})
}
func migratePageChunk(ctx context.Context, s store.Storer, pages types.PageSet) (err error) {
n := now()
for _, p := range pages {
// Base layout
ly := &types.PageLayout{
ID: nextID(),
NamespaceID: p.NamespaceID,
PageID: p.ID,
Handle: "primary",
Primary: true,
Weight: 1,
Meta: types.PageLayoutMeta{
Title: p.Title,
Description: p.Description,
},
Config: types.PageLayoutConfig{
Buttons: extractPageButtons(p),
},
CreatedAt: *n,
UpdatedAt: n,
DeletedAt: p.DeletedAt,
}
// Blocks
for _, b := range p.Blocks {
b.XYWH = adjustBlockScale(b.XYWH, 12, 48)
ly.Blocks = append(ly.Blocks, types.PageBlock{
BlockID: b.BlockID,
XYWH: b.XYWH,
})
}
err = store.UpsertComposePage(ctx, s, p)
if err != nil {
return
}
err = store.UpsertComposePageLayout(ctx, s, ly)
if err != nil {
return
}
}
return
}
func extractPageButtons(p *types.Page) (out *types.PageLayoutButtonConfig) {
ss := service.CurrentSettings.Compose.UI.RecordToolbar
if p.ModuleID == 0 {
return
}
out = &types.PageLayoutButtonConfig{}
out.New.Enabled = !ss.HideNew
out.Edit.Enabled = !ss.HideEdit
out.Submit.Enabled = !ss.HideSubmit
out.Delete.Enabled = !ss.HideDelete
out.Clone.Enabled = !ss.HideClone
out.Back.Enabled = !ss.HideBack
return
}
func adjustBlockScale(b [4]int, prev, new int) [4]int {
for i, v := range b {
b[i] = v * new / prev
}
return b
}
+2 -2
View File
@@ -23,8 +23,8 @@ func Run(ctx context.Context, log *zap.Logger, s store.Storer, provisionOpt opti
// Note,
ffn := []func() error{
// Migrations:
// (placeholder for all post 2022.3.x modifications)
func() error { return migrateReports(ctx, log.Named("reports"), s) },
// (placeholder for all post 2022.9.x modifications)
func() error { return migratePages(ctx, log.Named("pages"), s) },
// *************************************************************************************************************