package cmd import ( "encoding/json" "kontor-api-gin/internal/models" "log/slog" "os" "github.com/spf13/cobra" "resty.dev/v3" ) var exportCmd = &cobra.Command{ Use: "export", Short: "Export Kontor Database", Long: "Export Kontor Database to given file", // Args: cobra.ExactArgs(1), Run: func(cmd *cobra.Command, args []string) { slog.Info("export kontor") slog.Info("Verbosity level", "level", verbose) var login LoginResponse client := resty.New() _, err := client.R(). SetBody(Login{ Email: "thomas.peetz@thpeetz.de", Password: "admin", }). SetHeader("Accept", "application/json"). SetResult(&login). Post("http://127.0.0.1:8550/api/login") if err != nil { slog.Info("Health", "error", err.Error()) } slog.Info("health", "token", login.Token) type ExportData struct { Sport []models.SportDTO `json:"sport"` Player []models.PlayerDTO `json:"player"` Team []models.TeamDTO `json:"team"` Position []models.PositionDTO `json:"field_position"` Rooster []models.RoosterDTO `json:"rooster"` Vendor []models.VendorDTO `json:"vendor"` CardSet []models.CardSetDTO `json:"card_set"` Card []models.CardDTO `json:"card"` Comic []models.ComicDTO `json:"comic"` } var sports []models.SportDTO _, err = client.R(). SetAuthToken(login.Token). SetHeader("Accept", "application/json"). SetResult(&sports). Get("http://127.0.0.1:8550/api/v1/tysc/sports") if err != nil { slog.Info("sports", "error", err.Error()) } var players []models.PlayerDTO _, err = client.R(). SetAuthToken(login.Token). SetHeader("Accept", "application/json"). SetResult(&players). Get("http://127.0.0.1:8550/api/v1/tysc/players") if err != nil { slog.Info("players", "error", err.Error()) } var teams []models.TeamDTO _, err = client.R(). SetAuthToken(login.Token). SetHeader("Accept", "application/json"). SetResult(&teams). Get("http://127.0.0.1:8550/api/v1/tysc/teams") if err != nil { slog.Info("teams", "error", err.Error()) } var positions []models.PositionDTO _, err = client.R(). SetAuthToken(login.Token). SetHeader("Accept", "application/json"). SetResult(&positions). Get("http://127.0.0.1:8550/api/v1/tysc/positions") if err != nil { slog.Info("teams", "error", err.Error()) } var comics []models.ComicDTO _, err = client.R(). SetAuthToken(login.Token). SetHeader("Accept", "application/json"). SetResult(&comics). Get("http://127.0.0.1:8550/api/v1/comics/comics") if err != nil { slog.Info("comics", "error", err.Error()) } // slog.Info("comics", "res", comics) data := ExportData{ Sport: sports, Player: players, Team: teams, Position: positions, Rooster: []models.RoosterDTO{}, Vendor: []models.VendorDTO{}, CardSet: []models.CardSetDTO{}, Card: []models.CardDTO{}, Comic: comics, } defer client.Close() jsonData, err := json.MarshalIndent(data, "", " ") if err != nil { slog.Info("JSON MarshalIndent failed", "Error:", err) } // Write bytes to file err = os.WriteFile("data.json", jsonData, 0644) if err != nil { slog.Info("Error writing file:", "Error", err) } slog.Info("export kontor finished") }, } func init() { rootCmd.AddCommand(exportCmd) }