github.com/ngocphuongnb/tetua@v0.0.7-alpha/app/config/setting.go (about) 1 package config 2 3 type SettingItem struct { 4 Name string `json:"name" form:"name"` 5 Value string `json:"value" form:"value"` 6 Type string `json:"type" form:"type"` 7 } 8 9 type SettingsMutation struct { 10 Settings []*SettingItem `json:"settings,omitempty" form:"settings"` 11 } 12 13 var defaultSettings = []*SettingItem{ 14 {"app_name", "Tetua", "input"}, 15 {"app_desc", "Tetua", "input"}, 16 {"app_base_url", "", "input"}, 17 {"file_base_url", "", "input"}, 18 {"app_logo", "", "image"}, 19 {"contact_name", "", "input"}, 20 {"contact_email", "", "input"}, 21 {"twitter_site", "", "input"}, 22 {"inject_header", "", "textarea"}, 23 {"inject_footer", "", "textarea"}, 24 {"footer_content", "", "textarea"}, 25 {"auto_approve_user", "", "switch"}, 26 {"auto_approve_post", "", "switch"}, 27 {"auto_approve_comment", "", "switch"}, 28 } 29 var settings = defaultSettings 30 31 func Settings(values []*SettingItem, overrideValues ...[]*SettingItem) { 32 for _, s := range values { 33 updateOrCreateSetting(s.Name, s.Value, s.Type) 34 } 35 36 for _, s := range overrideValues { 37 for _, v := range s { 38 updateOrCreateSetting(v.Name, v.Value, v.Type) 39 } 40 } 41 } 42 43 func updateOrCreateSetting(key, value, stype string) { 44 for i, s := range settings { 45 if s.Name == key { 46 settings[i].Value = value 47 return 48 } 49 } 50 settings = append(settings, &SettingItem{key, value, stype}) 51 } 52 53 func getSetting(key string) string { 54 for _, s := range settings { 55 if s.Name == key { 56 return s.Value 57 } 58 } 59 return "" 60 } 61 62 func Setting(key string, defaultValues ...string) string { 63 value := getSetting(key) 64 if value != "" { 65 return value 66 } 67 68 if len(defaultValues) > 0 { 69 return defaultValues[0] 70 } 71 72 return "" 73 } 74 75 func AllSettings() []*SettingItem { 76 return settings 77 }