Skip to content
Snippets Groups Projects
  1. Sep 04, 2019
  2. Aug 26, 2019
  3. Aug 22, 2019
    • Alessio Caiazza's avatar
      Expose namespace storage statistics with GraphQL · 606a1d2d
      Alessio Caiazza authored and Mayra Cabrera's avatar Mayra Cabrera committed
      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
          }
        }
      }
      606a1d2d
  4. Jul 17, 2019
  5. Jul 11, 2019
  6. Jul 04, 2019
  7. Jul 03, 2019
    • Charlie Ablett's avatar
      Address reviewer comments · cf1b0d10
      Charlie Ablett authored
      - 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
      cf1b0d10
    • Charlie Ablett's avatar
      Wrap proc properly in gitaly call counts · a11fe5de
      Charlie Ablett authored
      - Add `calls_gitaly: true` to some fields missing (hey, it works!)
      - Clarify proc wrapping
      - Add kwargs argument to `mount_mutation`
      a11fe5de
    • Charlie Ablett's avatar
      Alert if `calls_gitaly` declaration missing · f4890d90
      Charlie Ablett authored
      - 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.
      f4890d90
  8. Jun 28, 2019
  9. Jun 25, 2019
  10. Jun 21, 2019
    • Bob Van Landuyt's avatar
      Enforce authorizations for non-nullable fields · 967cbd08
      Bob Van Landuyt authored
      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.
      967cbd08
  11. Jun 20, 2019
    • Bob Van Landuyt :neckbeard:'s avatar
      Render GFM html in GraphQL · 40680858
      Bob Van Landuyt :neckbeard: authored and Douwe Maan's avatar Douwe Maan committed
      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`.
      40680858
  12. Jun 11, 2019
  13. Jun 10, 2019
  14. Jun 05, 2019
  15. Jun 03, 2019
    • Bob Van Landuyt's avatar
      Expose IDs in GraphQL as a GlobalID · ed503d51
      Bob Van Landuyt authored
      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.
      ed503d51
    • Alessio Caiazza's avatar
      Add Namespace and ProjectStatistics to GraphQL API · 83a8b779
      Alessio Caiazza authored
      We can query namespaces, and nested projects.
      
      Projects now exposes statistics
      83a8b779
  16. May 31, 2019
    • Charlie Ablett's avatar
      Apply reviewer feedback · 69953223
      Charlie Ablett authored and Charlie Ablett's avatar Charlie Ablett committed
      - Comply doc with guidelines
      - Improve tests for readability and completeness
      - Separate out phases visually with newlines
      - Add `format_message` test
      - test readability
      - code and test structure/styling
      - static query analyzers
      - call `as_json` on `provided_variables`
      - add exception handling
      69953223
  17. May 30, 2019
  18. May 02, 2019
  19. Apr 22, 2019
  20. Apr 18, 2019
  21. Apr 04, 2019
  22. Apr 03, 2019
    • Luke Duncalfe's avatar
      GraphQL Type authorization · 8207f787
      Luke Duncalfe authored
      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
      8207f787
  23. Apr 02, 2019
  24. Feb 25, 2019
    • Luke Duncalfe's avatar
      Improve GraphQL Authorization DSL · ccb4edbc
      Luke Duncalfe authored
      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
      ccb4edbc
  25. Feb 14, 2019
Loading