Sha256: 8cb769a38e5dc740cd3059a9f6f78247a894763bfd2b62295885d3b8b37ffe78

Contents?: true

Size: 1.05 KB

Versions: 3

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

require "active_record"

module Miteru
  class Record < ActiveRecord::Base
    class << self
      #
      # Check uniqueness of a record by a hash
      #
      # @param [String] hash
      #
      # @return [Boolean] true if it is unique. Otherwise false.
      #
      def unique_hash?(hash)
        record = find_by(hash: hash)
        return true if record.nil?

        false
      end

      #
      # Create a new record based on a kit
      #
      # @param [Miteru::Kit] kit
      # @param [String] hash
      #
      # @return [Miteru::Record]
      #
      def create_by_kit_and_hash(kit, hash)
        record = new(
          hash: hash,
          hostname: kit.hostname,
          url: kit.decoded_url,
          headers: kit.headers,
          filename: kit.filename,
          filesize: kit.filesize,
          mime_type: kit.mime_type,
          downloaded_as: kit.filepath_to_download
        )
        record.save
        record
      rescue TypeError, ActiveRecord::RecordNotUnique => _e
        nil
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
miteru-1.0.2 lib/miteru/record.rb
miteru-1.0.1 lib/miteru/record.rb
miteru-1.0.0 lib/miteru/record.rb