Move ref. resolve at the very end of page imp.
This commit is contained in:
parent
262d01f7af
commit
8302bdbff4
@ -265,8 +265,28 @@ func (pImp *Page) Get(handle string) (*types.Page, error) {
|
||||
return pImp.set.FindByHandle(handle), nil
|
||||
}
|
||||
|
||||
func (pImp *Page) Store(ctx context.Context, k pageKeeper) error {
|
||||
return pImp.storeChildren(ctx, "", k)
|
||||
func (pImp *Page) Store(ctx context.Context, k pageKeeper) (err error) {
|
||||
if err = pImp.storeChildren(ctx, "", k); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// We do that at the end - and save all pages with resolved references
|
||||
//
|
||||
// Many because internal page referencing from page blocks
|
||||
var refs uint
|
||||
for _, page := range pImp.set {
|
||||
if refs, err = pImp.resolveRefs(page); err != nil {
|
||||
return
|
||||
} else if refs > 0 {
|
||||
// make sure we do not get stale-data error
|
||||
page.UpdatedAt = nil
|
||||
if _, err = k.Update(page); err != nil {
|
||||
return errors.Wrap(err, "could not update resolved refs")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (pImp *Page) storeChildren(ctx context.Context, parent string, k pageKeeper) (err error) {
|
||||
@ -322,26 +342,6 @@ func (pImp *Page) storeChildren(ctx context.Context, parent string, k pageKeeper
|
||||
}
|
||||
}
|
||||
|
||||
// We do that at the end - and save all pages with resolved references
|
||||
//
|
||||
// Many because internal page referencing from page blocks
|
||||
var refs uint
|
||||
for _, child := range children {
|
||||
if page, err = pImp.Get(child); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if refs, err = pImp.resolveRefs(page); err != nil {
|
||||
return
|
||||
} else if refs > 0 {
|
||||
// make sure we do not get stale-data error
|
||||
page.UpdatedAt = nil
|
||||
if _, err = k.Update(page); err != nil {
|
||||
return errors.Wrap(err, "could not update resolved refs")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user