Commit graph

25 commits

Author SHA1 Message Date
Zach Daniel
3ee5b059b0 improvement: complete mutually_exclusive_and_collectively_exhaustive logic 2021-12-07 15:08:50 -05:00
Zach Daniel
4448a4eeb7 improvement: catch more equivalencey cases around is_nil in sat solver 2021-12-06 16:50:33 -05:00
Michael St Clair
f9b7223d91
fix: use Date.add when using LessThanOrEqual with date value (#281) 2021-11-13 14:11:32 -05:00
Zach Daniel
7cb4401d8e improvement: support do/else blocks in if
improvement: support `cond`
2021-11-13 13:48:25 -05:00
Zach Daniel
231eeafd30 feat: expression calculations for sorting/filtering
improvement: small improvements/fixes across the board
2021-06-04 01:37:11 -04:00
Zach Daniel
de684a27a8 fix: support non-predicates in satsolver 2021-05-16 21:59:06 -04:00
Zach Daniel
2ffa0e38b6 fix: raise better error w/ invalid filter expression 2021-05-14 17:02:22 -04:00
Zach Daniel
7eea6576a0 docs: fix dangling docs references 2021-03-14 18:29:30 -04:00
Zach Daniel
d42c778a0d improvement: many compile time fixes via code splitting
feat: refactored manage_relationship options/behavior
2021-02-22 20:44:03 -05:00
Zach Daniel
f6f5d194bf feat: freeform expressions
feat: validatiosn in actions

feat: query arguments

feat: add `Ash.Query.for_read/3`

feat: return changeset with API errors

feat: add case insensitive string `CiString`/`:ci_string`

feat: support `context/1` and `arg/1` in filter templates

feat: support targeting notifications with the `for` option

feat: add `ago/2` query function

feat: add basic arithmetic operators (+, *, -, /)

feat: `sensitive?` option for attributes

feat: `sensitive?` option for arguments

feat: `private` arguments, which can’t be set using `for_<action>`

feat: add `prevent_change` which will erase changes just before the changeset is committed

feat: add `match?` validation that supports a custom error message

feat: add `interval` type to support `ago/2` function

feat: add `url_encoded_binary` type

feat: add `function` type

improvement: `changing?` is now a validation

improvement: add `Transformer.get_persisted/3`

improvement: add `api` field to `Notification`

improvement: standardize errors, add `to_error_class`

improvement: use `Comp` everywhere

Improvement: use action on changeset if set by `for_<action_type>`

improvement: `action_failed?` field on change sets

improvement: remove ability for data layers to add operators (for now at least)

Improvement: Changeset.apply_attributes/2 now returns an error tuple

Improvement: add a bunch of new/informative errors

improvement: runtime filter now uses left join logic (a naive implementation of it)

improvement: support more filter templates in resources

Improvement: basic/naive type system for operators/functions

Fix: properly expand module aliases for options w/o compile time dependency

chore(engine): track changeset changes for the request with `manage_changeset?: true`
2021-01-21 15:22:50 -05:00
Zach Daniel
a886fecfd6 improvement: optimize not-in and fix dialyzer 2020-12-31 18:39:15 -05:00
Zach Daniel
60e0dad7b6 improvement: rework filter creation + subset checking
This is one of the most complicated parts of Ash. In order to pass
a filter statement to the satisfiability solver that we use, we have
to first transpile a *value* statement into a *boolean* statement.
This means that we need to embed the knowledge of mutual exclusivity
wherever possible. Authorization still works if the system doesn't know
the relationship between two value statements, as it will attach
the authorization filters if its not sure. But having this in place
should represent a fairly significant optimization in many cases.

Additionally, filter creation has a set of optimizations around the
`eq` and `in` operators to combine them whlie building a boolean
statement
2020-12-31 18:39:15 -05:00
Zach Daniel
0c216c284d
Module updates (#129) 2020-10-07 01:17:17 -04:00
Zach Daniel
114e64f8b4
feat: filter rewrite to op/function/ref based structure 2020-10-06 00:58:06 -04:00
Zach Daniel
243c9f05a2
feat: required belongs_to relationships (#107)
fix: various delegate data layer improvements

fix: engine halting issues

feat: support filter templates on read actions

feat: builtin concat calculation
2020-09-01 23:34:55 -04:00
Zach Daniel
28c236452d
feat: aggregations! 2020-07-23 01:09:59 -04:00
Zach Daniel
28982f03fd
feat: various small refactors + validations 2020-07-15 01:38:42 -04:00
Zach Daniel
e6e9f88710
fix: many filter/side load fixes/improvements 2020-06-21 23:26:47 -04:00
Zach Daniel
1033677259
feat: boolean filter refactor (#78)
feat: predicate behaviour
2020-06-18 22:59:30 -04:00
Zach Daniel
0092af6a94
fix: dialyzer warnings 2020-06-09 01:13:20 -04:00
Zach Daniel
84422d1f98
fix: fix empty filter checks 2020-06-02 18:24:19 -04:00
Zach Daniel
7c987b32bb
chore: wrap up remaining lint errors 2020-06-02 01:47:25 -04:00
Zach Daniel
9ac266e6c0
chore: move #TODO comments into readme for now 2020-06-02 00:41:07 -04:00
Zach Daniel
9a0be3a072
chore: fix dialyzer build errors 2020-06-01 23:23:50 -04:00
Zach Daniel
fdb6f055fa
WIP 2020-05-30 03:29:27 -04:00