Started working on pages

This commit is contained in:
Leon Mika 2025-02-16 11:43:22 +11:00
parent e2f159e980
commit ba12398d2f
30 changed files with 1391 additions and 145 deletions

55
services/sites/create.go Normal file
View file

@ -0,0 +1,55 @@
package sites
import (
"context"
"errors"
"lmika.dev/lmika/hugo-cms/models"
"time"
)
func (s *Service) CreateSite(ctx context.Context, user models.User, name string) (models.Site, error) {
// Create a new site
newSite := models.Site{
Name: normaliseName(name),
OwnerUserID: user.ID,
Title: name,
Theme: "bear",
}
_, ok := s.themes.Lookup(newSite.Theme)
if !ok {
return models.Site{}, errors.New("theme not found")
}
if err := s.db.InsertSite(ctx, &newSite); err != nil {
return models.Site{}, err
}
// Add the default page bundle
rootBundle := models.Bundle{
SiteID: newSite.ID,
Name: models.RootBundleName,
CreatedAt: time.Now(),
}
if err := s.db.InsertBundle(ctx, &rootBundle); err != nil {
return models.Site{}, err
}
// TEMP: Add a home page
homePage := models.Page{
SiteID: newSite.ID,
BundleID: rootBundle.ID,
Name: "index",
Title: "Welcome to the home page",
Body: "This is the home page",
State: models.PostStatePublished,
PublishDate: time.Now(),
CreatedAt: time.Now(),
UpdatedAt: time.Now(),
}
if err := s.db.InsertPage(ctx, &homePage); err != nil {
return models.Site{}, err
}
return newSite, s.jobs.Queue(ctx, s.sb.RebuildSite(newSite, newSite))
}

View file

@ -46,27 +46,6 @@ func (s *Service) GetProdTargetOfSite(ctx context.Context, siteID int) (models.P
return s.db.GetPublishTargetBySiteRole(ctx, int64(siteID), models.TargetRoleProduction)
}
func (s *Service) CreateSite(ctx context.Context, user models.User, name string) (models.Site, error) {
newSite := models.Site{
Name: normaliseName(name),
OwnerUserID: user.ID,
Title: name,
Theme: "bear",
//Theme: "yingyang",
}
_, ok := s.themes.Lookup(newSite.Theme)
if !ok {
return models.Site{}, errors.New("theme not found")
}
if err := s.db.InsertSite(ctx, &newSite); err != nil {
return models.Site{}, err
}
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.SiteTheme)
if !ok {