README.md in graphql_preload_queries-0.2.0 vs README.md in graphql_preload_queries-0.2.1
- old
+ new
@@ -13,36 +13,44 @@
field :friends, [Types::UserType], null: false
field :parents, [Types::UserType], null: false
end
```
Examples:
- * ```add_preload :friends```
+ * ```add_preload(:friends)```
```:friends``` association will be preloaded if query includes ```friends```, like: ```user(id: 10) { friends { ... } }```
- * ```add_preload :allFriends, :friends```
+ * ```add_preload(:allFriends, :friends)```
```:friends``` association will be preloaded if query includes ```allFriends```, like: ```user(id: 10) { allFriends { ... } }```
- * ```add_preload :allFriends, { preload: :friends, parents: :parents }```
+ * ```add_preload(:allFriends, { preload: :friends, parents: :parents })```
```:preload``` key can be used to indicate the association name when defining nested preloads, like: ```user(id: 10) { allFriends { id parents { ... } } }```
- * ```add_preload :friends, { allParents: :parents }```
+ * ```add_preload(:friends, { allParents: :parents })```
(Nested 1 lvl preloading) ```friends: :parents``` association will be preloaded if query includes ```allParents```, like: ```user(id: 10) { friends { allParents { ... } } }```
- * ```add_preload :friends, { allParents: { preload: :parents, friends: :friends } }```
+ * ```add_preload(:friends, { allParents: { preload: :parents, friends: :friends } })```
(Nested 2 levels preloading) ```friends: { parents: :friends }``` association will be preloaded if query includes ```friends``` inside ```parents```, like: ```user(id: 10) { friends { allParents { { friends { ... } } } } }```
- * ```add_preload 'friends|allFriends', :friends```
+ * ```add_preload('friends|allFriends', :friends)```
(Multiple gql queries) ```:friends``` association will be preloaded if query includes ```friends``` or ```allFriends```, like: ```user(id: 10) { friends { ... } }``` OR ```user(id: 10) { allFriends { ... } }```
- * ```add_preload 'ignoredFriends', 'ignored_friends.user'```
+ * ```add_preload('ignoredFriends', 'ignored_friends.user')```
(Deep preloading) ```{ ignored_friends: :user }``` association will be preloaded if query includes ```inogredFriends```, like: ```user(id: 10) { ignoredFriends { ... } }```
* Preloads in query results
```ruby
# queries/users.rb
def user(id:)
+ # includes all preloads defined in user type
+ # Sample: user(id: 10){ friends { id } }
+ # :friends will be preloaded inside "user" sql query
user = include_gql_preloads(:user, User.where(id: id))
+
+ # does not include user type preloads (only sub query preloads will be applied)
+ # Sample: user(id: 10){ friends { id parents { ... } } }
+ # Only :parents will be preloaded inside "friends" sql query
+ user = User.find(id)
end
```
- include_gql_preloads: Will preload all preloads configured in UserType based on the gql query.
* Preloads in mutation results
@@ -51,10 +59,10 @@
#...
field :users, [Types::UserType], null: true
def resolve(ids:)
affected_users = User.where(id: ids)
affected_users = include_gql_preloads(:users, affected_users)
- puts affected_users.first&.friends
+ puts affected_users.first&.friends # will print preloaded friends data
{ users: affected_users }
end
```
- include_gql_preloads: Will preload all preloads configured in UserType based on the gql query.