admin-dashboard-backend/grouptasks/grouptasks.go

108 lines
2.4 KiB
Go

package grouptasks
import (
"encoding/json"
"os"
"github.com/rs/zerolog/log"
)
var CategoryGroups []CategoryGroup
type CategoryGroup struct {
Category string `json:"category"`
Groups []Group `json:"groups"`
}
func addCategoryGroup(group Group) {
for index, categoryGroup := range CategoryGroups {
if categoryGroup.Category == group.Category {
CategoryGroups[index].Groups = append(CategoryGroups[index].Groups, group)
return
}
}
categoryGroup := CategoryGroup{
Category: group.Category,
}
categoryGroup.Groups = append(categoryGroup.Groups, group)
CategoryGroups = append(CategoryGroups, categoryGroup)
}
type Group struct {
Category string `json:"category"`
Id string `json:"id"`
Name string `json:"name"`
GlobalInputs []GlobalInputs `json:"globalInputs"`
Tasks []Task `json:"tasks"`
}
type GlobalInputs struct {
ParameterName string `json:"parameterName"`
Type string `json:"type"`
DisplayName string `json:"displayName"`
}
type Task struct {
Name string `json:"name"`
OnFinish string `json:"onFinish"`
UndoPossible bool `json:"undoPossible"`
ScriptPath string `json:"scriptPath"`
Parameter []TaskParameter `json:"parameter"`
Feedback string `json:"feedback"`
}
type TaskParameter struct {
ParameterName string `json:"parameterName"`
Type string `json:"type"`
DisplayName string `json:"displayName"`
Global bool `json:"global"`
}
func ReadGroups() {
root := "./groupTasks/groups/"
entries, err := os.ReadDir(root)
if err != nil {
log.Error().Msg("Failed to read groups directory, error: " + err.Error())
return
}
for _, entry := range entries {
log.Info().Msgf("Entry: %s", entry.Name())
files, err := os.ReadDir(root + entry.Name())
if err != nil {
log.Error().Msg("Failed to read groups directory files, error: " + err.Error())
return
}
for _, file := range files {
log.Info().Msgf("File: %s", file.Name())
if file.Name() == "index.json" {
content, err := os.ReadFile(root + entry.Name() + "/index.json")
if err != nil {
log.Error().Msg("Failed to read file content, error: " + err.Error())
return
}
var group Group
json.Unmarshal(content, &group)
group.Id = entry.Name()
log.Info().Msgf("Group: %s", group)
addCategoryGroup(group)
}
}
}
}