DSL for building filter expressions.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("userName", "jdoe")
iex> ExScimClient.Filter.build(filter)
~S|userName eq "jdoe"|
iex> filter1 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("active", "true")
iex> filter2 = ExScimClient.Filter.new() |> ExScimClient.Filter.starts_with("userName", "j")
iex> combined = ExScimClient.Filter.and1(filter1, filter2)
iex> ExScimClient.Filter.build(combined)
~S|(active eq "true") and (userName sw "j")|
Summary
Functions
Combines two filters with an AND operator.
Builds the filter string from the filter struct.
Adds a contains comparison to the filter.
Adds an ends-with comparison to the filter.
Adds an equals comparison to the filter.
Adds a greater-than-or-equal comparison to the filter.
Adds a greater-than comparison to the filter.
Adds a less-than-or-equal comparison to the filter.
Adds a less-than comparison to the filter.
Creates a new empty filter.
Combines two filters with a NOT operator.
Adds a not-equal comparison to the filter.
Combines two filters with an OR operator.
Adds a present comparison to the filter.
Adds a starts-with comparison to the filter.
Types
@type t() :: %ExScimClient.Filter{expr: term() | nil}
Functions
@spec and1(%ExScimClient.Filter{expr: term()}, %ExScimClient.Filter{expr: term()}) :: %ExScimClient.Filter{expr: term()}
Combines two filters with an AND operator.
Examples
iex> filter1 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("active", "true")
iex> filter2 = ExScimClient.Filter.new() |> ExScimClient.Filter.starts_with("userName", "admin")
iex> combined = ExScimClient.Filter.and1(filter1, filter2)
iex> ExScimClient.Filter.build(combined)
~S|(active eq "true") and (userName sw "admin")|
Builds the filter string from the filter struct.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("active", "true")
iex> ExScimClient.Filter.build(filter)
~S|active eq "true"|
@spec contains(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a contains comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.contains("emails.value", "example")
iex> ExScimClient.Filter.build(filter)
~S|emails.value co "example"|
@spec ends_with(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds an ends-with comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.ends_with("emails.value", "example.com")
iex> ExScimClient.Filter.build(filter)
~S|emails.value ew "example.com"|
@spec equals(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds an equals comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("active", "true")
iex> ExScimClient.Filter.build(filter)
~S|active eq "true"|
@spec greater_or_equal(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{expr: term()}
Adds a greater-than-or-equal comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.greater_or_equal("meta.version", "2")
iex> ExScimClient.Filter.build(filter)
~S|meta.version ge "2"|
@spec greater_than(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a greater-than comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.greater_than("meta.lastModified", "2023-01-01T00:00:00Z")
iex> ExScimClient.Filter.build(filter)
~S|meta.lastModified gt "2023-01-01T00:00:00Z"|
@spec less_or_equal(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a less-than-or-equal comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.less_or_equal("meta.version", "10")
iex> ExScimClient.Filter.build(filter)
~S|meta.version le "10"|
@spec less_than(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a less-than comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.less_than("meta.version", "5")
iex> ExScimClient.Filter.build(filter)
~S|meta.version lt "5"|
@spec new() :: %ExScimClient.Filter{expr: term()}
Creates a new empty filter.
Examples
iex> %ExScimClient.Filter{expr: nil} = ExScimClient.Filter.new()
@spec not1(%ExScimClient.Filter{expr: term()}, %ExScimClient.Filter{expr: term()}) :: %ExScimClient.Filter{expr: term()}
Combines two filters with a NOT operator.
Examples
iex> filter1 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("active", "true")
iex> filter2 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("userType", "Employee")
iex> combined = ExScimClient.Filter.not1(filter1, filter2)
iex> ExScimClient.Filter.build(combined)
~S|(active eq "true") not (userType eq "Employee")|
@spec not_equal(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a not-equal comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.not_equal("active", "false")
iex> ExScimClient.Filter.build(filter)
~S|active ne "false"|
@spec or1(%ExScimClient.Filter{expr: term()}, %ExScimClient.Filter{expr: term()}) :: %ExScimClient.Filter{expr: term()}
Combines two filters with an OR operator.
Examples
iex> filter1 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("userType", "Employee")
iex> filter2 = ExScimClient.Filter.new() |> ExScimClient.Filter.equals("userType", "Contractor")
iex> combined = ExScimClient.Filter.or1(filter1, filter2)
iex> ExScimClient.Filter.build(combined)
~S|(userType eq "Employee") or (userType eq "Contractor")|
@spec present(%ExScimClient.Filter{expr: term()}, String.t(), any()) :: %ExScimClient.Filter{ expr: term() }
Adds a present comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.present("emails", nil)
iex> ExScimClient.Filter.build(filter)
"emails pr"
@spec starts_with(%ExScimClient.Filter{expr: term()}, String.t(), String.t()) :: %ExScimClient.Filter{ expr: term() }
Adds a starts-with comparison to the filter.
Examples
iex> filter = ExScimClient.Filter.new() |> ExScimClient.Filter.starts_with("userName", "admin")
iex> ExScimClient.Filter.build(filter)
~S|userName sw "admin"|