package v1

import (
	"github.com/gin-gonic/gin"
	"github.com/tdvorak/seen/backend/internal/api/handlers"
)

func Register(
	router *gin.RouterGroup,
	health *handlers.HealthHandler,
	auth *handlers.AuthHandler,
	catalog *handlers.CatalogHandler,
	download *handlers.DownloadHandler,
	placeholder *handlers.PlaceholderHandler,
) {
	router.GET("/health/live", health.Live)
	router.GET("/health/ready", health.Ready)

	authGroup := router.Group("/auth")
	authGroup.POST("/register", auth.Register)
	authGroup.POST("/login", auth.Login)
	authGroup.POST("/refresh", auth.Refresh)
	authGroup.GET("/me", auth.Me)

	router.GET("/dashboard", catalog.Dashboard)
	router.GET("/progress/continue-watching", catalog.ContinueWatching)
	router.GET("/discover", catalog.Discover)
	router.GET("/games", catalog.Games)
	router.GET("/search", catalog.Search)
	router.GET("/watch-later", catalog.WatchLater)
	router.POST("/watch-later", catalog.AddWatchLater)
	router.DELETE("/watch-later/:mediaId", catalog.RemoveWatchLater)
	router.POST("/progress", catalog.UpdateProgress)

	router.GET("/movies", placeholder.NotImplemented("movies"))
	router.GET("/shows", placeholder.NotImplemented("shows"))
	router.GET("/watched", placeholder.NotImplemented("watched"))
	router.GET("/watchlist", placeholder.NotImplemented("watchlist"))
	router.GET("/progress", placeholder.NotImplemented("progress"))
	router.POST("/downloads", download.Create)
	router.GET("/downloads", download.List)
	router.DELETE("/downloads/:id", download.Cancel)
	router.GET("/downloads/:id/events", download.Events)
	router.GET("/calendar", placeholder.NotImplemented("calendar"))
	router.GET("/library", placeholder.NotImplemented("library"))
	router.GET("/collections", placeholder.NotImplemented("collections"))
	router.GET("/settings", placeholder.NotImplemented("settings"))
	router.GET("/admin", placeholder.NotImplemented("admin"))
	router.GET("/recommendations", placeholder.NotImplemented("recommendations"))
}
