package me

import (
	"go.uber.org/zap"

	"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/config"
	"codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/interface/http/middleware"
	svc_me "codeberg.org/mapleopentech/monorepo/cloud/maplefile-backend/internal/service/me"
)

// Wire providers for me HTTP handlers

func ProvideGetMeHTTPHandler(
	cfg *config.Configuration,
	logger *zap.Logger,
	service svc_me.GetMeService,
	mw middleware.Middleware,
) *GetMeHTTPHandler {
	return NewGetMeHTTPHandler(cfg, logger, service, mw)
}

func ProvidePutUpdateMeHTTPHandler(
	cfg *config.Configuration,
	logger *zap.Logger,
	service svc_me.UpdateMeService,
	mw middleware.Middleware,
) *PutUpdateMeHTTPHandler {
	return NewPutUpdateMeHTTPHandler(cfg, logger, service, mw)
}

func ProvideDeleteMeHTTPHandler(
	cfg *config.Configuration,
	logger *zap.Logger,
	service svc_me.DeleteMeService,
	mw middleware.Middleware,
) *DeleteMeHTTPHandler {
	return NewDeleteMeHTTPHandler(cfg, logger, service, mw)
}

func ProvidePostChangeEmailRequestHTTPHandler(
	cfg *config.Configuration,
	logger *zap.Logger,
	service svc_me.ChangeEmailRequestService,
	mw middleware.Middleware,
) *PostChangeEmailRequestHTTPHandler {
	return NewPostChangeEmailRequestHTTPHandler(cfg, logger, service, mw)
}

func ProvidePostChangeEmailVerifyHTTPHandler(
	cfg *config.Configuration,
	logger *zap.Logger,
	service svc_me.ChangeEmailVerifyService,
	mw middleware.Middleware,
) *PostChangeEmailVerifyHTTPHandler {
	return NewPostChangeEmailVerifyHTTPHandler(cfg, logger, service, mw)
}
