github.com/weaviate/weaviate@v1.24.6/adapters/handlers/rest/operations/batch/batch_objects_create.go (about)

     1  //                           _       _
     2  // __      _____  __ ___   ___  __ _| |_ ___
     3  // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
     4  //  \ V  V /  __/ (_| |\ V /| | (_| | ||  __/
     5  //   \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
     6  //
     7  //  Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
     8  //
     9  //  CONTACT: hello@weaviate.io
    10  //
    11  
    12  // Code generated by go-swagger; DO NOT EDIT.
    13  
    14  package batch
    15  
    16  // This file was generated by the swagger tool.
    17  // Editing this file might prove futile when you re-run the generate command
    18  
    19  import (
    20  	"context"
    21  	"encoding/json"
    22  	"net/http"
    23  	"strconv"
    24  
    25  	"github.com/go-openapi/errors"
    26  	"github.com/go-openapi/runtime/middleware"
    27  	"github.com/go-openapi/strfmt"
    28  	"github.com/go-openapi/swag"
    29  	"github.com/go-openapi/validate"
    30  
    31  	"github.com/weaviate/weaviate/entities/models"
    32  )
    33  
    34  // BatchObjectsCreateHandlerFunc turns a function with the right signature into a batch objects create handler
    35  type BatchObjectsCreateHandlerFunc func(BatchObjectsCreateParams, *models.Principal) middleware.Responder
    36  
    37  // Handle executing the request and returning a response
    38  func (fn BatchObjectsCreateHandlerFunc) Handle(params BatchObjectsCreateParams, principal *models.Principal) middleware.Responder {
    39  	return fn(params, principal)
    40  }
    41  
    42  // BatchObjectsCreateHandler interface for that can handle valid batch objects create params
    43  type BatchObjectsCreateHandler interface {
    44  	Handle(BatchObjectsCreateParams, *models.Principal) middleware.Responder
    45  }
    46  
    47  // NewBatchObjectsCreate creates a new http.Handler for the batch objects create operation
    48  func NewBatchObjectsCreate(ctx *middleware.Context, handler BatchObjectsCreateHandler) *BatchObjectsCreate {
    49  	return &BatchObjectsCreate{Context: ctx, Handler: handler}
    50  }
    51  
    52  /*
    53  	BatchObjectsCreate swagger:route POST /batch/objects batch objects batchObjectsCreate
    54  
    55  Creates new Objects based on a Object template as a batch.
    56  
    57  Register new Objects in bulk. Provided meta-data and schema values are validated.
    58  */
    59  type BatchObjectsCreate struct {
    60  	Context *middleware.Context
    61  	Handler BatchObjectsCreateHandler
    62  }
    63  
    64  func (o *BatchObjectsCreate) ServeHTTP(rw http.ResponseWriter, r *http.Request) {
    65  	route, rCtx, _ := o.Context.RouteInfo(r)
    66  	if rCtx != nil {
    67  		*r = *rCtx
    68  	}
    69  	var Params = NewBatchObjectsCreateParams()
    70  	uprinc, aCtx, err := o.Context.Authorize(r, route)
    71  	if err != nil {
    72  		o.Context.Respond(rw, r, route.Produces, route, err)
    73  		return
    74  	}
    75  	if aCtx != nil {
    76  		*r = *aCtx
    77  	}
    78  	var principal *models.Principal
    79  	if uprinc != nil {
    80  		principal = uprinc.(*models.Principal) // this is really a models.Principal, I promise
    81  	}
    82  
    83  	if err := o.Context.BindValidRequest(r, route, &Params); err != nil { // bind params
    84  		o.Context.Respond(rw, r, route.Produces, route, err)
    85  		return
    86  	}
    87  
    88  	res := o.Handler.Handle(Params, principal) // actually handle the request
    89  	o.Context.Respond(rw, r, route.Produces, route, res)
    90  
    91  }
    92  
    93  // BatchObjectsCreateBody batch objects create body
    94  //
    95  // swagger:model BatchObjectsCreateBody
    96  type BatchObjectsCreateBody struct {
    97  
    98  	// Define which fields need to be returned. Default value is ALL
    99  	Fields []*string `json:"fields" yaml:"fields"`
   100  
   101  	// objects
   102  	Objects []*models.Object `json:"objects" yaml:"objects"`
   103  }
   104  
   105  // Validate validates this batch objects create body
   106  func (o *BatchObjectsCreateBody) Validate(formats strfmt.Registry) error {
   107  	var res []error
   108  
   109  	if err := o.validateFields(formats); err != nil {
   110  		res = append(res, err)
   111  	}
   112  
   113  	if err := o.validateObjects(formats); err != nil {
   114  		res = append(res, err)
   115  	}
   116  
   117  	if len(res) > 0 {
   118  		return errors.CompositeValidationError(res...)
   119  	}
   120  	return nil
   121  }
   122  
   123  var batchObjectsCreateBodyFieldsItemsEnum []interface{}
   124  
   125  func init() {
   126  	var res []string
   127  	if err := json.Unmarshal([]byte(`["ALL","class","schema","id","creationTimeUnix"]`), &res); err != nil {
   128  		panic(err)
   129  	}
   130  	for _, v := range res {
   131  		batchObjectsCreateBodyFieldsItemsEnum = append(batchObjectsCreateBodyFieldsItemsEnum, v)
   132  	}
   133  }
   134  
   135  func (o *BatchObjectsCreateBody) validateFieldsItemsEnum(path, location string, value string) error {
   136  	if err := validate.EnumCase(path, location, value, batchObjectsCreateBodyFieldsItemsEnum, true); err != nil {
   137  		return err
   138  	}
   139  	return nil
   140  }
   141  
   142  func (o *BatchObjectsCreateBody) validateFields(formats strfmt.Registry) error {
   143  	if swag.IsZero(o.Fields) { // not required
   144  		return nil
   145  	}
   146  
   147  	for i := 0; i < len(o.Fields); i++ {
   148  		if swag.IsZero(o.Fields[i]) { // not required
   149  			continue
   150  		}
   151  
   152  		// value enum
   153  		if err := o.validateFieldsItemsEnum("body"+"."+"fields"+"."+strconv.Itoa(i), "body", *o.Fields[i]); err != nil {
   154  			return err
   155  		}
   156  
   157  	}
   158  
   159  	return nil
   160  }
   161  
   162  func (o *BatchObjectsCreateBody) validateObjects(formats strfmt.Registry) error {
   163  	if swag.IsZero(o.Objects) { // not required
   164  		return nil
   165  	}
   166  
   167  	for i := 0; i < len(o.Objects); i++ {
   168  		if swag.IsZero(o.Objects[i]) { // not required
   169  			continue
   170  		}
   171  
   172  		if o.Objects[i] != nil {
   173  			if err := o.Objects[i].Validate(formats); err != nil {
   174  				if ve, ok := err.(*errors.Validation); ok {
   175  					return ve.ValidateName("body" + "." + "objects" + "." + strconv.Itoa(i))
   176  				} else if ce, ok := err.(*errors.CompositeError); ok {
   177  					return ce.ValidateName("body" + "." + "objects" + "." + strconv.Itoa(i))
   178  				}
   179  				return err
   180  			}
   181  		}
   182  
   183  	}
   184  
   185  	return nil
   186  }
   187  
   188  // ContextValidate validate this batch objects create body based on the context it is used
   189  func (o *BatchObjectsCreateBody) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
   190  	var res []error
   191  
   192  	if err := o.contextValidateObjects(ctx, formats); err != nil {
   193  		res = append(res, err)
   194  	}
   195  
   196  	if len(res) > 0 {
   197  		return errors.CompositeValidationError(res...)
   198  	}
   199  	return nil
   200  }
   201  
   202  func (o *BatchObjectsCreateBody) contextValidateObjects(ctx context.Context, formats strfmt.Registry) error {
   203  
   204  	for i := 0; i < len(o.Objects); i++ {
   205  
   206  		if o.Objects[i] != nil {
   207  			if err := o.Objects[i].ContextValidate(ctx, formats); err != nil {
   208  				if ve, ok := err.(*errors.Validation); ok {
   209  					return ve.ValidateName("body" + "." + "objects" + "." + strconv.Itoa(i))
   210  				} else if ce, ok := err.(*errors.CompositeError); ok {
   211  					return ce.ValidateName("body" + "." + "objects" + "." + strconv.Itoa(i))
   212  				}
   213  				return err
   214  			}
   215  		}
   216  
   217  	}
   218  
   219  	return nil
   220  }
   221  
   222  // MarshalBinary interface implementation
   223  func (o *BatchObjectsCreateBody) MarshalBinary() ([]byte, error) {
   224  	if o == nil {
   225  		return nil, nil
   226  	}
   227  	return swag.WriteJSON(o)
   228  }
   229  
   230  // UnmarshalBinary interface implementation
   231  func (o *BatchObjectsCreateBody) UnmarshalBinary(b []byte) error {
   232  	var res BatchObjectsCreateBody
   233  	if err := swag.ReadJSON(b, &res); err != nil {
   234  		return err
   235  	}
   236  	*o = res
   237  	return nil
   238  }