package server

import (
	"log"
	"music-server/internal/backend"
	"music-server/internal/database"
	"net/http"

	"github.com/labstack/echo/v4"
)

type SyncHandler struct {
}

func NewSyncHandler() *SyncHandler {
	return &SyncHandler{}
}

func (s *SyncHandler) SyncGames(ctx echo.Context) error {
	database.SyncGames()
	backend.Reset()
	return ctx.JSON(http.StatusOK, "Games are synced")
}

func (s *SyncHandler) SyncGamesQuick(ctx echo.Context) error {
	database.SyncGamesQuick()
	backend.Reset()
	return ctx.JSON(http.StatusOK, "Games are synced")
}

func (s *SyncHandler) SyncGamesNewOnlyChanges(ctx echo.Context) error {
	log.Println("Syncing games new")
	response := backend.SyncGamesNewOnlyChanges()
	backend.Reset()
	return ctx.JSON(http.StatusOK, response)
}

func (s *SyncHandler) SyncGamesNewFull(ctx echo.Context) error {
	log.Println("Syncing games new full")
	response := backend.SyncGamesNewFull()
	backend.Reset()
	return ctx.JSON(http.StatusOK, response)
}

func (s *SyncHandler) ResetGames(ctx echo.Context) error {
	backend.ResetDB()
	return ctx.JSON(http.StatusOK, "Games and songs are deleted from the database")
}
