...

Source file src/go.einride.tech/aip/filtering/functions.go

Documentation: go.einride.tech/aip/filtering

     1  package filtering
     2  
     3  import expr "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
     4  
     5  // Standard function names.
     6  const (
     7  	FunctionFuzzyAnd      = "FUZZY"
     8  	FunctionAnd           = "AND"
     9  	FunctionOr            = "OR"
    10  	FunctionNot           = "NOT"
    11  	FunctionEquals        = "="
    12  	FunctionNotEquals     = "!="
    13  	FunctionLessThan      = "<"
    14  	FunctionLessEquals    = "<="
    15  	FunctionGreaterEquals = ">="
    16  	FunctionGreaterThan   = ">"
    17  	FunctionHas           = ":"
    18  	FunctionDuration      = "duration"
    19  	FunctionTimestamp     = "timestamp"
    20  )
    21  
    22  // StandardFunctionDeclarations returns declarations for all standard functions and their standard overloads.
    23  func StandardFunctionDeclarations() []*expr.Decl {
    24  	return []*expr.Decl{
    25  		StandardFunctionTimestamp(),
    26  		StandardFunctionDuration(),
    27  		StandardFunctionHas(),
    28  		StandardFunctionAnd(),
    29  		StandardFunctionOr(),
    30  		StandardFunctionNot(),
    31  		StandardFunctionLessThan(),
    32  		StandardFunctionLessEquals(),
    33  		StandardFunctionGreaterThan(),
    34  		StandardFunctionGreaterEquals(),
    35  		StandardFunctionEquals(),
    36  		StandardFunctionNotEquals(),
    37  	}
    38  }
    39  
    40  // Timestamp overloads.
    41  const (
    42  	FunctionOverloadTimestampString = FunctionTimestamp + "_string"
    43  )
    44  
    45  // StandardFunctionTimestamp returns a declaration for the standard `timestamp` function and all its standard overloads.
    46  func StandardFunctionTimestamp() *expr.Decl {
    47  	return NewFunctionDeclaration(
    48  		FunctionTimestamp,
    49  		NewFunctionOverload(FunctionOverloadTimestampString, TypeTimestamp, TypeString),
    50  	)
    51  }
    52  
    53  // Duration overloads.
    54  const (
    55  	FunctionOverloadDurationString = FunctionDuration + "_string"
    56  )
    57  
    58  // StandardFunctionDuration returns a declaration for the standard `duration` function and all its standard overloads.
    59  func StandardFunctionDuration() *expr.Decl {
    60  	return NewFunctionDeclaration(
    61  		FunctionDuration,
    62  		NewFunctionOverload(FunctionOverloadDurationString, TypeDuration, TypeString),
    63  	)
    64  }
    65  
    66  // Has overloads.
    67  const (
    68  	FunctionOverloadHasString          = FunctionHas + "_string"
    69  	FunctionOverloadHasMapStringString = FunctionHas + "_map_string_string"
    70  	FunctionOverloadHasListString      = FunctionHas + "_list_string"
    71  )
    72  
    73  // StandardFunctionHas returns a declaration for the standard `:` function and all its standard overloads.
    74  func StandardFunctionHas() *expr.Decl {
    75  	return NewFunctionDeclaration(
    76  		FunctionHas,
    77  		NewFunctionOverload(FunctionOverloadHasString, TypeBool, TypeString, TypeString),
    78  		// TODO: Remove this after implementing support for type parameters.
    79  		NewFunctionOverload(FunctionOverloadHasMapStringString, TypeBool, TypeMap(TypeString, TypeString), TypeString),
    80  		NewFunctionOverload(FunctionOverloadHasListString, TypeBool, TypeList(TypeString), TypeString),
    81  	)
    82  }
    83  
    84  // And overloads.
    85  const (
    86  	FunctionOverloadAndBool = FunctionAnd + "_bool"
    87  )
    88  
    89  // StandardFunctionAnd returns a declaration for the standard `AND` function and all its standard overloads.
    90  func StandardFunctionAnd() *expr.Decl {
    91  	return NewFunctionDeclaration(
    92  		FunctionAnd,
    93  		NewFunctionOverload(FunctionOverloadAndBool, TypeBool, TypeBool, TypeBool),
    94  	)
    95  }
    96  
    97  // Or overloads.
    98  const (
    99  	FunctionOverloadOrBool = FunctionOr + "_bool"
   100  )
   101  
   102  // StandardFunctionOr returns a declaration for the standard `OR` function and all its standard overloads.
   103  func StandardFunctionOr() *expr.Decl {
   104  	return NewFunctionDeclaration(
   105  		FunctionOr,
   106  		NewFunctionOverload(FunctionOverloadOrBool, TypeBool, TypeBool, TypeBool),
   107  	)
   108  }
   109  
   110  // Not overloads.
   111  const (
   112  	FunctionOverloadNotBool = FunctionNot + "_bool"
   113  )
   114  
   115  // StandardFunctionNot returns a declaration for the standard `NOT` function and all its standard overloads.
   116  func StandardFunctionNot() *expr.Decl {
   117  	return NewFunctionDeclaration(
   118  		FunctionNot,
   119  		NewFunctionOverload(FunctionOverloadNotBool, TypeBool, TypeBool),
   120  	)
   121  }
   122  
   123  // LessThan overloads.
   124  const (
   125  	FunctionOverloadLessThanInt             = FunctionLessThan + "_int"
   126  	FunctionOverloadLessThanFloat           = FunctionLessThan + "_float"
   127  	FunctionOverloadLessThanString          = FunctionLessThan + "_string"
   128  	FunctionOverloadLessThanTimestamp       = FunctionLessThan + "_timestamp"
   129  	FunctionOverloadLessThanTimestampString = FunctionLessThan + "_timestamp_string"
   130  	FunctionOverloadLessThanDuration        = FunctionLessThan + "_duration"
   131  )
   132  
   133  // StandardFunctionLessThan returns a declaration for the standard '<' function and all its standard overloads.
   134  func StandardFunctionLessThan() *expr.Decl {
   135  	return NewFunctionDeclaration(
   136  		FunctionLessThan,
   137  		NewFunctionOverload(FunctionOverloadLessThanInt, TypeBool, TypeInt, TypeInt),
   138  		NewFunctionOverload(FunctionOverloadLessThanFloat, TypeBool, TypeFloat, TypeFloat),
   139  		NewFunctionOverload(FunctionOverloadLessThanString, TypeBool, TypeString, TypeString),
   140  		NewFunctionOverload(FunctionOverloadLessThanTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   141  		NewFunctionOverload(FunctionOverloadLessThanTimestampString, TypeBool, TypeTimestamp, TypeString),
   142  		NewFunctionOverload(FunctionOverloadLessThanDuration, TypeBool, TypeDuration, TypeDuration),
   143  	)
   144  }
   145  
   146  // GreaterThan overloads.
   147  const (
   148  	FunctionOverloadGreaterThanInt             = FunctionGreaterThan + "_int"
   149  	FunctionOverloadGreaterThanFloat           = FunctionGreaterThan + "_float"
   150  	FunctionOverloadGreaterThanString          = FunctionGreaterThan + "_string"
   151  	FunctionOverloadGreaterThanTimestamp       = FunctionGreaterThan + "_timestamp"
   152  	FunctionOverloadGreaterThanTimestampString = FunctionGreaterThan + "_timestamp_string"
   153  	FunctionOverloadGreaterThanDuration        = FunctionGreaterThan + "_duration"
   154  )
   155  
   156  // StandardFunctionGreaterThan returns a declaration for the standard '>' function and all its standard overloads.
   157  func StandardFunctionGreaterThan() *expr.Decl {
   158  	return NewFunctionDeclaration(
   159  		FunctionGreaterThan,
   160  		NewFunctionOverload(FunctionOverloadGreaterThanInt, TypeBool, TypeInt, TypeInt),
   161  		NewFunctionOverload(FunctionOverloadGreaterThanFloat, TypeBool, TypeFloat, TypeFloat),
   162  		NewFunctionOverload(FunctionOverloadGreaterThanString, TypeBool, TypeString, TypeString),
   163  		NewFunctionOverload(FunctionOverloadGreaterThanTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   164  		NewFunctionOverload(FunctionOverloadGreaterThanTimestampString, TypeBool, TypeTimestamp, TypeString),
   165  		NewFunctionOverload(FunctionOverloadGreaterThanDuration, TypeBool, TypeDuration, TypeDuration),
   166  	)
   167  }
   168  
   169  // LessEquals overloads.
   170  const (
   171  	FunctionOverloadLessEqualsInt             = FunctionLessEquals + "_int"
   172  	FunctionOverloadLessEqualsFloat           = FunctionLessEquals + "_float"
   173  	FunctionOverloadLessEqualsString          = FunctionLessEquals + "_string"
   174  	FunctionOverloadLessEqualsTimestamp       = FunctionLessEquals + "_timestamp"
   175  	FunctionOverloadLessEqualsTimestampString = FunctionLessEquals + "_timestamp_string"
   176  	FunctionOverloadLessEqualsDuration        = FunctionLessEquals + "_duration"
   177  )
   178  
   179  // StandardFunctionLessEquals returns a declaration for the standard '<=' function and all its standard overloads.
   180  func StandardFunctionLessEquals() *expr.Decl {
   181  	return NewFunctionDeclaration(
   182  		FunctionLessEquals,
   183  		NewFunctionOverload(FunctionOverloadLessEqualsInt, TypeBool, TypeInt, TypeInt),
   184  		NewFunctionOverload(FunctionOverloadLessEqualsFloat, TypeBool, TypeFloat, TypeFloat),
   185  		NewFunctionOverload(FunctionOverloadLessEqualsString, TypeBool, TypeString, TypeString),
   186  		NewFunctionOverload(FunctionOverloadLessEqualsTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   187  		NewFunctionOverload(FunctionOverloadLessEqualsTimestampString, TypeBool, TypeTimestamp, TypeString),
   188  		NewFunctionOverload(FunctionOverloadLessEqualsDuration, TypeBool, TypeDuration, TypeDuration),
   189  	)
   190  }
   191  
   192  // GreaterEquals overloads.
   193  const (
   194  	FunctionOverloadGreaterEqualsInt             = FunctionGreaterEquals + "_int"
   195  	FunctionOverloadGreaterEqualsFloat           = FunctionGreaterEquals + "_float"
   196  	FunctionOverloadGreaterEqualsString          = FunctionGreaterEquals + "_string"
   197  	FunctionOverloadGreaterEqualsTimestamp       = FunctionGreaterEquals + "_timestamp"
   198  	FunctionOverloadGreaterEqualsTimestampString = FunctionGreaterEquals + "_timestamp_string"
   199  	FunctionOverloadGreaterEqualsDuration        = FunctionGreaterEquals + "_duration"
   200  )
   201  
   202  // StandardFunctionGreaterEquals returns a declaration for the standard '>=' function and all its standard overloads.
   203  func StandardFunctionGreaterEquals() *expr.Decl {
   204  	return NewFunctionDeclaration(
   205  		FunctionGreaterEquals,
   206  		NewFunctionOverload(FunctionOverloadGreaterEqualsInt, TypeBool, TypeInt, TypeInt),
   207  		NewFunctionOverload(FunctionOverloadGreaterEqualsFloat, TypeBool, TypeFloat, TypeFloat),
   208  		NewFunctionOverload(FunctionOverloadGreaterEqualsString, TypeBool, TypeString, TypeString),
   209  		NewFunctionOverload(FunctionOverloadGreaterEqualsTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   210  		NewFunctionOverload(FunctionOverloadGreaterEqualsTimestampString, TypeBool, TypeTimestamp, TypeString),
   211  		NewFunctionOverload(FunctionOverloadGreaterEqualsDuration, TypeBool, TypeDuration, TypeDuration),
   212  	)
   213  }
   214  
   215  // Equals overloads.
   216  const (
   217  	FunctionOverloadEqualsBool            = FunctionEquals + "_bool"
   218  	FunctionOverloadEqualsInt             = FunctionEquals + "_int"
   219  	FunctionOverloadEqualsFloat           = FunctionEquals + "_float"
   220  	FunctionOverloadEqualsString          = FunctionEquals + "_string"
   221  	FunctionOverloadEqualsTimestamp       = FunctionEquals + "_timestamp"
   222  	FunctionOverloadEqualsTimestampString = FunctionEquals + "_timestamp_string"
   223  	FunctionOverloadEqualsDuration        = FunctionEquals + "_duration"
   224  )
   225  
   226  // StandardFunctionEquals returns a declaration for the standard '=' function and all its standard overloads.
   227  func StandardFunctionEquals() *expr.Decl {
   228  	return NewFunctionDeclaration(
   229  		FunctionEquals,
   230  		NewFunctionOverload(FunctionOverloadEqualsBool, TypeBool, TypeBool, TypeBool),
   231  		NewFunctionOverload(FunctionOverloadEqualsInt, TypeBool, TypeInt, TypeInt),
   232  		NewFunctionOverload(FunctionOverloadEqualsFloat, TypeBool, TypeFloat, TypeFloat),
   233  		NewFunctionOverload(FunctionOverloadEqualsString, TypeBool, TypeString, TypeString),
   234  		NewFunctionOverload(FunctionOverloadEqualsTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   235  		NewFunctionOverload(FunctionOverloadEqualsTimestampString, TypeBool, TypeTimestamp, TypeString),
   236  		NewFunctionOverload(FunctionOverloadEqualsDuration, TypeBool, TypeDuration, TypeDuration),
   237  	)
   238  }
   239  
   240  // NotEquals overloads.
   241  const (
   242  	FunctionOverloadNotEqualsBool            = FunctionNotEquals + "_bool"
   243  	FunctionOverloadNotEqualsInt             = FunctionNotEquals + "_int"
   244  	FunctionOverloadNotEqualsFloat           = FunctionNotEquals + "_float"
   245  	FunctionOverloadNotEqualsString          = FunctionNotEquals + "_string"
   246  	FunctionOverloadNotEqualsTimestamp       = FunctionNotEquals + "_timestamp"
   247  	FunctionOverloadNotEqualsTimestampString = FunctionNotEquals + "_timestamp_string"
   248  	FunctionOverloadNotEqualsDuration        = FunctionNotEquals + "_duration"
   249  )
   250  
   251  // StandardFunctionNotEquals returns a declaration for the standard '!=' function and all its standard overloads.
   252  func StandardFunctionNotEquals() *expr.Decl {
   253  	return NewFunctionDeclaration(
   254  		FunctionNotEquals,
   255  		NewFunctionOverload(FunctionOverloadNotEqualsBool, TypeBool, TypeBool, TypeBool),
   256  		NewFunctionOverload(FunctionOverloadNotEqualsInt, TypeBool, TypeInt, TypeInt),
   257  		NewFunctionOverload(FunctionOverloadNotEqualsFloat, TypeBool, TypeFloat, TypeFloat),
   258  		NewFunctionOverload(FunctionOverloadNotEqualsString, TypeBool, TypeString, TypeString),
   259  		NewFunctionOverload(FunctionOverloadNotEqualsTimestamp, TypeBool, TypeTimestamp, TypeTimestamp),
   260  		NewFunctionOverload(FunctionOverloadNotEqualsTimestampString, TypeBool, TypeTimestamp, TypeString),
   261  		NewFunctionOverload(FunctionOverloadNotEqualsDuration, TypeBool, TypeDuration, TypeDuration),
   262  	)
   263  }
   264  

View as plain text