package models import ( "database/sql" "fmt" "simple_portal/database" ) // Predefined search engine URL templates. const ( SearchEngineGoogle = "https://www.google.com/search?q=%s" SearchEngineBing = "https://www.bing.com/search?q=%s" SearchEngineBaidu = "https://www.baidu.com/s?wd=%s" ) // SettingKey constants. const ( SettingKeySearchEngine = "search_engine" SettingKeyHomepageTitle = "homepage_title" SettingKeyHomepageSubtitle = "homepage_subtitle" SettingKeyHomepageBackground = "homepage_background" ) // Default setting values. const ( DefaultHomepageTitle = "Portal" DefaultHomepageSubtitle = "" DefaultHomepageBackground = "" ) // GetSetting retrieves a setting value by key. Returns empty string if not found. func GetSetting(key string) (string, error) { var value sql.NullString err := database.DB.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value) if err == sql.ErrNoRows { return "", nil } if err != nil { return "", fmt.Errorf("failed to get setting %s: %w", key, err) } return value.String, nil } // SetSetting inserts or updates a setting value by key. func SetSetting(key, value string) error { _, err := database.DB.Exec( "INSERT INTO settings (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = ?", key, value, value, ) if err != nil { return fmt.Errorf("failed to set setting %s: %w", key, err) } return nil }