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  }