Files
kontor/kontor-gin/internal/cmd/sync.go
T
Thomas Peetz d5f71efe5e
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 4s
add details view for MediaLoFi
2026-10-13 17:28:44 +02:00

61 lines
1.9 KiB
Go

package cmd
import (
"kontor-api-gin/internal/api"
"kontor-api-gin/internal/config"
"log/slog"
"reflect"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var syncCmd = &cobra.Command{
Use: "sync",
Short: "Sync Kontor Database",
Long: "Sync Kontor Database",
// Args: cobra.ExactArgs(2),
Run: func(cmd *cobra.Command, args []string) {
slog.Info("sync kontor")
apiVersion := viper.GetString("api")
mainServer := config.Config.Server["main"]
if config.Verbose > 2 {
slog.Info("syncCmd#Run", "mainServer", mainServer)
}
localServer := config.Config.Server["local"]
sourceData, _ := api.GetData(mainServer, apiVersion)
targetData, _ := api.GetData(localServer, apiVersion)
if config.Verbose > 2 {
slog.Info("Size of targetData", "size", reflect.TypeOf(targetData).Size())
}
slog.Info("iterate sourceData", "table", "Sport", "count", len(sourceData.Sport))
sourceData.Sport.CompareIds(&targetData.Sport)
slog.Info("iterate sourceData", "table", "Player", "count", len(sourceData.Player))
sourceData.Player.CompareIds(&targetData.Player)
slog.Info("iterate sourceData", "table", "MediaLofi", "count source", len(sourceData.MediaLoFi), "count target", len(targetData.MediaLoFi))
missing, obsolete, changed := sourceData.MediaLoFi.CompareIds(&targetData.MediaLoFi)
for _, lofi_id := range missing {
if !config.DryRun {
slog.Info("add MediaLofi", "id", lofi_id)
}
}
for _, lofi_id := range obsolete {
if !config.DryRun {
slog.Info("delete MediaLofi", "id", lofi_id)
api.DeleteData(localServer, "media/lofis", lofi_id)
}
}
for _, lofi_id := range changed {
if !config.DryRun {
slog.Info("update MediaLofi", "id", lofi_id)
// api.UpdateData(localServer, "media/lofis", sourceData.MediaLoFi.GetMediaLofi(lofi_id))
}
}
},
}
func init() {
rootCmd.AddCommand(syncCmd)
syncCmd.PersistentFlags().BoolVarP(&config.DryRun, "dry-run", "m", false, "do not execute data changes")
}