package site

import (
	"context"

	"github.com/gocql/gocql"
	"go.uber.org/zap"

	siteusecase "codeberg.org/mapleopentech/monorepo/cloud/maplepress-backend/internal/usecase/site"
)

// GetSiteService handles getting a single site
type GetSiteService interface {
	GetSite(ctx context.Context, tenantID gocql.UUID, input *siteusecase.GetSiteInput) (*siteusecase.GetSiteOutput, error)
}

type getSiteService struct {
	getUC  *siteusecase.GetSiteUseCase
	logger *zap.Logger
}

// NewGetSiteService creates a new GetSiteService
func NewGetSiteService(
	getUC *siteusecase.GetSiteUseCase,
	logger *zap.Logger,
) GetSiteService {
	return &getSiteService{
		getUC:  getUC,
		logger: logger.Named("get-site-service"),
	}
}

// GetSite retrieves a site by ID
func (s *getSiteService) GetSite(ctx context.Context, tenantID gocql.UUID, input *siteusecase.GetSiteInput) (*siteusecase.GetSiteOutput, error) {
	return s.getUC.Execute(ctx, tenantID, input)
}
