Sha256: 3d43b9808bf53fedbc1e183c8a3cbf07c003cf67cb29a96b84bc6776a6f23278

Contents?: true

Size: 1.4 KB

Versions: 4

Compression:

Stored size: 1.4 KB

Contents

#
# ActiveFacts Compositions, Staging Compositor.
#
#       Computes a Staging schema for Data Vault.
#
# Copyright (c) 2016 Graeme Port. Read the LICENSE file.
#
require "activefacts/compositions/relational"

module ActiveFacts
  module Compositions
    class Staging < Relational
    public
      def self.options
        {
          stgname: ['String', "Suffix or pattern for naming staging tables. Include a + to insert the name. Default 'STG'"],
        }.merge(Relational.options).
        reject{|k,v| [:surrogates].include?(k) }
      end

      def initialize constellation, name, options = {}
        # Extract recognised options:
        @option_stg_name = options.delete('stgname') || 'STG'
        @option_stg_name.sub!(/^/,'+ ') unless @option_stg_name =~ /\+/

        super constellation, name, options, 'Staging'

      end

      def inject_all_datetime_recordsource
        composites = @composition.all_composite.to_a
        return if composites.empty?

        trace :staging, "Injecting load datetime and record source" do
          @composition.all_composite.each do |composite|
            inject_datetime_recordsource composite.mapping
            composite.mapping.re_rank
          end
        end
      end

      def devolve_all
        # Rename composites with STG prefix
        rename_parents

        inject_all_datetime_recordsource
      end
    end

    publish_compositor(Staging)
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
activefacts-compositions-1.9.15 lib/activefacts/compositions/staging.rb
activefacts-compositions-1.9.14 lib/activefacts/compositions/staging.rb
activefacts-compositions-1.9.13 lib/activefacts/compositions/staging.rb
activefacts-compositions-1.9.12 lib/activefacts/compositions/staging.rb