//                           _       _
// __      _____  __ ___   ___  __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
//  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
//   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
//  Copyright © 2016 - 2026 Weaviate B.V. All rights reserved.
//
//  CONTACT: hello@weaviate.io
//

// Code generated by go-swagger; DO NOT EDIT.

package replication

// This file was generated by the swagger tool.
// Editing this file might prove futile when you re-run the generate command

import (
	"net/http"

	"github.com/go-openapi/runtime/middleware"

	"github.com/weaviate/weaviate/entities/models"
)

// ForceDeleteReplicationsHandlerFunc turns a function with the right signature into a force delete replications handler
type ForceDeleteReplicationsHandlerFunc func(ForceDeleteReplicationsParams, *models.Principal) middleware.Responder

// Handle executing the request and returning a response
func (fn ForceDeleteReplicationsHandlerFunc) Handle(params ForceDeleteReplicationsParams, principal *models.Principal) middleware.Responder {
	return fn(params, principal)
}

// ForceDeleteReplicationsHandler interface for that can handle valid force delete replications params
type ForceDeleteReplicationsHandler interface {
	Handle(ForceDeleteReplicationsParams, *models.Principal) middleware.Responder
}

// NewForceDeleteReplications creates a new http.Handler for the force delete replications operation
func NewForceDeleteReplications(ctx *middleware.Context, handler ForceDeleteReplicationsHandler) *ForceDeleteReplications {
	return &ForceDeleteReplications{Context: ctx, Handler: handler}
}

/*
	ForceDeleteReplications swagger:route POST /replication/replicate/force-delete replication forceDeleteReplications

# Force delete replication operations

USE AT OWN RISK! Synchronously force delete operations from the FSM. This will not perform any checks on which state the operation is in so may lead to data corruption or loss. It is recommended to first scale the number of replication engine workers to 0 before calling this endpoint to ensure no operations are in-flight.
*/
type ForceDeleteReplications struct {
	Context *middleware.Context
	Handler ForceDeleteReplicationsHandler
}

func (o *ForceDeleteReplications) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
	route, rCtx, _ := o.Context.RouteInfo(r)
	if rCtx != nil {
		*r = *rCtx
	}
	var Params = NewForceDeleteReplicationsParams()
	uprinc, aCtx, err := o.Context.Authorize(r, route)
	if err != nil {
		o.Context.Respond(rw, r, route.Produces, route, err)
		return
	}
	if aCtx != nil {
		*r = *aCtx
	}
	var principal *models.Principal
	if uprinc != nil {
		principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
	}

	if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
		o.Context.Respond(rw, r, route.Produces, route, err)
		return
	}

	res := o.Handler.Handle(Params, principal) // actually handle the request
	o.Context.Respond(rw, r, route.Produces, route, res)

}
