Sha256: 85c7a90de7f0324b19e77ddd659f56dc8aa190bcc3edcf4f7131fb15eb7ece18

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

require_relative '../../migration_helpers'

module Gitlab
  module Styles
    module Rubocop
      module Cop
        module Migration
          # Cop that checks if datetime data type is added with timezone information.
          class Datetime < RuboCop::Cop::Cop
            include MigrationHelpers

            MSG = 'Do not use the `datetime` data type, use `datetime_with_timezone` instead'.freeze

            # Check methods in table creation.
            def on_def(node)
              return unless in_migration?(node)

              node.each_descendant(:send) do |send_node|
                add_offense(send_node, :selector) if method_name(send_node) == :datetime
              end
            end

            # Check methods.
            def on_send(node)
              return unless in_migration?(node)

              node.each_descendant do |descendant|
                add_offense(node, :expression) if descendant.type == :sym && descendant.children.last == :datetime
              end
            end

            def method_name(node)
              node.children[1]
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gitlab-styles-1.0.0 lib/gitlab/styles/rubocop/cop/migration/datetime.rb
gitlab-styles-0.1.0 lib/gitlab/styles/rubocop/cop/migration/datetime.rb