Files
public/Tools/quickly/backend/settings.go

105 lines
2.6 KiB
Go

package backend
import (
"encoding/json"
"fmt"
"os"
"path/filepath"
)
func (a *App) getSettingsPath() (string, error) {
configDir, err := os.UserConfigDir()
if err != nil {
return "", err
}
appConfigDir := filepath.Join(configDir, "quickly")
if err := os.MkdirAll(appConfigDir, 0755); err != nil {
return "", err
}
return filepath.Join(appConfigDir, "settings.json"), nil
}
func (a *App) loadSettings() {
settingsPath, err := a.getSettingsPath()
if err != nil {
fmt.Println("Error getting settings path:", err)
a.settings = Settings{
Theme: "light",
Language: "zh-CN",
Notifications: true,
AutoStart: false,
MysqlModelPath: "",
DefaultQueryPackagePath: "",
ModelBasePath: "",
SwaggerDir: "",
Databases: []DatabaseConfig{},
Projects: []ProjectConfig{},
}
return
}
data, err := os.ReadFile(settingsPath)
if err != nil {
if os.IsNotExist(err) {
a.settings = Settings{
Theme: "light",
Language: "zh-CN",
Notifications: true,
AutoStart: false,
MysqlModelPath: "",
DefaultQueryPackagePath: "",
ModelBasePath: "",
SwaggerDir: "",
Databases: []DatabaseConfig{},
Projects: []ProjectConfig{},
}
return
}
fmt.Println("Error reading settings file:", err)
return
}
if err := json.Unmarshal(data, &a.settings); err != nil {
fmt.Println("Error parsing settings file:", err)
a.settings = Settings{
Theme: "light",
Language: "zh-CN",
Notifications: true,
AutoStart: false,
MysqlModelPath: "",
DefaultQueryPackagePath: "",
ModelBasePath: "",
SwaggerDir: "",
Databases: []DatabaseConfig{},
Projects: []ProjectConfig{},
}
}
}
func (a *App) saveSettings() error {
settingsPath, err := a.getSettingsPath()
if err != nil {
return fmt.Errorf("error getting settings path: %w", err)
}
data, err := json.MarshalIndent(a.settings, "", " ")
if err != nil {
return fmt.Errorf("error marshaling settings: %w", err)
}
if err := os.WriteFile(settingsPath, data, 0644); err != nil {
return fmt.Errorf("error writing settings file: %w", err)
}
return nil
}
func (a *App) GetSettings() Settings {
return a.settings
}
func (a *App) SaveSettings(settings Settings) error {
a.settings = settings
return a.saveSettings()
}