Files
SmyWorkCollect/SproutWorkCollect-Backend-Golang/internal/service/settings_service.go

54 lines
1.4 KiB
Go

package service
import (
"encoding/json"
"os"
"path/filepath"
"sproutworkcollect-backend/internal/config"
"sproutworkcollect-backend/internal/model"
)
var defaultSettings = model.Settings{
SiteName: "✨ 萌芽作品集 ✨",
SiteDesc: "🎨 展示个人制作的一些小创意和小项目,欢迎交流讨论 💬",
Author: "👨‍💻 by-树萌芽",
ContactEmail: "3205788256@qq.com",
ThemeColor: "#81c784",
PageSize: 6,
EnableSearch: true,
EnableCategory: true,
Icp: "📄 蜀ICP备2025151694号",
Footer: "✨ 萌芽作品集 ✨ | Copyright © 2025-2025 smy ",
Logo: "assets/logo.png",
}
// SettingsService manages the site-wide settings file.
type SettingsService struct {
cfg *config.Config
}
// NewSettingsService creates a SettingsService with the given config.
func NewSettingsService(cfg *config.Config) *SettingsService {
return &SettingsService{cfg: cfg}
}
// Load reads settings.json, returning built-in defaults when the file is absent or malformed.
func (s *SettingsService) Load() (*model.Settings, error) {
path := filepath.Join(s.cfg.ConfigDir, "settings.json")
data, err := os.ReadFile(path)
if err != nil {
if os.IsNotExist(err) {
d := defaultSettings
return &d, nil
}
return nil, err
}
var settings model.Settings
if err := json.Unmarshal(data, &settings); err != nil {
d := defaultSettings
return &d, nil
}
return &settings, nil
}