class Lato::Session

def self.generate_session_per_user(user_id, extra_params = {})

def self.generate_session_per_user(user_id, extra_params = {})
  extra_params.merge(user_id: user_id).to_json
end

def get(key)

def get(key)
  @session&.dig(key)
end

def initialize(session)

def initialize(session)
  @session = parse_session(session)
end

def parse_session(session)

def parse_session(session)
  return nil if session.blank?
  (session.is_a?(String) ? JSON.parse(session) : session).with_indifferent_access
rescue StandardError => e
  Rails.logger.error "Lato::Session.parse_session: #{e.message}"
  nil
end

def really_valid?

def really_valid?
  !!user
end

def user

def user
  @user ||= Lato::User.find_by(id: user_id)
end

def user_id

def user_id
  @session&.dig(:user_id)
end

def valid?

def valid?
  !@session.blank?
end