# frozen_string_literal: true require "sequel" module OmniAuth module Identity module Models # Sequel is an ORM adapter for the following databases: # ADO, Amalgalite, IBM_DB, JDBC, MySQL, Mysql2, ODBC, Oracle, PostgreSQL, SQLAnywhere, SQLite3, and TinyTDS # The homepage is: http://sequel.jeremyevans.net/ # NOTE: Sequel is *not* based on ActiveModel, but supports the API we need, except for `persisted?`: # * create # * save module Sequel def self.included(base) base.class_eval do # NOTE: Using the deprecated :validations_class_methods because it defines # validates_confirmation_of, while current :validation_helpers does not. # plugin :validation_helpers plugin(:validation_class_methods) include(::OmniAuth::Identity::Model) include(::OmniAuth::Identity::SecurePassword) # `validations: true` (default) would normally incur a dependency on ActiveModel. # Starting in v3.1 we check if ActiveModel is defined before we actually set validations. # If ActiveModel isn't defined, it may be unexpected that validations are not being set, # so this will result in a warning deprecation until release of v4, # at which point the default (for Sequel ORM only) will change to `validations: false` has_secure_password(validations: OmniAuth::Identity::Version.major < 4) class << self def auth_key=(key) super # Sequel version of validates_uniqueness_of! Does not incur ActiveRecord dependency! validates_uniqueness_of(:key, case_sensitive: false) end # @param arguments [any] - # Filtering is probably the most common dataset modifying action done in Sequel. # Both the where and filter methods filter the dataset by modifying the dataset’s WHERE clause. # Both accept a wide variety of input formats, which are passed as arguments below. # See: https://sequel.jeremyevans.net/rdoc/files/doc/querying_rdoc.html#label-Filters def locate(arguments) where(arguments).first end end def persisted? exists? end def save super end end end end end end end