You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: openapi_api.gen.go
    path of file: ./repos/wild-workouts-go-ddd-example/internal/trainer/ports
    
    the code of the file until where you have to start completion: // Package ports provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/deepmap/oapi-codegen version v1.8.2 DO NOT EDIT.
package ports

import (
	"context"
	"fmt"
	"net/http"

	"github.com/deepmap/oapi-codegen/pkg/runtime"
	"github.com/go-chi/chi/v5"
)

// ServerInterface represents all server handlers.
type ServerInterface interface {

	// (GET /trainer/calendar)
	GetTrainerAvailableHours(w http.ResponseWriter, r *http.Request, params GetTrainerAvailableHoursParams)

	// (PUT /trainer/calendar/make-hour-available)
	MakeHourAva
    
func (siw *ServerInterfaceWrapper) GetTrainerAvailableHours(w http.ResponseWriter, r *http.Request) {
	ctx := r.Context()

	var err error

	ctx = context.WithValue(ctx, BearerAuthScopes, []string{""})

	// Parameter object where we will unmarshal all parameters from the context
	var params GetTrainerAvailableHoursParams

	// ------------- Required query parameter "dateFrom" -------------
	if paramValue := r.URL.Query().Get("dateFrom"); paramValue != "" {

	} else {
		http.Error(w, "Query argument dateFrom is required, but not found", http.StatusBadRequest)
		return
	}

	err = runtime.BindQueryParameter("form", true, true, "dateFrom", r.URL.Query(), &params.DateFrom)
	if err != nil {
		http.Error(w, fmt.Sprintf("Invalid format for parameter dateFrom: %s", err), http.StatusBadRequest)
		return
	}

	// ------------- Required query parameter "dateTo" -------------
	if paramValue := r.URL.Query().Get("dateTo"); paramValue != "" {

	} else {
		http.Error(w, "Query argument dateTo is required, but not found", http.StatusBadRequest)
		return
	}

	err = runtime.BindQueryParameter("form", true, true, "dateTo", r.URL.Query(), &params.DateTo)
	if err != nil {
		http.Error(w, fmt.Sprintf("Invalid format for parameter dateTo: %s", err), http.StatusBadRequest)
		return
	}

	var handler = func(w http.ResponseWriter, r *http.Request) {
		siw.Handler.GetTrainerAvailableHours(w, r, params)
	}

	for _, middleware := range siw.HandlerMiddlewares {
		handler = middleware(handler)
	}

	handler(w, r.WithContext(ctx))
}