Merge branch 'add-lfs-blob-ids-to-tree-type' into 'master'
Add LFS blob IDs to GraphQL tree type See merge request gitlab-org/gitlab-ce!28666
This commit is contained in:
commit
49bda3f957
|
@ -135,6 +135,7 @@ export default {
|
|||
:path="entry.flatPath"
|
||||
:type="entry.type"
|
||||
:url="entry.webUrl"
|
||||
:lfs-oid="entry.lfsOid"
|
||||
/>
|
||||
</template>
|
||||
</tbody>
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
<script>
|
||||
import { GlBadge } from '@gitlab/ui';
|
||||
import { getIconName } from '../../utils/icon';
|
||||
import getRefMixin from '../../mixins/get_ref';
|
||||
|
||||
export default {
|
||||
components: {
|
||||
GlBadge,
|
||||
},
|
||||
mixins: [getRefMixin],
|
||||
props: {
|
||||
id: {
|
||||
|
@ -26,6 +30,11 @@ export default {
|
|||
required: false,
|
||||
default: null,
|
||||
},
|
||||
lfsOid: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: null,
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
routerLinkTo() {
|
||||
|
@ -67,6 +76,9 @@ export default {
|
|||
<component :is="linkComponent" :to="routerLinkTo" :href="url" class="str-truncated">
|
||||
{{ fullPath }}
|
||||
</component>
|
||||
<gl-badge v-if="lfsOid" variant="default" class="label-lfs ml-1">
|
||||
LFS
|
||||
</gl-badge>
|
||||
<template v-if="isSubmodule">
|
||||
@ <a href="#" class="commit-sha">{{ shortSha }}</a>
|
||||
</template>
|
||||
|
|
|
@ -45,6 +45,7 @@ query getFiles(
|
|||
node {
|
||||
...TreeEntry
|
||||
webUrl
|
||||
lfsOid
|
||||
}
|
||||
}
|
||||
pageInfo {
|
||||
|
|
|
@ -9,6 +9,9 @@ module Types
|
|||
graphql_name 'Blob'
|
||||
|
||||
field :web_url, GraphQL::STRING_TYPE, null: true
|
||||
field :lfs_oid, GraphQL::STRING_TYPE, null: true, resolve: -> (blob, args, ctx) do
|
||||
Gitlab::Graphql::Loaders::BatchCommitLoader.new(blob.repository, blob.id).find
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class BlobPresenter < Gitlab::View::Presenter::Simple
|
||||
class BlobPresenter < Gitlab::View::Presenter::Delegated
|
||||
presents :blob
|
||||
|
||||
def highlight(plain: nil)
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Add LFS oid to GraphQL blob type
|
||||
merge_request: 28666
|
||||
author:
|
||||
type: added
|
|
@ -0,0 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Gitlab
|
||||
module Graphql
|
||||
module Loaders
|
||||
class BatchCommitLoader
|
||||
def initialize(repository, blob_id)
|
||||
@repository, @blob_id = repository, blob_id
|
||||
end
|
||||
|
||||
def find
|
||||
BatchLoader.for(blob_id).batch(key: repository) do |blob_ids, loader, batch_args|
|
||||
Gitlab::Git::Blob.batch_lfs_pointers(batch_args[:key], blob_ids).each do |loaded_blob|
|
||||
loader.call(loaded_blob.id, loaded_blob.lfs_oid)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
attr_reader :repository, :blob_id
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -22,6 +22,8 @@ exports[`Repository table row component renders table row 1`] = `
|
|||
</a>
|
||||
|
||||
<!---->
|
||||
|
||||
<!---->
|
||||
</td>
|
||||
|
||||
<td
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { shallowMount, RouterLinkStub } from '@vue/test-utils';
|
||||
import { GlBadge } from '@gitlab/ui';
|
||||
import TableRow from '~/repository/components/table/row.vue';
|
||||
|
||||
let vm;
|
||||
|
@ -98,4 +99,16 @@ describe('Repository table row component', () => {
|
|||
|
||||
expect(vm.find('a').attributes('href')).toEqual('https://test.com');
|
||||
});
|
||||
|
||||
it('renders LFS badge', () => {
|
||||
factory({
|
||||
id: '1',
|
||||
path: 'test',
|
||||
type: 'commit',
|
||||
currentPath: '/',
|
||||
lfsOid: '1',
|
||||
});
|
||||
|
||||
expect(vm.find(GlBadge).exists()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
|
|
@ -5,5 +5,5 @@ require 'spec_helper'
|
|||
describe Types::Tree::BlobType do
|
||||
it { expect(described_class.graphql_name).to eq('Blob') }
|
||||
|
||||
it { expect(described_class).to have_graphql_fields(:id, :name, :type, :path, :flat_path, :web_url) }
|
||||
it { expect(described_class).to have_graphql_fields(:id, :name, :type, :path, :flat_path, :web_url, :lfs_oid) }
|
||||
end
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe Gitlab::Graphql::Loaders::BatchCommitLoader do
|
||||
include GraphqlHelpers
|
||||
|
||||
set(:project) { create(:project, :repository) }
|
||||
let(:repository) { project.repository }
|
||||
let(:blob) { Gitlab::Graphql::Representation::TreeEntry.new(repository.blob_at('master', 'files/lfs/lfs_object.iso'), repository) }
|
||||
let(:otherblob) { Gitlab::Graphql::Representation::TreeEntry.new(repository.blob_at('master', 'README'), repository) }
|
||||
|
||||
describe '#find' do
|
||||
it 'batch-resolves LFS blob IDs' do
|
||||
expect(Gitlab::Git::Blob).to receive(:batch_lfs_pointers).once.and_call_original
|
||||
|
||||
result = batch do
|
||||
[blob, otherblob].map { |b| described_class.new(repository, b.id).find }
|
||||
end
|
||||
|
||||
expect(result.first).to eq(blob.lfs_oid)
|
||||
expect(result.last).to eq(nil)
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue