Riccardo Binetti
66d2f44443
feat: add Relay ID translation in mutation and queries ( #109 )
...
Adds a new option for queries and mutations that defines which arguments or
attributes will use a global Relay ID and their type. This allows automatically
decoding them before hitting their action.
This paves the way to automatic translation derived from the arguments, which
will be implemented subsequently.
---------
Co-authored-by: Zach Daniel <zachary.s.daniel@gmail.com>
2024-02-06 09:46:09 -05:00
Riccardo Binetti
365b3aedc6
feat: Relay refetching support ( #106 )
...
* feat: add support for relay global IDs
* improvement: use the GraphQL type when projecting fields
This allows picking also up fields coming from fragments in queries returning an
interface
* feat: add relay node query
Allow retrieving a resource implementing the Node interface given its Relay
global id.
2024-01-24 14:59:12 -05:00
Barnabas Jovanovics
b9a3051e88
fix: make sure generic actions are authorized ( #100 )
2023-11-24 05:29:01 -05:00
Zach Daniel
e66a3ef4b8
fix: properly generate first
aggregates with correct destination type
2023-11-13 23:02:57 -05:00
Zach Daniel
49c6534d73
improvement: generic action support
...
docs: better docs
2023-09-15 13:45:12 -04:00
Zach Daniel
0ec762507f
test: fix testing type
2023-09-13 15:52:46 -04:00
Zach Daniel
1d69d8ef33
fix: support aggregates over calculations
2023-08-29 21:32:22 -04:00
Alan Heywood
0c869aa522
test: add failing test for an aggregate of a calculation ( #92 )
...
An error occurs at compile time:
== Compilation error in file test/support/schema.ex ==
** (MatchError) no match of right hand side value: {:error, "Must provide field type for max"}
lib/resource/resource.ex:2278: AshGraphql.Resource.filterable?/2
(elixir 1.15.4) lib/enum.ex:4265: Enum.filter_list/2
(elixir 1.15.4) lib/enum.ex:4266: Enum.filter_list/2
lib/resource/resource.ex:2229: AshGraphql.Resource.aggregate_filter_fields/2
lib/resource/resource.ex:2195: AshGraphql.Resource.resource_filter_fields/2
lib/resource/resource.ex:1159: AshGraphql.Resource.args/5
lib/resource/resource.ex:425: anonymous fn/6 in AshGraphql.Resource.queries/5
(elixir 1.15.4) lib/enum.ex:1693: Enum."-map/2-lists^map/1-1-"/2
2023-08-29 21:30:06 -04:00
Zach Daniel
39e33ca162
chore: fix testing type
2023-08-28 16:15:58 -04:00
Barnabas Jovanovics
da1d1e889c
fix: wrap type in non-null reference if allow_nil? is set to false ( #90 )
...
* fix: wrap type in non-null reference if allow_nil? is set to false
* fix: get allow_nil? from the correct place
2023-08-22 14:43:27 -04:00
Barnabas Jovanovics
e11deb07aa
test: update field policy test ( #83 )
2023-07-13 08:46:26 -04:00
Zach Daniel
60517e6e20
chore: update tests, the fix is in main
, just need to wait for release
2023-06-28 14:35:18 -04:00
Zach Daniel
bb96354470
improvement: support ForbiddenField
2023-06-23 10:10:39 -04:00
Alan Heywood
1c9c173631
fix: fix Logger deprecations for elixir 1.15 ( #79 )
...
Use Logger.warning instead of Logger.warn, which is deprecated
2023-06-22 17:38:24 -04:00
Barnabas Jovanovics
7f504bbf17
test: add engine deadlock test ( #78 )
2023-06-16 10:51:50 -04:00
Zach Daniel
1f6e87ff01
fix: properly resolve arrays of unions from calculations
2023-06-15 13:04:45 -04:00
Barnabas Jovanovics
6c073e746d
test: add new calculate union tests with real resources ( #77 )
2023-06-15 10:36:20 -04:00
Zach Daniel
045426c629
fix: account for lists of newtype unions
2023-06-14 10:21:20 -04:00
Zach Daniel
74211ef3f4
fix: properly fetch aliased all attributes
2023-06-12 13:19:07 -04:00
Barnabas Jovanovics
dcc7e045b9
test: add tests for graphql aliases ( #75 )
2023-06-12 10:44:01 -04:00
Zach Daniel
087579a062
fix: fixes for resolvers
2023-06-09 10:19:31 -04:00
Zach Daniel
05be948204
improvement: revamp data loading to be a single load statement
2023-06-09 00:45:39 -04:00
Zach Daniel
20ce8b505e
fix: properly thread read action arguments through on updates
2023-05-19 18:01:33 -04:00
Zach Daniel
7022585ec5
chore: credo
2023-05-15 09:40:35 -04:00
Barnabas Jovanovics
48392115e0
feat: create types for maps with constraints ( #68 )
2023-05-15 09:39:32 -04:00
Alan Heywood
d89a14175c
improvement: support manual relationships ( #66 )
2023-04-13 01:42:45 -04:00
Zach Daniel
c711fa2e9d
improvement: add tests & improve behavior of update managed relationships
2023-03-21 23:43:43 -04:00
Zach Daniel
b8b5b61786
improvement: supply arguments to relationships on loading
2023-03-17 14:56:06 -04:00
Zach Daniel
3cc3c32f45
improvement: add support for Ash.Type.NewType
2023-03-13 18:32:36 -04:00
Barnabas Jovanovics
e6aadc1221
fix: always return a list from pkey_fields ( #59 )
2023-02-24 10:00:00 -05:00
Zach Daniel
f1d4c1a3cb
improvement: better tagged union handling
2023-02-16 23:33:54 -05:00
Zach Daniel
cf8267123e
improvement: support new union types in ash
2023-02-15 08:20:35 -05:00
Zach Daniel
f0836f18b6
improvement: support metadata on read actions
...
metadata on read actions is merged with the rest of the fields on the query, so must have a name unique from the attributes/calculations/aggregates.
The system will warn you if there is metadata on the underlying action that is being ignored, and will tell you how to fix it.
2023-01-28 12:32:21 -05:00
Zach Daniel
a58f3c998e
fix: properly generate enum for atom attributes w/ one_of
constraint again
...
closes #49
2023-01-03 10:13:17 -05:00
Zach Daniel
48e6271d0d
fix: don't set mutation
block if no mutations exist
2022-11-01 21:58:41 -04:00
Zach Daniel
c650126819
fix: resolve issues compiling resources with no type
...
fix: adding an empty query block is apparently problematic?
2022-10-31 13:07:57 -04:00
James Harton
57e42cac6b
feat(AshGraphql.Plug): Support standard actor/tenant configuration. ( #43 )
2022-10-30 17:49:24 -04:00
Zach Daniel
9ff395711e
improvement: handle keyset & offset pagination when combined on an action (by preferring keyset)
...
improvement: use new `depend_on_resources/` from Ash to remove the need for registry in schema
fix: various pagination fixes
2022-10-21 08:51:31 -04:00
Zach Daniel
c5662e90ba
improvement: validate that relay? queries use keyset?: true
actions
...
improvement: only add `count` to pages when one relevant query is countable
2022-10-21 07:38:33 -04:00
Zach Daniel
07e0c6170c
improvement: split keyset_page_of
and page_of
types
...
improvement: add `start_keyset` and `end_keyset` to `keyset_page_of` type
improvement: add `count` to relay fields if there exists a countable relay query
2022-10-20 17:57:27 -04:00
Zach Daniel
3a11d988ab
improvement: support encode_primary_key? false
, and set single managed relationship primary keys do :id
type when its true
...
closes #28
2022-10-12 19:02:04 -04:00
Zach Daniel
195ec3cd4f
fix: handle empty root query/root mutation blocks
...
closes : #10
2022-10-12 17:25:33 -04:00
Zach Daniel
8d79fd7d2a
fix: non relay keyset pagination was broken when relay was introduced
2022-10-12 12:11:51 -04:00
Zach Daniel
9a3136fd5d
improvement: remove stacktraces?
option
...
improvement: add error handler
improvement: translatable error messages
docs: handle errors guide
2022-10-12 00:51:01 -04:00
Zach Daniel
e8486deaa3
chore: warning on errors when stopping storage in test
2022-09-28 02:48:08 -04:00
Zach Daniel
53ee24a89d
chore: fix linter
2022-09-28 02:32:55 -04:00
Zach Daniel
93fc0c9ffd
chore: stop all ETS resources in tests
2022-09-28 02:28:44 -04:00
Zach Daniel
92631f91b6
improvement: add options for remapping field/argument names
...
fix: use the dataloader for loading calculations, to allow for aliases
2022-09-26 00:12:10 -04:00
Zach Daniel
9095a5ae45
improvement: add attribute_types and attribute_input_types
...
improvement: require configuration of datetime types
2022-09-22 13:31:40 -04:00
Maxim Martynov
e40e7c573c
improvement: Implement GraphQL Relay support ( #36 )
2022-09-20 23:07:30 -04:00