Sha256: 32b6c9926428a5a17462fa8e79ee3107d38c7deb499e397d79f73125ab65532d

Contents?: true

Size: 835 Bytes

Versions: 1

Compression:

Stored size: 835 Bytes

Contents

# frozen_string_literal: true
module Qravan
  # Resource processing class
  class Resource
    attr_accessor :connections, :cargo

    def initialize(name, data, cargo = {})
      @resource = name
      @resource_data = data
      @cargo ||= cargo
      @connections = cargo.connections
    end

    def validate
      @resource_data
    end

    def extract
      source_name = "#{cargo.models[@resource]["extract"]["source"]["name"]}_source"
      @connections[source_name.to_s].extract(sql)
    end

    def sql
      [
        :select,
        @resource_data["attributes"].join(","),
        :from,
        cargo.models[@resource]["extract"]["source"]["table"],
        :where,
        @resource_data["conditions"].map { |k, v| "#{k}='#{v}'" }
                                    .join(" and ")
      ].join(" ")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
qravan-0.1.0 lib/qravan/resource/resource.rb