Sha256: db0475d0266e3c8e4ed6445494cdb2970d276475031c55107b982df0a4b916d2

Contents?: true

Size: 848 Bytes

Versions: 3

Compression:

Stored size: 848 Bytes

Contents

# frozen_string_literal: true

require "active_model"
require "redis"

module SuperSpreader
  class RedisModel
    include ActiveModel::Model
    include ActiveModel::Attributes
    include ActiveModel::Serialization

    def initialize(values = default_values)
      super
    end

    def default_values
      redis.hgetall(redis_key)
    end

    def persisted?
      redis.get(redis_key).present?
    end

    def delete
      redis.del(redis_key)
    end

    def save
      redis.multi do |pipeline|
        pipeline.del(redis_key)

        serializable_hash.each do |key, value|
          pipeline.hset(redis_key, key, value)
        end
      end
    end

    # Primarily for factory_bot
    alias_method :save!, :save

    private

    def redis_key
      self.class.name
    end

    def redis
      SuperSpreader.redis
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
super_spreader-0.2.1 lib/super_spreader/redis_model.rb
super_spreader-0.2.0 lib/super_spreader/redis_model.rb
super_spreader-0.1.0.beta2 lib/super_spreader/redis_model.rb