eintopf.info@v0.13.16/service/eventsearch/filter.go (about) 1 // Code generated by scripts/gen/go/searchfilter/main.go. DO NOT EDIT. 2 package eventsearch 3 4 import ( 5 "fmt" 6 "net/url" 7 "strconv" 8 "time" 9 10 "eintopf.info/service/search" 11 ) 12 13 func filtersFromQuery(q url.Values, prefix string) (Filters, error) { 14 filters := Filters{} 15 16 children := q.Get(fmt.Sprintf("%schildren", prefix)) 17 if children == "true" { 18 filters = append(filters, ChildrenFilter{ 19 Children: true, 20 }) 21 } else if children == "false" { 22 filters = append(filters, ChildrenFilter{ 23 Children: false, 24 }) 25 } else if children != "" { 26 return nil, fmt.Errorf("parse query(children): value must be true or false") 27 } 28 29 dateRaw := q.Get(fmt.Sprintf("%sdate", prefix)) 30 if dateRaw != "" { 31 date, err := time.Parse(time.RFC3339, dateRaw) 32 if err != nil { 33 return nil, fmt.Errorf("parse query(date): %s", err) 34 } 35 filters = append(filters, DateFilter{ 36 Date: date, 37 }) 38 } 39 40 dateMinRaw := q.Get(fmt.Sprintf("%sdateMin", prefix)) 41 dateMin := time.Time{} 42 if dateMinRaw != "" { 43 var err error 44 dateMin, err = time.Parse(time.RFC3339, dateMinRaw) 45 if err != nil { 46 return nil, fmt.Errorf("parse query(dateMin): %s", err) 47 } 48 } 49 dateMaxRaw := q.Get(fmt.Sprintf("%sdateMax", prefix)) 50 dateMax := time.Time{} 51 if dateMaxRaw != "" { 52 var err error 53 dateMax, err = time.Parse(time.RFC3339, dateMaxRaw) 54 if err != nil { 55 return nil, fmt.Errorf("parse query(dateMax): %s", err) 56 } 57 } 58 59 if !(dateMin.IsZero() && dateMax.IsZero()) { 60 filters = append(filters, DateRangeFilter{ 61 DateMin: dateMin, 62 DateMax: dateMax, 63 }) 64 } 65 66 dayRaw := q.Get(fmt.Sprintf("%sday", prefix)) 67 if dayRaw != "" { 68 day, err := time.Parse(time.RFC3339, dayRaw) 69 if err != nil { 70 return nil, fmt.Errorf("parse query(day): %s", err) 71 } 72 filters = append(filters, DayFilter{ 73 Day: day, 74 }) 75 } 76 77 dayMinRaw := q.Get(fmt.Sprintf("%sdayMin", prefix)) 78 dayMin := time.Time{} 79 if dayMinRaw != "" { 80 var err error 81 dayMin, err = time.Parse(time.RFC3339, dayMinRaw) 82 if err != nil { 83 return nil, fmt.Errorf("parse query(dayMin): %s", err) 84 } 85 } 86 dayMaxRaw := q.Get(fmt.Sprintf("%sdayMax", prefix)) 87 dayMax := time.Time{} 88 if dayMaxRaw != "" { 89 var err error 90 dayMax, err = time.Parse(time.RFC3339, dayMaxRaw) 91 if err != nil { 92 return nil, fmt.Errorf("parse query(dayMax): %s", err) 93 } 94 } 95 96 if !(dayMin.IsZero() && dayMax.IsZero()) { 97 filters = append(filters, DayRangeFilter{ 98 DayMin: dayMin, 99 DayMax: dayMax, 100 }) 101 } 102 103 endRaw := q.Get(fmt.Sprintf("%send", prefix)) 104 if endRaw != "" { 105 end, err := time.Parse(time.RFC3339, endRaw) 106 if err != nil { 107 return nil, fmt.Errorf("parse query(end): %s", err) 108 } 109 filters = append(filters, EndFilter{ 110 End: end, 111 }) 112 } 113 114 endMinRaw := q.Get(fmt.Sprintf("%sendMin", prefix)) 115 endMin := time.Time{} 116 if endMinRaw != "" { 117 var err error 118 endMin, err = time.Parse(time.RFC3339, endMinRaw) 119 if err != nil { 120 return nil, fmt.Errorf("parse query(endMin): %s", err) 121 } 122 } 123 endMaxRaw := q.Get(fmt.Sprintf("%sendMax", prefix)) 124 endMax := time.Time{} 125 if endMaxRaw != "" { 126 var err error 127 endMax, err = time.Parse(time.RFC3339, endMaxRaw) 128 if err != nil { 129 return nil, fmt.Errorf("parse query(endMax): %s", err) 130 } 131 } 132 133 if !(endMin.IsZero() && endMax.IsZero()) { 134 filters = append(filters, EndRangeFilter{ 135 EndMin: endMin, 136 EndMax: endMax, 137 }) 138 } 139 140 groupIDs := q[fmt.Sprintf("%sgroupIDs", prefix)] 141 if groupIDs != nil && len(groupIDs) > 0 { 142 filters = append(filters, GroupIDsFilter{ 143 GroupIDs: groupIDs, 144 }) 145 } 146 147 ids := q[fmt.Sprintf("%sids", prefix)] 148 if ids != nil && len(ids) > 0 { 149 filters = append(filters, IDsFilter{ 150 IDs: ids, 151 }) 152 } 153 154 iss := q[fmt.Sprintf("%siss", prefix)] 155 if iss != nil && len(iss) > 0 { 156 filters = append(filters, ISsFilter{ 157 ISs: iss, 158 }) 159 } 160 161 listed := q.Get(fmt.Sprintf("%slisted", prefix)) 162 if listed == "true" { 163 filters = append(filters, ListedFilter{ 164 Listed: true, 165 }) 166 } else if listed == "false" { 167 filters = append(filters, ListedFilter{ 168 Listed: false, 169 }) 170 } else if listed != "" { 171 return nil, fmt.Errorf("parse query(listed): value must be true or false") 172 } 173 174 locations := q[fmt.Sprintf("%slocations", prefix)] 175 if locations != nil && len(locations) > 0 { 176 filters = append(filters, LocationsFilter{ 177 Locations: locations, 178 }) 179 } 180 181 location2s := q[fmt.Sprintf("%slocation2s", prefix)] 182 if location2s != nil && len(location2s) > 0 { 183 filters = append(filters, Location2sFilter{ 184 Location2s: location2s, 185 }) 186 } 187 188 multiday := q.Get(fmt.Sprintf("%smultiday", prefix)) 189 if multiday != "" { 190 parsed, err := strconv.Atoi(multiday) 191 if err != nil { 192 return nil, fmt.Errorf("parse query(multiday) '%s': %s", multiday, err) 193 } 194 filters = append(filters, MultidayFilter{ 195 Multiday: parsed, 196 }) 197 } 198 199 names := q[fmt.Sprintf("%snames", prefix)] 200 if names != nil && len(names) > 0 { 201 filters = append(filters, NamesFilter{ 202 Names: names, 203 }) 204 } 205 206 organizers := q[fmt.Sprintf("%sorganizers", prefix)] 207 if organizers != nil && len(organizers) > 0 { 208 filters = append(filters, OrganizersFilter{ 209 Organizers: organizers, 210 }) 211 } 212 213 ownedBys := q[fmt.Sprintf("%sownedBys", prefix)] 214 if ownedBys != nil && len(ownedBys) > 0 { 215 filters = append(filters, OwnedBysFilter{ 216 OwnedBys: ownedBys, 217 }) 218 } 219 220 placeIDs := q[fmt.Sprintf("%splaceIDs", prefix)] 221 if placeIDs != nil && len(placeIDs) > 0 { 222 filters = append(filters, PlaceIDsFilter{ 223 PlaceIDs: placeIDs, 224 }) 225 } 226 227 startRaw := q.Get(fmt.Sprintf("%sstart", prefix)) 228 if startRaw != "" { 229 start, err := time.Parse(time.RFC3339, startRaw) 230 if err != nil { 231 return nil, fmt.Errorf("parse query(start): %s", err) 232 } 233 filters = append(filters, StartFilter{ 234 Start: start, 235 }) 236 } 237 238 startMinRaw := q.Get(fmt.Sprintf("%sstartMin", prefix)) 239 startMin := time.Time{} 240 if startMinRaw != "" { 241 var err error 242 startMin, err = time.Parse(time.RFC3339, startMinRaw) 243 if err != nil { 244 return nil, fmt.Errorf("parse query(startMin): %s", err) 245 } 246 } 247 startMaxRaw := q.Get(fmt.Sprintf("%sstartMax", prefix)) 248 startMax := time.Time{} 249 if startMaxRaw != "" { 250 var err error 251 startMax, err = time.Parse(time.RFC3339, startMaxRaw) 252 if err != nil { 253 return nil, fmt.Errorf("parse query(startMax): %s", err) 254 } 255 } 256 257 if !(startMin.IsZero() && startMax.IsZero()) { 258 filters = append(filters, StartRangeFilter{ 259 StartMin: startMin, 260 StartMax: startMax, 261 }) 262 } 263 264 tags := q[fmt.Sprintf("%stags", prefix)] 265 if tags != nil && len(tags) > 0 { 266 filters = append(filters, TagsFilter{ 267 Tags: tags, 268 }) 269 } 270 271 return filters, nil 272 } 273 274 type NotFilter struct { 275 Filter Filter 276 } 277 278 func (n NotFilter) SearchFilter() search.Filter { 279 return &search.NotFilter{Filter: n.Filter.SearchFilter()} 280 } 281 282 type ChildrenFilter struct { 283 Children bool 284 } 285 286 func (f ChildrenFilter) SearchFilter() search.Filter { 287 return &search.BoolFilter{Field: "children", Value: f.Children} 288 } 289 290 type DateFilter struct { 291 Date time.Time 292 } 293 294 func (f DateFilter) SearchFilter() search.Filter { 295 return &search.TermsFilter{Field: "date", Terms: []string{f.Date.String()}} 296 } 297 298 type DateRangeFilter struct { 299 DateMin time.Time 300 DateMax time.Time 301 } 302 303 func (f DateRangeFilter) SearchFilter() search.Filter { 304 return &search.DateRangeFilter{Field: "date", Min: f.DateMin, Max: f.DateMax} 305 } 306 307 type DayFilter struct { 308 Day time.Time 309 } 310 311 func (f DayFilter) SearchFilter() search.Filter { 312 return &search.TermsFilter{Field: "day", Terms: []string{f.Day.String()}} 313 } 314 315 type DayRangeFilter struct { 316 DayMin time.Time 317 DayMax time.Time 318 } 319 320 func (f DayRangeFilter) SearchFilter() search.Filter { 321 return &search.DateRangeFilter{Field: "day", Min: f.DayMin, Max: f.DayMax} 322 } 323 324 type EndFilter struct { 325 End time.Time 326 } 327 328 func (f EndFilter) SearchFilter() search.Filter { 329 return &search.TermsFilter{Field: "end", Terms: []string{f.End.String()}} 330 } 331 332 type EndRangeFilter struct { 333 EndMin time.Time 334 EndMax time.Time 335 } 336 337 func (f EndRangeFilter) SearchFilter() search.Filter { 338 return &search.DateRangeFilter{Field: "end", Min: f.EndMin, Max: f.EndMax} 339 } 340 341 type GroupIDFilter struct { 342 GroupID string 343 } 344 345 func (f GroupIDFilter) SearchFilter() search.Filter { 346 return &search.TermsFilter{Field: "groupID", Terms: []string{f.GroupID}} 347 } 348 349 type GroupIDsFilter struct { 350 GroupIDs []string 351 } 352 353 func (f GroupIDsFilter) SearchFilter() search.Filter { 354 return &search.TermsFilter{Field: "groupID", Terms: f.GroupIDs} 355 } 356 357 type IDFilter struct { 358 ID string 359 } 360 361 func (f IDFilter) SearchFilter() search.Filter { 362 return &search.TermsFilter{Field: "id", Terms: []string{f.ID}} 363 } 364 365 type IDsFilter struct { 366 IDs []string 367 } 368 369 func (f IDsFilter) SearchFilter() search.Filter { 370 return &search.TermsFilter{Field: "id", Terms: f.IDs} 371 } 372 373 type ISFilter struct { 374 IS string 375 } 376 377 func (f ISFilter) SearchFilter() search.Filter { 378 return &search.TermsFilter{Field: "is", Terms: []string{f.IS}} 379 } 380 381 type ISsFilter struct { 382 ISs []string 383 } 384 385 func (f ISsFilter) SearchFilter() search.Filter { 386 return &search.TermsFilter{Field: "is", Terms: f.ISs} 387 } 388 389 type ListedFilter struct { 390 Listed bool 391 } 392 393 func (f ListedFilter) SearchFilter() search.Filter { 394 return &search.BoolFilter{Field: "listed", Value: f.Listed} 395 } 396 397 type LocationFilter struct { 398 Location string 399 } 400 401 func (f LocationFilter) SearchFilter() search.Filter { 402 return &search.TermsFilter{Field: "location", Terms: []string{f.Location}} 403 } 404 405 type LocationsFilter struct { 406 Locations []string 407 } 408 409 func (f LocationsFilter) SearchFilter() search.Filter { 410 return &search.TermsFilter{Field: "location", Terms: f.Locations} 411 } 412 413 type Location2Filter struct { 414 Location2 string 415 } 416 417 func (f Location2Filter) SearchFilter() search.Filter { 418 return &search.TermsFilter{Field: "location2", Terms: []string{f.Location2}} 419 } 420 421 type Location2sFilter struct { 422 Location2s []string 423 } 424 425 func (f Location2sFilter) SearchFilter() search.Filter { 426 return &search.TermsFilter{Field: "location2", Terms: f.Location2s} 427 } 428 429 type MultidayFilter struct { 430 Multiday int 431 } 432 433 func (f MultidayFilter) SearchFilter() search.Filter { 434 return &search.TermsFilter{Field: "multiday", Terms: []string{fmt.Sprintf("%d", f.Multiday)}} 435 } 436 437 type MultidayRangeFilter struct { 438 MultidayMin *int 439 MultidayMax *int 440 } 441 442 func (f MultidayRangeFilter) SearchFilter() search.Filter { 443 filter := &search.NumericRangeFilter{Field: "multiday"} 444 if f.MultidayMin != nil { 445 minF := float64(*f.MultidayMin) 446 filter.Min = &minF 447 } 448 if f.MultidayMax != nil { 449 maxF := float64(*f.MultidayMax) 450 filter.Max = &maxF 451 } 452 return filter 453 } 454 455 type NameFilter struct { 456 Name string 457 } 458 459 func (f NameFilter) SearchFilter() search.Filter { 460 return &search.TermsFilter{Field: "name", Terms: []string{f.Name}} 461 } 462 463 type NamesFilter struct { 464 Names []string 465 } 466 467 func (f NamesFilter) SearchFilter() search.Filter { 468 return &search.TermsFilter{Field: "name", Terms: f.Names} 469 } 470 471 type OrganizerFilter struct { 472 Organizer string 473 } 474 475 func (f OrganizerFilter) SearchFilter() search.Filter { 476 return &search.TermsFilter{Field: "organizer", Terms: []string{f.Organizer}} 477 } 478 479 type OrganizersFilter struct { 480 Organizers []string 481 } 482 483 func (f OrganizersFilter) SearchFilter() search.Filter { 484 return &search.TermsFilter{Field: "organizer", Terms: f.Organizers} 485 } 486 487 type OwnedByFilter struct { 488 OwnedBy string 489 } 490 491 func (f OwnedByFilter) SearchFilter() search.Filter { 492 return &search.TermsFilter{Field: "ownedBy", Terms: []string{f.OwnedBy}} 493 } 494 495 type OwnedBysFilter struct { 496 OwnedBys []string 497 } 498 499 func (f OwnedBysFilter) SearchFilter() search.Filter { 500 return &search.TermsFilter{Field: "ownedBy", Terms: f.OwnedBys} 501 } 502 503 type PlaceIDFilter struct { 504 PlaceID string 505 } 506 507 func (f PlaceIDFilter) SearchFilter() search.Filter { 508 return &search.TermsFilter{Field: "placeID", Terms: []string{f.PlaceID}} 509 } 510 511 type PlaceIDsFilter struct { 512 PlaceIDs []string 513 } 514 515 func (f PlaceIDsFilter) SearchFilter() search.Filter { 516 return &search.TermsFilter{Field: "placeID", Terms: f.PlaceIDs} 517 } 518 519 type StartFilter struct { 520 Start time.Time 521 } 522 523 func (f StartFilter) SearchFilter() search.Filter { 524 return &search.TermsFilter{Field: "start", Terms: []string{f.Start.String()}} 525 } 526 527 type StartRangeFilter struct { 528 StartMin time.Time 529 StartMax time.Time 530 } 531 532 func (f StartRangeFilter) SearchFilter() search.Filter { 533 return &search.DateRangeFilter{Field: "start", Min: f.StartMin, Max: f.StartMax} 534 } 535 536 type TagFilter struct { 537 Tag string 538 } 539 540 func (f TagFilter) SearchFilter() search.Filter { 541 return &search.TermsFilter{Field: "tag", Terms: []string{f.Tag}} 542 } 543 544 type TagsFilter struct { 545 Tags []string 546 } 547 548 func (f TagsFilter) SearchFilter() search.Filter { 549 return &search.TermsFilter{Field: "tag", Terms: f.Tags} 550 }