Class: Gitlab::ManifestImport::Metadata

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/manifest_import/metadata.rb

Constant Summary collapse

EXPIRY_TIME =
1.week
KEY_PREFIX =
'manifest_import:metadata:user'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(user, fallback: {}) ⇒ Metadata

Returns a new instance of Metadata.



11
12
13
14
# File 'lib/gitlab/manifest_import/metadata.rb', line 11

def initialize(user, fallback: {})
  @user = user
  @fallback = fallback
end

Instance Attribute Details

#fallbackObject (readonly)

Returns the value of attribute fallback.



9
10
11
# File 'lib/gitlab/manifest_import/metadata.rb', line 9

def fallback
  @fallback
end

#userObject (readonly)

Returns the value of attribute user.



9
10
11
# File 'lib/gitlab/manifest_import/metadata.rb', line 9

def user
  @user
end

Instance Method Details

#group_idObject



33
34
35
# File 'lib/gitlab/manifest_import/metadata.rb', line 33

def group_id
  redis_get('group_id')&.to_i || fallback[:manifest_import_group_id]
end

#repositoriesObject



25
26
27
28
29
30
31
# File 'lib/gitlab/manifest_import/metadata.rb', line 25

def repositories
  redis_get('repositories').then do |repositories|
    next unless repositories

    Gitlab::Json.parse(repositories).map(&:symbolize_keys)
  end || fallback[:manifest_import_repositories]
end

#save(repositories, group_id) ⇒ Object



16
17
18
19
20
21
22
23
# File 'lib/gitlab/manifest_import/metadata.rb', line 16

def save(repositories, group_id)
  Gitlab::Redis::SharedState.with do |redis|
    redis.multi do |multi|
      multi.set(hashtag_key_for('repositories'), Gitlab::Json.dump(repositories), ex: EXPIRY_TIME)
      multi.set(hashtag_key_for('group_id'), group_id, ex: EXPIRY_TIME)
    end
  end
end