github.com/weaviate/weaviate@v1.24.6/entities/models/where_filter.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 models
    15  
    16  // This file was generated by the swagger tool.
    17  // Editing this file might prove futile when you re-run the swagger generate command
    18  
    19  import (
    20  	"context"
    21  	"encoding/json"
    22  	"strconv"
    23  
    24  	"github.com/go-openapi/errors"
    25  	"github.com/go-openapi/strfmt"
    26  	"github.com/go-openapi/swag"
    27  	"github.com/go-openapi/validate"
    28  )
    29  
    30  // WhereFilter Filter search results using a where filter
    31  //
    32  // swagger:model WhereFilter
    33  type WhereFilter struct {
    34  
    35  	// combine multiple where filters, requires 'And' or 'Or' operator
    36  	Operands []*WhereFilter `json:"operands"`
    37  
    38  	// operator to use
    39  	// Example: GreaterThanEqual
    40  	// Enum: [And Or Equal Like NotEqual GreaterThan GreaterThanEqual LessThan LessThanEqual WithinGeoRange IsNull ContainsAny ContainsAll]
    41  	Operator string `json:"operator,omitempty"`
    42  
    43  	// path to the property currently being filtered
    44  	// Example: ["inCity","City","name"]
    45  	Path []string `json:"path"`
    46  
    47  	// value as boolean
    48  	// Example: false
    49  	ValueBoolean *bool `json:"valueBoolean,omitempty"`
    50  
    51  	// value as boolean
    52  	// Example: [true,false]
    53  	ValueBooleanArray []bool `json:"valueBooleanArray,omitempty"`
    54  
    55  	// value as date (as string)
    56  	// Example: TODO
    57  	ValueDate *string `json:"valueDate,omitempty"`
    58  
    59  	// value as date (as string)
    60  	// Example: TODO
    61  	ValueDateArray []string `json:"valueDateArray,omitempty"`
    62  
    63  	// value as geo coordinates and distance
    64  	ValueGeoRange *WhereFilterGeoRange `json:"valueGeoRange,omitempty"`
    65  
    66  	// value as integer
    67  	// Example: 2000
    68  	ValueInt *int64 `json:"valueInt,omitempty"`
    69  
    70  	// value as integer
    71  	// Example: [100, 200]
    72  	ValueIntArray []int64 `json:"valueIntArray,omitempty"`
    73  
    74  	// value as number/float
    75  	// Example: 3.14
    76  	ValueNumber *float64 `json:"valueNumber,omitempty"`
    77  
    78  	// value as number/float
    79  	// Example: [3.14]
    80  	ValueNumberArray []float64 `json:"valueNumberArray,omitempty"`
    81  
    82  	// value as text (deprecated as of v1.19; alias for valueText)
    83  	// Example: my search term
    84  	ValueString *string `json:"valueString,omitempty"`
    85  
    86  	// value as text (deprecated as of v1.19; alias for valueText)
    87  	// Example: ["my search term"]
    88  	ValueStringArray []string `json:"valueStringArray,omitempty"`
    89  
    90  	// value as text
    91  	// Example: my search term
    92  	ValueText *string `json:"valueText,omitempty"`
    93  
    94  	// value as text
    95  	// Example: ["my search term"]
    96  	ValueTextArray []string `json:"valueTextArray,omitempty"`
    97  }
    98  
    99  // Validate validates this where filter
   100  func (m *WhereFilter) Validate(formats strfmt.Registry) error {
   101  	var res []error
   102  
   103  	if err := m.validateOperands(formats); err != nil {
   104  		res = append(res, err)
   105  	}
   106  
   107  	if err := m.validateOperator(formats); err != nil {
   108  		res = append(res, err)
   109  	}
   110  
   111  	if err := m.validateValueGeoRange(formats); err != nil {
   112  		res = append(res, err)
   113  	}
   114  
   115  	if len(res) > 0 {
   116  		return errors.CompositeValidationError(res...)
   117  	}
   118  	return nil
   119  }
   120  
   121  func (m *WhereFilter) validateOperands(formats strfmt.Registry) error {
   122  	if swag.IsZero(m.Operands) { // not required
   123  		return nil
   124  	}
   125  
   126  	for i := 0; i < len(m.Operands); i++ {
   127  		if swag.IsZero(m.Operands[i]) { // not required
   128  			continue
   129  		}
   130  
   131  		if m.Operands[i] != nil {
   132  			if err := m.Operands[i].Validate(formats); err != nil {
   133  				if ve, ok := err.(*errors.Validation); ok {
   134  					return ve.ValidateName("operands" + "." + strconv.Itoa(i))
   135  				} else if ce, ok := err.(*errors.CompositeError); ok {
   136  					return ce.ValidateName("operands" + "." + strconv.Itoa(i))
   137  				}
   138  				return err
   139  			}
   140  		}
   141  
   142  	}
   143  
   144  	return nil
   145  }
   146  
   147  var whereFilterTypeOperatorPropEnum []interface{}
   148  
   149  func init() {
   150  	var res []string
   151  	if err := json.Unmarshal([]byte(`["And","Or","Equal","Like","NotEqual","GreaterThan","GreaterThanEqual","LessThan","LessThanEqual","WithinGeoRange","IsNull","ContainsAny","ContainsAll"]`), &res); err != nil {
   152  		panic(err)
   153  	}
   154  	for _, v := range res {
   155  		whereFilterTypeOperatorPropEnum = append(whereFilterTypeOperatorPropEnum, v)
   156  	}
   157  }
   158  
   159  const (
   160  
   161  	// WhereFilterOperatorAnd captures enum value "And"
   162  	WhereFilterOperatorAnd string = "And"
   163  
   164  	// WhereFilterOperatorOr captures enum value "Or"
   165  	WhereFilterOperatorOr string = "Or"
   166  
   167  	// WhereFilterOperatorEqual captures enum value "Equal"
   168  	WhereFilterOperatorEqual string = "Equal"
   169  
   170  	// WhereFilterOperatorLike captures enum value "Like"
   171  	WhereFilterOperatorLike string = "Like"
   172  
   173  	// WhereFilterOperatorNotEqual captures enum value "NotEqual"
   174  	WhereFilterOperatorNotEqual string = "NotEqual"
   175  
   176  	// WhereFilterOperatorGreaterThan captures enum value "GreaterThan"
   177  	WhereFilterOperatorGreaterThan string = "GreaterThan"
   178  
   179  	// WhereFilterOperatorGreaterThanEqual captures enum value "GreaterThanEqual"
   180  	WhereFilterOperatorGreaterThanEqual string = "GreaterThanEqual"
   181  
   182  	// WhereFilterOperatorLessThan captures enum value "LessThan"
   183  	WhereFilterOperatorLessThan string = "LessThan"
   184  
   185  	// WhereFilterOperatorLessThanEqual captures enum value "LessThanEqual"
   186  	WhereFilterOperatorLessThanEqual string = "LessThanEqual"
   187  
   188  	// WhereFilterOperatorWithinGeoRange captures enum value "WithinGeoRange"
   189  	WhereFilterOperatorWithinGeoRange string = "WithinGeoRange"
   190  
   191  	// WhereFilterOperatorIsNull captures enum value "IsNull"
   192  	WhereFilterOperatorIsNull string = "IsNull"
   193  
   194  	// WhereFilterOperatorContainsAny captures enum value "ContainsAny"
   195  	WhereFilterOperatorContainsAny string = "ContainsAny"
   196  
   197  	// WhereFilterOperatorContainsAll captures enum value "ContainsAll"
   198  	WhereFilterOperatorContainsAll string = "ContainsAll"
   199  )
   200  
   201  // prop value enum
   202  func (m *WhereFilter) validateOperatorEnum(path, location string, value string) error {
   203  	if err := validate.EnumCase(path, location, value, whereFilterTypeOperatorPropEnum, true); err != nil {
   204  		return err
   205  	}
   206  	return nil
   207  }
   208  
   209  func (m *WhereFilter) validateOperator(formats strfmt.Registry) error {
   210  	if swag.IsZero(m.Operator) { // not required
   211  		return nil
   212  	}
   213  
   214  	// value enum
   215  	if err := m.validateOperatorEnum("operator", "body", m.Operator); err != nil {
   216  		return err
   217  	}
   218  
   219  	return nil
   220  }
   221  
   222  func (m *WhereFilter) validateValueGeoRange(formats strfmt.Registry) error {
   223  	if swag.IsZero(m.ValueGeoRange) { // not required
   224  		return nil
   225  	}
   226  
   227  	if m.ValueGeoRange != nil {
   228  		if err := m.ValueGeoRange.Validate(formats); err != nil {
   229  			if ve, ok := err.(*errors.Validation); ok {
   230  				return ve.ValidateName("valueGeoRange")
   231  			} else if ce, ok := err.(*errors.CompositeError); ok {
   232  				return ce.ValidateName("valueGeoRange")
   233  			}
   234  			return err
   235  		}
   236  	}
   237  
   238  	return nil
   239  }
   240  
   241  // ContextValidate validate this where filter based on the context it is used
   242  func (m *WhereFilter) ContextValidate(ctx context.Context, formats strfmt.Registry) error {
   243  	var res []error
   244  
   245  	if err := m.contextValidateOperands(ctx, formats); err != nil {
   246  		res = append(res, err)
   247  	}
   248  
   249  	if err := m.contextValidateValueGeoRange(ctx, formats); err != nil {
   250  		res = append(res, err)
   251  	}
   252  
   253  	if len(res) > 0 {
   254  		return errors.CompositeValidationError(res...)
   255  	}
   256  	return nil
   257  }
   258  
   259  func (m *WhereFilter) contextValidateOperands(ctx context.Context, formats strfmt.Registry) error {
   260  
   261  	for i := 0; i < len(m.Operands); i++ {
   262  
   263  		if m.Operands[i] != nil {
   264  			if err := m.Operands[i].ContextValidate(ctx, formats); err != nil {
   265  				if ve, ok := err.(*errors.Validation); ok {
   266  					return ve.ValidateName("operands" + "." + strconv.Itoa(i))
   267  				} else if ce, ok := err.(*errors.CompositeError); ok {
   268  					return ce.ValidateName("operands" + "." + strconv.Itoa(i))
   269  				}
   270  				return err
   271  			}
   272  		}
   273  
   274  	}
   275  
   276  	return nil
   277  }
   278  
   279  func (m *WhereFilter) contextValidateValueGeoRange(ctx context.Context, formats strfmt.Registry) error {
   280  
   281  	if m.ValueGeoRange != nil {
   282  		if err := m.ValueGeoRange.ContextValidate(ctx, formats); err != nil {
   283  			if ve, ok := err.(*errors.Validation); ok {
   284  				return ve.ValidateName("valueGeoRange")
   285  			} else if ce, ok := err.(*errors.CompositeError); ok {
   286  				return ce.ValidateName("valueGeoRange")
   287  			}
   288  			return err
   289  		}
   290  	}
   291  
   292  	return nil
   293  }
   294  
   295  // MarshalBinary interface implementation
   296  func (m *WhereFilter) MarshalBinary() ([]byte, error) {
   297  	if m == nil {
   298  		return nil, nil
   299  	}
   300  	return swag.WriteJSON(m)
   301  }
   302  
   303  // UnmarshalBinary interface implementation
   304  func (m *WhereFilter) UnmarshalBinary(b []byte) error {
   305  	var res WhereFilter
   306  	if err := swag.ReadJSON(b, &res); err != nil {
   307  		return err
   308  	}
   309  	*m = res
   310  	return nil
   311  }