Sha256: d367ce70a1d56de31e85a31040ec9d05297afdbe4eba5e7ae2cdd87e071fda2d

Contents?: true

Size: 1.55 KB

Versions: 20

Compression:

Stored size: 1.55 KB

Contents

# frozen_string_literal: true

require "email_data"

begin
  require "active_record"
rescue LoadError
  raise "activerecord is not part of the bundle. Add it to Gemfile."
end

module EmailData
  module Source
    class ActiveRecord
      class ApplicationRecord < ::ActiveRecord::Base
        self.abstract_class = true
      end

      class TLD < ApplicationRecord
        self.table_name = "tlds"
      end

      class CountryTLD < ApplicationRecord
        self.table_name = "country_tlds"
      end

      class DisposableEmail < ApplicationRecord
        self.table_name = "disposable_emails"
      end

      class DisposableDomain < ApplicationRecord
        self.table_name = "disposable_domains"
      end

      class FreeEmailDomain < ApplicationRecord
        self.table_name = "free_email_domains"
      end

      class Collection
        def initialize(model)
          @model = model
        end

        def include?(value)
          @model.where(name: value).exists?
        end

        def each(&block)
          @model.find_each(&block)
        end
      end

      def self.tlds
        @tlds ||= Collection.new(TLD)
      end

      def self.country_tlds
        @country_tlds ||= Collection.new(CountryTLD)
      end

      def self.disposable_emails
        @disposable_emails ||= Collection.new(DisposableEmail)
      end

      def self.disposable_domains
        @disposable_domains ||= Collection.new(DisposableDomain)
      end

      def self.free_email_domains
        @free_email_domains ||= Collection.new(FreeEmailDomain)
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
email_data-1604703468 lib/email_data/source/active_record.rb
email_data-1604569392 lib/email_data/source/active_record.rb
email_data-1604444717 lib/email_data/source/active_record.rb
email_data-1604325875 lib/email_data/source/active_record.rb
email_data-1604239223 lib/email_data/source/active_record.rb
email_data-1604097095 lib/email_data/source/active_record.rb
email_data-1604010434 lib/email_data/source/active_record.rb
email_data-1603923660 lib/email_data/source/active_record.rb
email_data-1603817241 lib/email_data/source/active_record.rb
email_data-1603707709 lib/email_data/source/active_record.rb
email_data-1603621117 lib/email_data/source/active_record.rb
email_data-1603499092 lib/email_data/source/active_record.rb
email_data-1603398147 lib/email_data/source/active_record.rb
email_data-1603311369 lib/email_data/source/active_record.rb
email_data-1603224590 lib/email_data/source/active_record.rb
email_data-1603137851 lib/email_data/source/active_record.rb
email_data-1603054658 lib/email_data/source/active_record.rb
email_data-1603050808 lib/email_data/source/active_record.rb
email_data-1602964602 lib/email_data/source/active_record.rb
email_data-1602274654 lib/email_data/source/active_record.rb