Added site setting.

This commit is contained in:
Leon Mika 2025-02-02 09:54:30 +11:00
parent 39611070f8
commit 3774c903e2
17 changed files with 170 additions and 18 deletions

View file

@ -19,7 +19,7 @@ func (s *Service) WritePost(site models.Site, post models.Post) models.Job {
if err != nil {
return err
} else if rbn {
return s.RebuildSite(site).Do(ctx)
return s.RebuildSite(site, site).Do(ctx)
}
if err := s.writePost(site, post); err != nil {

View file

@ -46,21 +46,21 @@ func (s *Service) CreateNewSite(site models.Site) models.Job {
}
}
func (s *Service) RebuildSite(site models.Site) models.Job {
func (s *Service) RebuildSite(oldSite, newSite models.Site) models.Job {
return models.Jobs(
models.Job{
Do: func(ctx context.Context) error {
// Teardown the existing site
siteDir := s.hugo.SiteStagingDir(site, hugo.BaseSiteDir)
siteDir := s.hugo.SiteStagingDir(oldSite, hugo.BaseSiteDir)
if err := os.RemoveAll(siteDir); err != nil {
return err
}
return nil
},
},
s.CreateNewSite(site),
s.WriteAllPosts(site),
s.Publish(site),
s.CreateNewSite(newSite),
s.WriteAllPosts(newSite),
s.Publish(newSite),
)
}

View file

@ -51,6 +51,7 @@ func (s *Service) CreateSite(ctx context.Context, user models.User, name string)
OwnerUserID: user.ID,
Title: name,
Theme: "bear",
//Theme: "yingyang",
}
_, ok := s.themes.Lookup(newSite.Theme)
@ -78,12 +79,39 @@ func (s *Service) CreateSite(ctx context.Context, user models.User, name string)
return newSite, s.jobs.Queue(ctx, s.sb.CreateNewSite(newSite))
}
func (s *Service) SaveSettings(ctx context.Context, site models.Site, newSettings NewSettings) error {
_, ok := s.themes.Lookup(newSettings.Theme)
if !ok {
return errors.New("theme not found")
}
newSite := site
newSite.Title = newSettings.Title
newSite.Name = normaliseName(newSite.Title)
newSite.Theme = newSettings.Theme
if err := s.db.UpdateSite(ctx, newSite); err != nil {
return err
}
return s.jobs.Queue(ctx, s.sb.RebuildSite(site, newSite))
}
type NewSettings struct {
Title string `form:"title"`
Theme string `form:"theme"`
}
func (s *Service) Rebuild(ctx context.Context, site models.Site) error {
if site.ID == 0 {
return errors.New("site id required")
}
return s.jobs.Queue(ctx, s.sb.RebuildSite(site))
return s.jobs.Queue(ctx, s.sb.RebuildSite(site, site))
}
func (s *Service) Themes() []models.ThemeMeta {
return s.themes.Themes()
}
func normaliseName(name string) string {