summaryrefslogtreecommitdiff
path: root/lib/gitlab/gitaly_client/storage_service.rb
blob: 4edcb0b8ba9617fc92e0058e8a80b8e796ff4401 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# frozen_string_literal: true

module Gitlab
  module GitalyClient
    class StorageService
      def initialize(storage)
        @storage = storage
      end

      # Returns all directories in the git storage directory, lexically ordered
      def list_directories(depth: 1)
        request = Gitaly::ListDirectoriesRequest.new(storage_name: @storage, depth: depth)

        GitalyClient.call(@storage, :storage_service, :list_directories, request)
          .flat_map(&:paths)
      end

      # Delete all repositories in the storage. This is a slow and VERY DESTRUCTIVE operation.
      def delete_all_repositories
        request = Gitaly::DeleteAllRepositoriesRequest.new(storage_name: @storage)
        GitalyClient.call(@storage, :storage_service, :delete_all_repositories, request)
      end
    end
  end
end