module Support
  module Helpers
    class ProductPhysicalQueries
      def self.genre_id(genre_name)
        query = "SELECT genre_id FROM genre WHERE genre ='#{genre_name}'"
        Support::DbClient.query_art_relations(query).first["genre_id"]
      end

      def self.subgenre_id(subgenre_name)
        query = "SELECT orchard_id FROM subgenre WHERE name ='#{subgenre_name}'"
        Support::DbClient.query_art_relations(query).first["orchard_id"]
      end

      def self.packaging_id(packaging_name)
        query = "SELECT id FROM product_physical_packaging WHERE name ='#{packaging_name}'"
        Support::DbClient.query_art_relations(query).first["id"]
      end

      def self.distribution_format_media_format_id(format_name)
        query = "SELECT distribution_format_media_format_id
                FROM distribution_format_media_format WHERE name ='#{format_name}'"
        Support::DbClient.query_art_relations(query).first["distribution_format_media_format_id"]
      end

      def self.distribution_format_media_id(format_name)
        query =
          "SELECT distribution_format_media_id FROM distribution_format_media WHERE name ='#{format_name}'"
        Support::DbClient.query_art_relations(query).first["distribution_format_media_id"]
      end

      def self.distribution_format_id(distribution_format_media_format_id, distribution_format_media_id)
        query = "SELECT distribution_format_id
                FROM distribution_format
                WHERE distribution_format_media_format_id =#{distribution_format_media_format_id}
                AND distribution_format_media_id =#{distribution_format_media_id}"
        Support::DbClient.query_art_relations(query).first["distribution_format_id"]
      end

      def self.distribution_format_id_from_data(format, configuration)
        # Run all queries, using provided format and configuration to obtain a distribution format ID
        dist_format_media_format_id =
          Support::Helpers::ProductPhysicalQueries.distribution_format_media_format_id format
        dist_format_media_id =
          Support::Helpers::ProductPhysicalQueries.distribution_format_media_id configuration
        Support::Helpers::ProductPhysicalQueries.distribution_format_id(
          dist_format_media_format_id, dist_format_media_id
        )
      end
    end
  end
end
