Sha256: 8e9889d6b75cce1f118c08e40e7fc1b6d0aaee933eaeac4fef3bf90fb8f93148

Contents?: true

Size: 1.81 KB

Versions: 2

Compression:

Stored size: 1.81 KB

Contents

require_relative 'class_definition/presenter'
require_relative 'devise_definition/presenter'
require_relative 'enums'
require_relative 'associations'
require_relative 'concerns'
require_relative 'attachments'

module WebammToRails
  module Sources
    module Models
      class Definition
        def initialize(table_definition:, waml_definition:)
          @table_definition = table_definition
          @waml_definition = waml_definition
        end

        def render
          template_path = File.expand_path('template.erb', __dir__)
          template_content = File.read(template_path)
          raw_content = ERB.new(template_content, trim_mode: '-').result(instance_eval { binding })

          ::WebammToRails::Utils::FormatCode.call(raw_content)
        end

        private

        def class_definition
          ::WebammToRails::Sources::Models::ClassDefinition::Presenter.new(table_name: table_name).render
        end

        def associations
          ::WebammToRails::Sources::Models::Associations.new(table_definition: @table_definition, waml_definition: @waml_definition).collection
        end

        def enums
          ::WebammToRails::Sources::Models::Enums.new(table_definition: @table_definition).collection
        end

        def concerns
          ::WebammToRails::Sources::Models::Concerns.new(table_definition: @table_definition, waml_definition: @waml_definition).collection
        end

        def table_name
          @table_definition.table
        end

        def devise_definition
          ::WebammToRails::Sources::Models::DeviseDefinition::Presenter.new(table_name: table_name, waml_definition: @waml_definition).render
        end

        def attachments
          ::WebammToRails::Sources::Models::Attachments.new(table_definition: @table_definition).collection
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
webamm_to_rails-7.0.1 lib/webamm_to_rails/sources/models/definition.rb
webamm_to_rails-7.0.0 lib/webamm_to_rails/sources/models/definition.rb