github.com/tobgu/qframe@v0.4.0/internal/fcolumn/generator.go (about)

     1  package fcolumn
     2  
     3  import (
     4  	"bytes"
     5  
     6  	"github.com/tobgu/qframe/filter"
     7  	"github.com/tobgu/qframe/internal/maps"
     8  	"github.com/tobgu/qframe/internal/template"
     9  )
    10  
    11  //go:generate qfgenerate -source=ffilter -dst-file=filters_gen.go
    12  //go:generate qfgenerate -source=fdoc -dst-file=doc_gen.go
    13  
    14  func spec(name, operator, templateStr string) template.Spec {
    15  	return template.Spec{
    16  		Name:     name,
    17  		Template: templateStr,
    18  		Values:   map[string]interface{}{"name": name, "dataType": "float64", "operator": operator}}
    19  }
    20  
    21  func colConstComparison(name, operator string) template.Spec {
    22  	return spec(name, operator, template.BasicColConstComparison)
    23  }
    24  
    25  func colColComparison(name, operator string) template.Spec {
    26  	return spec(name, operator, template.BasicColColComparison)
    27  }
    28  
    29  func GenerateFilters() (*bytes.Buffer, error) {
    30  	// If adding more filters here make sure to also add a reference to them
    31  	// in the corresponding filter map so that they can be looked up.
    32  	return template.GenerateFilters("fcolumn", []template.Spec{
    33  		colConstComparison("lt", filter.Lt),
    34  		colConstComparison("lte", filter.Lte),
    35  		colConstComparison("gt", filter.Gt),
    36  		colConstComparison("gte", filter.Gte),
    37  		colConstComparison("eq", "=="), // Go eq ("==") differs from qframe eq ("=")
    38  		colConstComparison("neq", filter.Neq),
    39  		colColComparison("lt2", filter.Lt),
    40  		colColComparison("lte2", filter.Lte),
    41  		colColComparison("gt2", filter.Gt),
    42  		colColComparison("gte2", filter.Gte),
    43  		colColComparison("eq2", "=="), // Go eq ("==") differs from qframe eq ("=")
    44  		colColComparison("neq2", filter.Neq),
    45  	})
    46  }
    47  
    48  func GenerateDoc() (*bytes.Buffer, error) {
    49  	return template.GenerateDocs(
    50  		"fcolumn",
    51  		maps.StringKeys(filterFuncs0, filterFuncs1, filterFuncs2),
    52  		maps.StringKeys(aggregations))
    53  }