Age | Commit message (Collapse) | Author |
|
to doc
|
|
- Due to https://github.com/exAspArk/batch-loader/pull/32,
we changed BatchLoader.for into BatchLoader::GraphQL.for
- since our results are wrapped in a BatchLoader::GraphQL,
calling `sync` during authorization is required to get real object
- `graphql` now has it's own authorization system. Our
`authorized?` method conflicted and required renaming
|
|
The `GraphQL::Function` has been deprecated in
favor of resolvers.
|
|
|
|
Root namespaces have storage statistics.
This commit allows namespace owners to get those stats via GraphQL
queries like the following one
{
namespace(fullPath: "a_namespace_path") {
rootStorageStatistics {
storageSize
repositorySize
lfsObjectsSize
buildArtifactsSize
packagesSize
wikiSize
}
}
}
|
|
https://gitlab.com/gitlab-org/gitlab-ce/issues/63372
|
|
These are not required because MySQL is not
supported anymore
|
|
This is part of migration of Folder View to Vue
|
|
This makes our authorization calls available to all GraphQL mutations
without the additional step of including the module first.
|
|
A new `discussion_id` argument on the `createNote` mutation allows
people to create a note within that discussion.
The ability to lazy-load Discussions has been added, so
GraphQL.object_from_id can treat Discussions the same as AR objects and
batch load them.
https://gitlab.com/gitlab-org/gitlab-ce/issues/62826
https://gitlab.com/gitlab-org/gitlab-ee/issues/9489
|
|
https://gitlab.com/gitlab-org/gitlab-ee/issues/9489
|
|
https://gitlab.com/gitlab-org/gitlab-ce/issues/62826
|
|
- Remove Gitaly call check for fields that have a constant complexity
declared
- Add associated test
|
|
- Add 1 for all fields that call Gitaly (with resolvers or without)
- Clarify comment regarding Gitaly call alert
- Expose predicate `calls_gitaly?` instead of ivar
|
|
- Add `calls_gitaly: true` to some fields missing (hey, it works!)
- Clarify proc wrapping
- Add kwargs argument to `mount_mutation`
|
|
- Move `calls_gitaly_check` to public
- Add instrumentation for flagging missing CallsGitaly declarations
- Wrap resolver proc in before-and-after Gitaly counts to get the net
Gitaly call count for the resolver.
|
|
- If Gitaly calls are missing, it could be due to a conditional and
may just become noise
|
|
- Add a complexity of 1 if Gitaly is called at least once
- Add an error notification if `calls_gitaly` isn't right for a
particular field
|
|
|
|
Added commit type to tree GraphQL type
See merge request gitlab-org/gitlab-ce!29412
|
|
|
|
Adding new `AddAwardEmoji`, `RemoveAwardEmoji` and `ToggleAwardEmoji`
GraphQL mutations.
Adding new `#authorized_find_with_pre_checks!` and (unused, but for
completeness `#authorized_find_with_post_checks!`) authorization
methods. These allow us to perform an authorized find, and run our own
additional checks before or after the authorization runs.
https://gitlab.com/gitlab-org/gitlab-ce/issues/62826
|
|
This makes sure we also enforce authorizations for non-nullable
fields.
We are defining our authorizations on the unwrapped
types (Repository). But when a type like that is presented in a
non-nullable field, it's type is different (Repository!). The
non-nullable type would not have the authorization metadata.
This makes sure we check the metadata on the unwrapped type for
finding authorizations.
|
|
This also disables the cop with a reasoning in types where appropriate
|
|
This adds a `markdown_field` to our types.
Using this helper will render a model's markdown field using the
existing `MarkupHelper` with the context of the GraphQL query
available to the helper.
Having the context available to the helper is needed for redacting
links to resources that the current user is not allowed to see.
Because rendering the HTML can cause queries, the complexity of a
these fields is raised by 5 above the default.
The markdown field helper can be used as follows:
```
markdown_field :note_html, null: false
```
This would generate a field that will render the markdown field `note`
of the model. This could be overridden by adding the `method:`
argument. Passing a symbol for the method name:
```
markdown_field :body_html, null: false, method: :note
```
It will have this description by default:
> The GitLab Flavored Markdown rendering of `note`
This could be overridden by passing a `description:` argument.
The type of a `markdown_field` is always `GraphQL::STRING_TYPE`.
|
|
Make task completion status available via GraphQL
Closes #62910
See merge request gitlab-org/gitlab-ce!29573
|
|
Add specs for task completion status (graphql)
Fix style issues
Changed format of constants in spec
Refactor specs to reduce creation of records
Reduce parameters to merge request creation
Use set's for project and user
Move let's out of it_behaves_like block
Fix description parameter
Fix format of lets
Use dig to get task completion status out of graphql response
Modified rspec output
Add changelog entry
|
|
Add the missing check on GraphQL API for project statistics
|
|
This exposes `Note`s on Issues & MergeRequests using a
`Types::Notes::NoteableType` in GraphQL.
Exposing notes on a new type can be done by implementing the
`NoteableType` interface on the type. The presented object should
be a `Noteable`.
|
|
Since we're not actually loading commits in that loader, but we're
loading blobs with LFS oids in batch and returning only the oids.
|
|
|
|
'master'
Reduce GraphQL complexity for non-connection fields
Closes #62706
See merge request gitlab-org/gitlab-ce!29165
|
|
Add web_url to tree entry in GraphQL API
See merge request gitlab-org/gitlab-ce!28646
|
|
|
|
This helps reduce complexity for non-connections
|
|
Use global IDs when exposing GraphQL resources
Closes #62650
See merge request gitlab-org/gitlab-ce!29080
|
|
|
|
|
|
Since the `GraphQL::ID_TYPE` usages should represent globally unique
ids, this changes some fields for which this is not the case into
strings.
The `ID_TYPE` is a specialised, so this change should be backwards
compatible.
https://graphql-ruby.org/type_definitions/scalars.html
|
|
This exposes all fields named `id` as GlobalIDs so they can be used
across our entire GraphQL implementation.
When the objects loaded are `ApplicationRecord`s. We'll use our
existing batchloading to find them. Otherwise, we'll fall back to the
default implementation of `GlobalID`: Calling the `.find` method on
the class.
|
|
We can query namespaces, and nested projects.
Projects now exposes statistics
|
|
and allow passing of child_complexity to the
'resolver_complexity' metho
|
|
- Modify GraphqlLogger to subclass JsonLogger
- Replace the single-line analyser with one that can log all the GraphQL
query related information in one place.
- Implement analyzer behavior with spec
|
|
Enabling GraphQL batch requests allows for multiple queries
to be sent in 1 request reducing the amount of requests
we send to the server.
Responses come come back in the same order as the queries were
provided.
|
|
Added repository files to GraphQL API
See merge request gitlab-org/gitlab-ce!28325
|
|
|
|
|
|
|
|
58404 - setup max depth for graphql
Closes #58404
See merge request gitlab-org/gitlab-ce!25737
|
|
If a field is a resolver, its complexity is automatically
increased. By default we add extra points for sort and search
arguments (which will be common for various resolvers).
For specific resolvers we add field-specific complexity, e.g.
for Issues complexity is increased if we filter issues by `labelName`
(because then SQL query is more complex). We may want to tune these
values in future depending on real-life results.
Complexity is also dependent on the number of loaded nodes, but only
if we don't search by specific ID(s). Also added complexity is limited
(by default only twice more than child complexity) - the reason is
that although it's more complex to process more items, the complexity
increase is not linear (there is not so much difference between loading
10, 20 or 100 records from DB).
|