# frozen_string_literal: true

module ROM
  module Files
    module Extensions
      module Gem
        module Relations
          class Specifications < ROM::Files::Relation
            dataset { select('*_spec.rb').recursive.inside('spec') }

            schema 'application/x-ruby', as: :specifications, infer: true do
              use :stat

              attribute :specification_path, Types::Path
              attribute :implementation_path, Types.ForeignKey(
                :implementations,
                map: ->(path) { path.pathmap('%{^spec,}X.rb') }
              )

              associations do
                has_one :implementation, foreign_key: :implementation_path
              end
            end
          end
        end
      end
    end
  end
end