pages.go
package seed
import (
"log"
"github.com/readysite/readysite/pkg/database"
"github.com/readysite/readysite/website/models"
)
// savePageContent creates a new content version for a page.
func savePageContent(page *models.Page, title, description, html, userID, status string) {
content := &models.PageContent{
PageID: page.ID,
Title: title,
Description: description,
HTML: html,
CreatedBy: userID,
Status: status,
}
models.PageContents.Insert(content)
}
// DefaultPages seeds the default pages (home, about, contact).
func DefaultPages() {
count := models.Pages.Count("")
if count > 0 {
log.Printf("seed: skipping default pages (found %d existing pages)", count)
return
}
log.Println("seed: creating default pages...")
// Home page
homeHTML, err := templates.ReadFile("templates/home.html")
if err != nil {
log.Printf("seed: failed to read home.html: %v", err)
return
}
homePage := &models.Page{
Model: database.Model{ID: "home"},
Position: 0,
}
if _, err := models.Pages.Insert(homePage); err != nil {
log.Printf("seed: failed to insert home page: %v", err)
return
}
savePageContent(homePage, "Welcome", "Welcome to our website", string(homeHTML), "", models.StatusPublished)
// About page
aboutHTML, err := templates.ReadFile("templates/about.html")
if err != nil {
log.Printf("seed: failed to read about.html: %v", err)
return
}
aboutPage := &models.Page{
Model: database.Model{ID: "about"},
Position: 1,
}
if _, err := models.Pages.Insert(aboutPage); err != nil {
log.Printf("seed: failed to insert about page: %v", err)
return
}
savePageContent(aboutPage, "About", "Learn more about us", string(aboutHTML), "", models.StatusPublished)
// Contact page
contactHTML, err := templates.ReadFile("templates/contact.html")
if err != nil {
log.Printf("seed: failed to read contact.html: %v", err)
return
}
contactPage := &models.Page{
Model: database.Model{ID: "contact"},
Position: 2,
}
if _, err := models.Pages.Insert(contactPage); err != nil {
log.Printf("seed: failed to insert contact page: %v", err)
return
}
savePageContent(contactPage, "Contact", "Get in touch with us", string(contactHTML), "", models.StatusPublished)
log.Println("seed: default pages created successfully")
}