gitlink-forgeplus/app/services/cache/v2/owner_common_service.rb

107 lines
2.8 KiB
Ruby

class Cache::V2::OwnerCommonService < ApplicationService
include AvatarHelper
attr_reader :owner_id, :login, :name, :avatar_url, :email
attr_accessor :owner
def initialize(login, email, params={})
@login = login
@email = email
@name = params[:name]
end
def read
owner_common
end
def call
load_owner
set_owner_common
end
def reset
reset_owner_common
end
private
def load_owner
@owner = User.find_by(login: @login)
end
def owner_common_key
"v2-owner-common:#{@login}-#{@email.to_s}"
end
def owner_common_key_by_id
"v2-owner-common:#{@owner.id}"
end
def owner_common
$redis_cache.hgetall(owner_common_key).blank? ? reset_owner_common : $redis_cache.hgetall(owner_common_key)
end
def set_owner_common
if $redis_cache.hgetall(owner_common_key).blank?
reset_owner_common
return
end
if @name.present?
if $redis_cache.hget(owner_common_key, "name").nil?
reset_owner_name
else
$redis_cache.hset(owner_common_key, "name", @name)
$redis_cache.hset(owner_common_key, "avatar_url", url_to_avatar(owner))
$redis_cache.hset(owner_common_key_by_id, "name", @name)
$redis_cache.hset(owner_common_key_by_id, "avatar_url", url_to_avatar(owner))
end
end
if @email.present?
if $redis_cache.hget(owner_common_key, "email").nil?
reset_owner_email
else
$redis_cache.hset(owner_common_key, "email", @email)
$redis_cache.hset(owner_common_key_by_id, "email", @email)
end
end
$redis_cache.hgetall(owner_common_key)
end
def reset_owner_id
$redis_cache.hset(owner_common_key, "id", owner&.id)
$redis_cache.hset(owner_common_key_by_id, "id", owner&.id)
end
def reset_owner_type
$redis_cache.hset(owner_common_key, "type", owner&.type)
$redis_cache.hset(owner_common_key_by_id, "type", owner&.type)
end
def reset_owner_login
$redis_cache.hset(owner_common_key, "login", owner&.login)
$redis_cache.hset(owner_common_key_by_id, "login", owner&.login)
end
def reset_owner_email
$redis_cache.hset(owner_common_key, "email", owner&.mail)
$redis_cache.hset(owner_common_key_by_id, "email", owner&.mail)
end
def reset_owner_name
$redis_cache.hset(owner_common_key, "name", owner&.real_name)
$redis_cache.hset(owner_common_key, "avatar_url", url_to_avatar(owner))
$redis_cache.hset(owner_common_key_by_id, "name", owner&.real_name)
$redis_cache.hset(owner_common_key_by_id, "avatar_url", url_to_avatar(owner))
end
def reset_owner_common
load_owner
$redis_cache.del(owner_common_key)
reset_owner_id
reset_owner_type
reset_owner_login
reset_owner_email
reset_owner_name
$redis_cache.hgetall(owner_common_key)
end
end