Sha256: 6d263f76afb9628cdddddcc13d59c5f60cf5cc1793b7d62d76a06998c7766fa3

Contents?: true

Size: 1.06 KB

Versions: 5

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

require "active_record"
require "active_record/filter"
require "active_support/core_ext/integer/time"
require "active_support/core_ext/numeric/time"

class ArtifactValidator < ActiveModel::Validator
  def validate(record)
    return if record.data_type

    record.errors.add :data, "#{record.data} is not supported"
  end
end

module Mihari
  class Artifact < ActiveRecord::Base
    include ActiveModel::Validations
    validates_with ArtifactValidator

    def initialize(attributes)
      super
      self.data_type = TypeChecker.type(data)
    end

    def unique?(ignore_old_artifacts: false, ignore_threshold: 0)
      artifact = self.class.where(data: data).order(created_at: :desc).first
      return true if artifact.nil?

      return false unless ignore_old_artifacts

      days_before = (-ignore_threshold).days.from_now
      # if an artifact is created before {ignore_threshold} days, ignore it
      #                           within {ignore_threshold} days, do not ignore it
      artifact.created_at < days_before
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
mihari-2.4.0 lib/mihari/models/artifact.rb
mihari-2.3.1 lib/mihari/models/artifact.rb
mihari-2.3.0 lib/mihari/models/artifact.rb
mihari-2.2.1 lib/mihari/models/artifact.rb
mihari-2.2.0 lib/mihari/models/artifact.rb