Sha256: 424b92e27718c0dd7f2db1f30267800ab323dcb005adaa8708b9e163a9e800dd

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Orchestration
  module DockerCompose
    class DatabaseService
      include ComposeHelpers

      def initialize(config, environment)
        @environment = environment
        @config = config
      end

      def definition
        return nil unless @config.enabled?
        return nil if adapter.name == 'sqlite3'

        {
          'image' => adapter.image,
          'environment' => adapter.environment,
          'networks' => networks
        }.merge(ports).merge(volumes)
      end

      private

      def adapter
        name = ComposeConfiguration.new(@environment).database_adapter_name
        base = 'Orchestration::Services::Database::Adapters'
        Object.const_get("#{base}::#{name.capitalize}").new
      end

      def remote_port
        adapter.default_port
      end

      def networks
        return {} unless @environment == :deployment

        { 'local' => { 'aliases' => ['database-local'] } }
      end

      def ports
        return {} unless %i[development test].include?(@environment)

        { 'ports' => ["#{sidecar_port(@environment)}#{remote_port}"] }
      end

      def volumes
        return {} if @environment == :test

        { 'volumes' => ["#{@config.env.database_volume}:#{adapter.data_dir}"] }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
orchestration-0.6.4 lib/orchestration/docker_compose/database_service.rb
orchestration-0.6.3 lib/orchestration/docker_compose/database_service.rb
orchestration-0.6.2 lib/orchestration/docker_compose/database_service.rb
orchestration-0.6.1 lib/orchestration/docker_compose/database_service.rb
orchestration-0.6.0 lib/orchestration/docker_compose/database_service.rb