# frozen_string_literal: true

class UserSecurityKey < ActiveRecord::Base
  belongs_to :user

  scope :second_factors,
        -> { where(factor_type: UserSecurityKey.factor_types[:second_factor], enabled: true) }

  def self.factor_types
    @factor_types ||= Enum.new(second_factor: 0, first_factor: 1, multi_factor: 2)
  end
end

# == Schema Information
#
# Table name: user_security_keys
#
#  id            :bigint           not null, primary key
#  user_id       :bigint           not null
#  credential_id :string           not null
#  public_key    :string           not null
#  factor_type   :integer          default(0), not null
#  enabled       :boolean          default(TRUE), not null
#  name          :string           not null
#  last_used     :datetime
#  created_at    :datetime         not null
#  updated_at    :datetime         not null
#
# Indexes
#
#  index_user_security_keys_on_credential_id            (credential_id) UNIQUE
#  index_user_security_keys_on_factor_type              (factor_type)
#  index_user_security_keys_on_factor_type_and_enabled  (factor_type,enabled)
#  index_user_security_keys_on_last_used                (last_used)
#  index_user_security_keys_on_public_key               (public_key)
#  index_user_security_keys_on_user_id                  (user_id)
#
# Foreign Keys
#
#  fk_rails_...  (user_id => users.id)
#