61 lines
1.9 KiB
Go
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")
|
|
}
|