Fixed handling of content only vs structural page changes.
This commit is contained in:
parent
573517565d
commit
3cf4294e87
2 changed files with 58 additions and 4 deletions
|
|
@ -48,13 +48,15 @@ func (s *Service) DeletePage(ctx context.Context, site models.Site, id int) erro
|
|||
post, err := s.db.GetPage(ctx, int64(id))
|
||||
if err != nil {
|
||||
return err
|
||||
} else if post.SiteID != site.ID {
|
||||
return errors.New("page not found")
|
||||
}
|
||||
|
||||
if err := s.db.DeletePage(ctx, int64(id)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return s.jobs.Queue(ctx, s.sb.DeletePage(site, post))
|
||||
return s.jobs.Queue(ctx, s.sb.RebuildSiteContent(site, site))
|
||||
}
|
||||
|
||||
func (s *Service) Create(ctx context.Context, site models.Site, req NewPost) (models.Page, error) {
|
||||
|
|
@ -97,6 +99,10 @@ func (s *Service) Create(ctx context.Context, site models.Site, req NewPost) (mo
|
|||
return models.Page{}, err
|
||||
}
|
||||
|
||||
if err := s.jobs.Queue(ctx, s.sb.RebuildSiteContent(site, site)); err != nil {
|
||||
return models.Page{}, err
|
||||
}
|
||||
|
||||
return post, nil
|
||||
}
|
||||
|
||||
|
|
@ -117,6 +123,8 @@ func (s *Service) Update(ctx context.Context, site models.Site, pageID int64, re
|
|||
return models.Page{}, errors.New("page not found")
|
||||
}
|
||||
|
||||
oldPage := page
|
||||
|
||||
// Update the title if it wasn't set by the user
|
||||
if page.NameProvenance != models.UserNameProvenance {
|
||||
if req.Title == "" {
|
||||
|
|
@ -134,6 +142,20 @@ func (s *Service) Update(ctx context.Context, site models.Site, pageID int64, re
|
|||
return models.Page{}, err
|
||||
}
|
||||
|
||||
// A content only change involves rewriting the file content. Anything else is a structural change
|
||||
// that will need rewriting of all the page content.
|
||||
contentOnlyChange := page.Name == oldPage.Name && page.Role == oldPage.Role
|
||||
|
||||
if contentOnlyChange {
|
||||
if err := s.jobs.Queue(ctx, s.sb.WritePage(site, bundle, page)); err != nil {
|
||||
return models.Page{}, err
|
||||
}
|
||||
} else {
|
||||
if err := s.jobs.Queue(ctx, s.sb.RebuildSiteContent(site, site)); err != nil {
|
||||
return models.Page{}, err
|
||||
}
|
||||
}
|
||||
|
||||
return page, nil
|
||||
}
|
||||
|
||||
|
|
@ -153,7 +175,7 @@ func (s *Service) save(ctx context.Context, site models.Site, bundle models.Bund
|
|||
}
|
||||
}
|
||||
|
||||
return s.jobs.Queue(ctx, s.sb.WritePage(site, bundle, *page))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Service) normalizePageName(title string) string {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue