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, Role: models.IndexPageRole, 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)) }