34 lines
953 B
Ruby
34 lines
953 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Serializers
|
|
# This serializer exports data as JSON,
|
|
# it is designed to be used with interwork compatibility between MySQL and PostgreSQL
|
|
# implementations, as used version of MySQL does not support native json type
|
|
#
|
|
# Secondly, the loader makes the resulting hash to have deep indifferent access
|
|
class JSON
|
|
class << self
|
|
def dump(obj)
|
|
# MySQL stores data as text
|
|
# look at ./config/initializers/ar_mysql_jsonb_support.rb
|
|
if Gitlab::Database.mysql?
|
|
obj = ActiveSupport::JSON.encode(obj)
|
|
end
|
|
|
|
obj
|
|
end
|
|
|
|
def load(data)
|
|
return if data.nil?
|
|
|
|
# On MySQL we store data as text
|
|
# look at ./config/initializers/ar_mysql_jsonb_support.rb
|
|
if Gitlab::Database.mysql?
|
|
data = ActiveSupport::JSON.decode(data)
|
|
end
|
|
|
|
Gitlab::Utils.deep_indifferent_access(data)
|
|
end
|
|
end
|
|
end
|
|
end
|