Sha256: d08b8ccfc6dbc758944d61acc6fb7b327fbb603e1812e6bcebc9e9510b679954

Contents?: true

Size: 1.85 KB

Versions: 1

Compression:

Stored size: 1.85 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 SLD < ApplicationRecord
        self.table_name = "slds"
      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 Role < ApplicationRecord
        self.table_name = "roles"
      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.slds
        @slds ||= Collection.new(SLD)
      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

      def self.roles
        @roles ||= Collection.new(Role)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
email_data-1605432951 lib/email_data/source/active_record.rb