54 lines
1.4 KiB
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
|
|
}
|