package servers import ( "reflect" "strings" "github.com/gin-gonic/gin" "gorm.io/gorm" "lst.net/internal/models" "lst.net/pkg/logger" ) func getServers(c *gin.Context, log *logger.CustomLogger, db *gorm.DB) { servers, err := GetServers(log, db) log.Info("Current Settings", "system", map[string]interface{}{ "endpoint": "/api/v1/settings", "client_ip": c.ClientIP(), "user_agent": c.Request.UserAgent(), }) if err != nil { log.Error("Current Settings", "system", map[string]interface{}{ "endpoint": "/api/v1/settings", "client_ip": c.ClientIP(), "user_agent": c.Request.UserAgent(), "error": err, }) c.JSON(500, gin.H{"message": "There was an error getting the settings", "error": err}) return } c.JSON(200, gin.H{"message": "Current settings", "data": servers}) } func GetServers(log *logger.CustomLogger, db *gorm.DB) ([]map[string]interface{}, error) { var servers []models.Servers res := db.Find(&servers) if res.Error != nil { return nil, res.Error } toLowercase := func(s models.Servers) map[string]interface{} { t := reflect.TypeOf(s) v := reflect.ValueOf(s) data := make(map[string]interface{}) for i := 0; i < t.NumField(); i++ { field := strings.ToLower(t.Field(i).Name) data[field] = v.Field(i).Interface() } return data } var lowercaseServers []map[string]interface{} for _, server := range servers { lowercaseServers = append(lowercaseServers, toLowercase(server)) } return lowercaseServers, nil }