| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| | | |
|
| | |
| |
| |
| | |
This helps reduce complexity for non-connections
|
| |\ \
| | |
| | |
| | |
| | | |
Add web_url to tree entry in GraphQL API
See merge request gitlab-org/gitlab-ce!28646
|
| | |/ |
|
| |\ \
| |/
|/|
| |
| |
| |
| | |
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
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
58404 - add change log
58404 - add spec
58404 - add more spec to test depth 2
58404 - fix spec
58404 - fix rubocop
58404 - refactor the code by Bob's advice
58404 - revert changes of all_graphql_fields_for
58404 - change text only
58404 - fix rspec according to gitlab's standard
58404 - revert previous spec
58404 - fix rubocop
|
| |/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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).
|
| |
|
|
|
|
|
| |
Extends existing graphql's tracer with opentracing measurements. Because
it also adds Tracing::Graphql class (for opentracing), it also renames
Graphql::Tracing class to Graphql::GenericTracing to minimize confusion
with similar class names.
|
| |\
| |
| |
| |
| |
| |
| | |
Add basic GraphQL for a Group
Closes #60786
See merge request gitlab-org/gitlab-ce!27492
|
| | |
| |
| |
| | |
and removing unnecessary code
|
| | |
| |
| |
| |
| | |
Add new query for Groups, with new
GroupType and NamespaceType
|
| |/
|
|
|
|
| |
This ports the changes from
https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/10462/
to CE
|
| |
|
|
|
| |
An IntrospectionQuery required more
complexity points.
|
| | |
|
| |\
| |
| |
| |
| |
| |
| | |
Basic limiting complexity of GraphQL queries
Closes #58405
See merge request gitlab-org/gitlab-ce!26629
|
| | |
| |
| |
| |
| |
| |
| |
| | |
It makes all Types::BaseField default to a complexity of 1.
Queries themselves now have limited complexity, scaled
to the type of user: no user, authenticated user, or an
admin user.
|
| |/
|
|
|
|
|
|
| |
Extends graphql's platform tracing class to observe duration
of graphql methods.
In graphql 1.8.11 is added prometheus class but it's not very useful
for us because it uses prometheus_exporter to export results.
|
| |\
| |
| |
| |
| |
| |
| | |
GraphQL Type authorization
Closes #54417
See merge request gitlab-org/gitlab-ce!25724
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Enables authorizations to be defined on GraphQL Types.
module Types
class ProjectType < BaseObject
authorize :read_project
end
end
If a field has authorizations defined on it, and the return type of the
field also has authorizations defined on it. then all of the combined
permissions in the authorizations will be checked and must pass.
Connection fields are checked by "digging" to find the type class of the
"node" field in the expected location of edges->node.
Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/54417
|
| |/
|
|
| |
This reverts merge request !26569
|
| |
|
|
|
|
|
|
| |
Extends graphql's platform tracing class to observe duration
of graphql methods.
In graphql 1.8.11 is added prometheus class but it's not very useful
for us because it uses prometheus_exporter to export results.
|
| |
|
|
|
|
|
|
|
| |
- Show pipeline status, title, MR Status and project path
- Popover attached to gitlab flavored markdown everywhere, including:
+ MR/Issue Title
+ MR/Issue description
+ MR/Issue comments
+ Rendered markdown files
|
| | |
|
| |\
| |
| |
| |
| | |
Fix leaking private repository information in API
See merge request gitlab/gitlabhq!2881
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
defaultBranch and ciConfigPath should only be available to users with
the :download_code permission for the Project, as the respository might
be private.
When implementing the authorize check on these properties, it was
found that our current Graphql::Authorize::Instrumentation class does
not work with fields that resolve to subclasses of
GraphQL::Schema::Scalar, like GraphQL::STRING_TYPE.
After discussion with other Create Team members, it has been decided
that because the GraphQL API is not GA, to remove these properties from
ProjectType, and instead implement them as part of epic
https://gitlab.com/groups/gitlab-org/-/epics/711
Issue:
https://gitlab.com/gitlab-org/gitlab-ce/issues/55316
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously GraphQL field authorization happened like this:
class ProjectType
field :my_field, MyFieldType do
authorize :permission
end
end
This change allowed us to authorize like this instead:
class ProjectType
field :my_field, MyFieldType, authorize: :permission
end
A new initializer registers the `authorize` metadata keyword on GraphQL
Schema Objects and Fields, and we can collect this data within the
context of Instrumentation like this:
field.metadata[:authorize]
The previous functionality of authorize is still being used for
mutations, as the #authorize method here is called at during the code
that executes during the mutation, rather than when a field resolves.
https://gitlab.com/gitlab-org/gitlab-ce/issues/57828
|
| | |
| |
| |
| | |
Signed-off-by: Rémy Coutable <remy@rymai.me>
|
| |/ |
|
| | |
|
| | |
|