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 }