Sha256: e0ea16c2572cb507604e7e0d8dae359fc22cdc5e8b404b886906c3de0349170f

Contents?: true

Size: 1.37 KB

Versions: 4

Compression:

Stored size: 1.37 KB

Contents

# frozen_string_literal: true
module Valkyrie::Sequel
  require 'valkyrie/sequel/resource_factory'
  require 'valkyrie/sequel/query_service'
  require 'valkyrie/sequel/persister'
  class MetadataAdapter
    attr_reader :connection
    def initialize(connection:)
      @connection = connection.tap do |conn|
        conn.extension(:pg_json)
        conn.extension(:pg_streaming)
      end
    end

    def persister
      @persister ||= Persister.new(adapter: self)
    end

    def query_service
      @query_service ||= QueryService.new(adapter: self)
    end

    def resource_factory
      @resource_factory ||= ResourceFactory.new(adapter: self)
    end

    def id
      @id ||= begin
        to_hash = "sequel://#{host}:#{port}:#{database}"
        Valkyrie::ID.new(Digest::MD5.hexdigest(to_hash))
      end
    end

    def perform_migrations!
      Sequel.extension :migration
      Sequel::Migrator.run(connection, "#{__dir__}/../../../db/migrations")
    end

    def reset_database!
      Sequel.extension :migration
      Sequel::Migrator.run(connection, "#{__dir__}/../../../db/migrations", target: 0)
      perform_migrations!
    end

    def resources
      connection.from(:orm_resources)
    end

    private

    def host
      connection.opts[:host]
    end

    def port
      connection.opts[:port]
    end

    def database
      connection.opts[:database]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
valkyrie-sequel-3.0.0 lib/valkyrie/sequel/metadata_adapter.rb
valkyrie-sequel-3.0.0.pre.beta.1 lib/valkyrie/sequel/metadata_adapter.rb
valkyrie-sequel-2.2.1 lib/valkyrie/sequel/metadata_adapter.rb
valkyrie-sequel-2.2.0 lib/valkyrie/sequel/metadata_adapter.rb