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  }