Sha256: 5b1691ffbc705f6e9e5c4aec34d7ba1d83d33c8e0642d73cfe88c27d09480cae

Contents?: true

Size: 1.43 KB

Versions: 4

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

# Copyright 2021 Matthew Howes

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

#   http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

require 'delegate'

module SnFoil
  module Adapters
    module ORMs
      class BaseAdapter < SimpleDelegator
        def new(**_params)
          raise NotImplementedError, '#new not implemented in adapter'
        end

        def all
          raise NotImplementedError, '#all not implemented in adapter'
        end

        def save
          raise NotImplementedError, '#save not implemented in adapter'
        end

        def destroy
          raise NotImplementedError, '#destroy not implemented in adapter'
        end

        def attributes=(_attributes)
          raise NotImplementedError, '#attributes= not implemented in adapter'
        end

        def is_a?(check_class)
          __getobj__.class.object_id.equal?(check_class.object_id)
        end

        def klass
          __getobj__.class
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
snfoil-1.1.1 lib/snfoil/adapters/orms/base_adapter.rb
snfoil-1.1.0 lib/snfoil/adapters/orms/base_adapter.rb
snfoil-1.0.1 lib/snfoil/adapters/orms/base_adapter.rb
snfoil-1.0.0 lib/snfoil/adapters/orms/base_adapter.rb