mirror of
https://github.com/ash-project/ash.git
synced 2024-09-19 21:13:10 +12:00
improvement: simpler and/or short circuiting
This commit is contained in:
parent
cafacee02b
commit
67044646c1
1 changed files with 8 additions and 8 deletions
|
@ -7,11 +7,11 @@ defmodule Ash.Query.BooleanExpression do
|
|||
alias Ash.Query.Operator.{Eq, In, NotEq}
|
||||
alias Ash.Query.Ref
|
||||
|
||||
def new(_, nil, nil), do: nil
|
||||
def new(_, nil, nil), do: false
|
||||
def new(:or, left, nil), do: left
|
||||
def new(:or, nil, right), do: right
|
||||
def new(:and, _, nil), do: nil
|
||||
def new(:and, nil, _), do: nil
|
||||
def new(:and, _, nil), do: false
|
||||
def new(:and, nil, _), do: false
|
||||
|
||||
def new(op, left, right) do
|
||||
%__MODULE__{op: op, left: left, right: right}
|
||||
|
@ -24,17 +24,17 @@ defmodule Ash.Query.BooleanExpression do
|
|||
# statements where possible, which helps with authorization logic that leverages the query
|
||||
# For example, `x in [1, 2] or x == 3` becomes `x in [1, 2, 3]`, and `x in [1, 2, 3] and x != 1`
|
||||
# becomes `x in [2, 3]`
|
||||
def optimized_new(_, nil, nil), do: nil
|
||||
def optimized_new(_, nil, nil), do: false
|
||||
def optimized_new(:and, false, _), do: false
|
||||
def optimized_new(:and, _, false), do: false
|
||||
def optimized_new(:and, nil, _), do: false
|
||||
def optimized_new(:and, _, nil), do: false
|
||||
def optimized_new(:and, true, right), do: right
|
||||
def optimized_new(:and, left, true), do: left
|
||||
def optimized_new(:or, true, _), do: true
|
||||
def optimized_new(:or, _, true), do: true
|
||||
def optimized_new(:or, nil, right), do: right
|
||||
def optimized_new(:or, left, nil), do: left
|
||||
def optimized_new(:and, true, right), do: right
|
||||
def optimized_new(:and, left, true), do: left
|
||||
def optimized_new(:and, nil, _), do: nil
|
||||
def optimized_new(:and, _, nil), do: nil
|
||||
|
||||
def optimized_new(
|
||||
op,
|
||||
|
|
Loading…
Reference in a new issue