first commit

This commit is contained in:
Beyhan Oğur
2026-04-26 21:35:24 +03:00
commit bbbf76b184
592 changed files with 246870 additions and 0 deletions

View File

@@ -0,0 +1,134 @@
package services
import (
"errors"
"gauth-central/internal/database"
"gauth-central/internal/models"
"gorm.io/gorm"
)
type MainMenuService struct{}
func NewMainMenuService() *MainMenuService {
return &MainMenuService{}
}
// CreateMainMenu creates a new main menu entry.
func (s *MainMenuService) CreateMainMenu(home string, about string, services string, resume string, portfolio string, contact string, isActive bool) (*models.MainMenu, error) {
item := models.MainMenu{
Home: home,
About: about,
Services: services,
Resume: resume,
Portfolio: portfolio,
Contact: contact,
IsActive: isActive,
}
if err := database.DB.Create(&item).Error; err != nil {
return nil, err
}
return s.GetMainMenuByID(item.ID.String())
}
// GetAllMainMenus retrieves all main menu entries. Use onlyActive to filter public data.
func (s *MainMenuService) GetAllMainMenus(onlyActive bool) ([]models.MainMenu, error) {
var items []models.MainMenu
query := database.DB.Order("created_at desc")
if onlyActive {
query = query.Where("is_active = ?", true)
}
if err := query.Find(&items).Error; err != nil {
return nil, err
}
return items, nil
}
// GetFirstActiveMainMenu returns the newest active main menu entry.
func (s *MainMenuService) GetFirstActiveMainMenu() (*models.MainMenu, error) {
var item models.MainMenu
if err := database.DB.Where("is_active = ?", true).Order("created_at desc").First(&item).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("main menu not found")
}
return nil, err
}
return &item, nil
}
// GetMainMenuByID retrieves a main menu entry by ID.
func (s *MainMenuService) GetMainMenuByID(id string) (*models.MainMenu, error) {
var item models.MainMenu
if err := database.DB.Where("id = ?", id).First(&item).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, errors.New("main menu not found")
}
return nil, err
}
return &item, nil
}
// UpdateMainMenu updates an existing main menu entry.
func (s *MainMenuService) UpdateMainMenu(
id string,
home *string,
about *string,
services *string,
resume *string,
portfolio *string,
contact *string,
isActive *bool,
) (*models.MainMenu, error) {
item, err := s.GetMainMenuByID(id)
if err != nil {
return nil, err
}
updates := map[string]interface{}{}
if home != nil {
updates["home"] = *home
}
if about != nil {
updates["about"] = *about
}
if services != nil {
updates["services"] = *services
}
if resume != nil {
updates["resume"] = *resume
}
if portfolio != nil {
updates["portfolio"] = *portfolio
}
if contact != nil {
updates["contact"] = *contact
}
if isActive != nil {
updates["is_active"] = *isActive
}
if len(updates) > 0 {
if err := database.DB.Model(item).Updates(updates).Error; err != nil {
return nil, err
}
}
return s.GetMainMenuByID(id)
}
// DeleteMainMenu deletes a main menu entry by ID.
func (s *MainMenuService) DeleteMainMenu(id string) error {
result := database.DB.Delete(&models.MainMenu{}, "id = ?", id)
if result.Error != nil {
return result.Error
}
if result.RowsAffected == 0 {
return errors.New("main menu not found")
}
return nil
}