readysite / website / internal / content / seed / pages.go
2.3 KB
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")
}
← Back