mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-03 18:22:57 +00:00
76 lines
2.8 KiB
Go
76 lines
2.8 KiB
Go
package controllers
|
|
|
|
import (
|
|
"fotbal-club/internal/models"
|
|
"fotbal-club/pkg/logger"
|
|
)
|
|
|
|
// seedDefaultHomePageElements creates default page element configurations for the homepage
|
|
// with all major sections visible by default (videos, gallery, matches, news, etc.)
|
|
func (bc *BaseController) seedDefaultHomePageElements() {
|
|
// Check if any homepage elements already exist
|
|
var count int64
|
|
if err := bc.DB.Model(&models.PageElementConfig{}).Where("page_type = ?", "homepage").Count(&count).Error; err != nil {
|
|
logger.Error("Failed to check existing page elements: %v", err)
|
|
return
|
|
}
|
|
|
|
if count > 0 {
|
|
logger.Info("Homepage page elements already exist, skipping seed")
|
|
return
|
|
}
|
|
|
|
// Define default homepage elements with all major sections visible
|
|
defaultElements := []models.PageElementConfig{
|
|
// Hero section - main featured content
|
|
{PageType: "homepage", ElementName: "hero", Variant: "grid", Visible: true, DisplayOrder: 1},
|
|
|
|
// News/Articles - latest articles
|
|
{PageType: "homepage", ElementName: "news", Variant: "grid", Visible: true, DisplayOrder: 2},
|
|
|
|
// Matches - upcoming and recent matches
|
|
{PageType: "homepage", ElementName: "matches", Variant: "compact", Visible: true, DisplayOrder: 3},
|
|
|
|
// Table - league standings
|
|
{PageType: "homepage", ElementName: "table", Variant: "split_news", Visible: true, DisplayOrder: 4},
|
|
|
|
// Videos - YouTube videos and highlights
|
|
{PageType: "homepage", ElementName: "videos", Variant: "carousel", Visible: true, DisplayOrder: 5},
|
|
|
|
// Gallery - photo gallery
|
|
{PageType: "homepage", ElementName: "gallery", Variant: "grid", Visible: true, DisplayOrder: 6},
|
|
|
|
// Team - players and squad
|
|
{PageType: "homepage", ElementName: "team", Variant: "grid", Visible: true, DisplayOrder: 7},
|
|
|
|
// Activities - upcoming events
|
|
{PageType: "homepage", ElementName: "activities", Variant: "list", Visible: true, DisplayOrder: 8},
|
|
|
|
// Sponsors - partners and sponsors
|
|
{PageType: "homepage", ElementName: "sponsors", Variant: "grid", Visible: true, DisplayOrder: 9},
|
|
|
|
// Newsletter - newsletter signup
|
|
{PageType: "homepage", ElementName: "newsletter", Variant: "default", Visible: true, DisplayOrder: 10},
|
|
|
|
// Contact - contact information and map
|
|
{PageType: "homepage", ElementName: "contact", Variant: "combined", Visible: true, DisplayOrder: 11},
|
|
}
|
|
|
|
// Insert all default elements in a single transaction
|
|
tx := bc.DB.Begin()
|
|
for _, element := range defaultElements {
|
|
if err := tx.Create(&element).Error; err != nil {
|
|
logger.Error("Failed to create page element %s: %v", element.ElementName, err)
|
|
tx.Rollback()
|
|
return
|
|
}
|
|
}
|
|
|
|
if err := tx.Commit().Error; err != nil {
|
|
logger.Error("Failed to commit page elements transaction: %v", err)
|
|
return
|
|
}
|
|
|
|
logger.Info("Successfully seeded %d default homepage page elements", len(defaultElements))
|
|
}
|