Sha256: 7402f882856a5cbe6491b52f23f1149a8efa4d5a1bf2d42888cc218b0322dd9d

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

require 'rails/generators'
require 'rails_newsfeed/feed_table'

module RailsNewsfeed
  class ModelGenerator < Rails::Generators::NamedBase
    class_option :type_of_id, type: :string, require: false
    def process
      case behavior
      when :invoke
        invoke
      when :revoke
        revoke
      end
    end

    private

      def invoke
        t = options.key?('type_of_id') ? options['type_of_id'] : 'bigint'
        RailsNewsfeed::Connection.exec_cql("DROP TABLE IF EXISTS #{file_name}")
        RailsNewsfeed::Connection.exec_cql("CREATE TABLE #{file_name}
        (id #{t}, activity_id uuid, activity_content text, activity_object text, activity_time timestamp,
        PRIMARY KEY ((id), activity_id)) WITH CLUSTERING ORDER BY (activity_id DESC)")
        RailsNewsfeed::Connection.exec_cql("INSERT INTO #{RailsNewsfeed::FeedTable.table_name} (table_class)
        VALUES ('#{class_name}')")
        create_file "app/models/#{file_name}.rb", <<-FILE
class #{class_name} < RailsNewsfeed::NewsfeedModel
  type_of_id :#{t}
end
      FILE
      end

      def revoke
        RailsNewsfeed::Connection.exec_cql("DROP TABLE IF EXISTS #{file_name}")
        RailsNewsfeed::Connection.exec_cql("DELETE FROM #{RailsNewsfeed::FeedTable.table_name}
        WHERE table_class='#{class_name}'")
        @behavior = :invoke
        remove_file "app/models/#{file_name}.rb"
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_newsfeed-0.0.4 lib/generators/rails_newsfeed/model_generator.rb