Sha256: 6888dc74ef7c93b858f1c6f358668c1574eba36a5571d72cdfba8a7f56dc0ee6

Contents?: true

Size: 1.34 KB

Versions: 6

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true
require "date"

module ShopifyCLI
  module Migrator
    autoload :Migration, "shopify_cli/migrator/migration"

    def self.migrate(
      migrations_directory: File.expand_path("migrator/migrations", __dir__)
    )
      baseline_date = last_migration_date
      unless baseline_date.nil?        
        migrations = migrations(migrations_directory: migrations_directory)
          .select { |m| 
            m.date > baseline_date.to_i 
          }
          .each { |m| m.run }
      end

      store_last_migration_date
    end

    private

    def self.store_last_migration_date
      ShopifyCLI::DB.set(ShopifyCLI::Constants::StoreKeys::LAST_MIGRATION_DATE => Time.now.to_i)
    end
    
    def self.last_migration_date
      ShopifyCLI::DB.get(ShopifyCLI::Constants::StoreKeys::LAST_MIGRATION_DATE)
    end

    def self.migrations(migrations_directory:)
      Dir.glob(File.join(migrations_directory, "*.rb")).map do |file_path|
        file_name = File.basename(file_path).gsub(".rb", "")
        file_name_components = file_name.split("_")
        date_timestamp = file_name_components[0].to_i
        migration_name = file_name_components[1...].join("_")

        Migrator::Migration.new(
          name: migration_name,
          date: Time.at(date_timestamp).to_i,
          path: file_path
        )
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shopify-cli-2.6.5 lib/shopify_cli/migrator.rb
shopify-cli-2.6.4 lib/shopify_cli/migrator.rb
shopify-cli-2.6.3 lib/shopify_cli/migrator.rb
shopify-cli-2.6.2 lib/shopify_cli/migrator.rb
shopify-cli-2.6.1 lib/shopify_cli/migrator.rb
shopify-cli-2.6.0 lib/shopify_cli/migrator.rb