Sha256: fc45bebef5d809e0fd8183e18b12d09e381bf24c7986f6256ae7696d81adee82

Contents?: true

Size: 918 Bytes

Versions: 3

Compression:

Stored size: 918 Bytes

Contents

require 'pstore'

module FeedTorrents
  def self.store
    Store.instance
  end

  class Store
    include Singleton
    include LogFunctions

    def present?(item)
      pstore.transaction(true) { return !!pstore[item] }
    end

    def persist(item)
      pstore.transaction { pstore[item] = Time.now.to_i }
    end

    def prune
      prune_count = 0

      pstore.transaction do
        pstore.roots.each do |item|
          if outdated?(item)
            pstore.delete(item)
            prune_count += 1
          end
        end
      end

      if prune_count > 0
        info "Pruned #{prune_count} items"
      end
    end

    private

    def pstore
      @pstore ||= PStore.new(pstore_file)
    end

    def pstore_file
      File.expand_path(FeedTorrents.configuration.datastore)
    end

    def outdated?(time)
      (Time.now.to_i - time < 7776000) # older than 90 days is outdated
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
feed_torrents-0.1.2 lib/feed_torrents/store.rb
feed_torrents-0.1.1 lib/feed_torrents/store.rb
feed_torrents-0.1.0 lib/feed_torrents/store.rb