mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-23 00:47:51 +00:00
40 lines
661 B
Ruby
40 lines
661 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
class NamespacedSessionStore
|
|
include Enumerable
|
|
|
|
def initialize(key, session = Session.current)
|
|
@namespace_key = key
|
|
@session = session
|
|
end
|
|
|
|
def initiated?
|
|
!session.nil?
|
|
end
|
|
|
|
def each(&block)
|
|
return unless session
|
|
|
|
(session[@namespace_key] || {}).each(&block)
|
|
end
|
|
|
|
def [](key)
|
|
return unless session
|
|
|
|
session[@namespace_key]&.fetch(key, nil)
|
|
end
|
|
|
|
def []=(key, value)
|
|
return unless session
|
|
|
|
session[@namespace_key] ||= {}
|
|
session[@namespace_key][key] = value
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :session
|
|
end
|
|
end
|