module Product

require “active_record”

def self.generate

end

end

task :environment do

puts "Setting up environment"

end

namespace :product do

new_line = "\n"
content = ""
tab = "   "

desc "Generate a model that heritances from product"
#usage example: rake product:generate_model[Shoes,E4CProduct,color,size,imported_from]
task :generate_model do |task, args|

    file  =  "lib/e4commerce/#{args.extras[0]}.rb"

    #Check if first letter of first argument is uppercased
    if args.extras[0][0].upcase! || args.extras[1][0].upcase! then
        abort("First letter of a class must be in uppercase\nUsage: rake product:generate_model[<Model>,<Heritance>,<arg2:type>,<arg3:type ...>]")
    end

    content = "class #{args.extras[0]} < #{args.extras[1]}" + new_line

    #Include validations to each element but first and second argument
    args.extras.drop(2).each do |params|
        content += tab + "validates :#{params}, presence: true" + new_line
    end

    content += "end"

    puts "CREATE lib/e4commerce/#{args.extras[0]}.rb"

    write_content(file,content)

    puts "CREATED " + file + new_line

end

def write_content(file,content)
    #Writes the file for model
    File.open(file, "w+") { |file| file.write(content) }
end
desc "All taks related to products"
task :generate_product, [:name, :price, :image_url] => [:environment] do |t, args|
    puts "Here goes the code that generates products, yet create model Product"
    puts "product: ", args
end

end

task :E4Cinitialize do

ActiveRecord::Base.establish_connection adapter: 'sqlite3', database: 'database.db'

ActiveRecord::Schema.define do
  unless ActiveRecord::Base.connection.tables.include? 'tags'
    create_table :product do |table|
      table.column :title , :string
      table.column :serial_number, :string
      table.column :unit_price, :float
      table.column :unit_price, :float
      args.extras.drop(2).each do |params|
  str_tmp = "#{params}".split(":")
      table.column (":" + str_tmp[0]).to_sym , (":" + str_tmp[1]).to_sym
    end
    end
  end
end

end