Sha256: e097378d00ac582ba034ffbe9b9b535c2560d3adca38ae2ac7eb3c81a8cfac40
Contents?: true
Size: 1.59 KB
Versions: 2
Compression:
Stored size: 1.59 KB
Contents
require 'active_record' module Ds class Command def self.run(argv) new(argv).execute end def initialize(argv) @argv = argv end def execute options = Options.parse!(@argv) sub_command = options.delete(:command) DB.prepare deeds = case sub_command when 'create' create_deed(options[:content], options[:hour]) when 'delete' delete_deed(options[:id]) when 'update' update_deed(options[:id], options) when 'list' list_deed end display_deeds deeds rescue => e abort "Error: #{e.message}" end def list_deed Deed.order('created_at DESC') end def create_deed(content, hour) ActiveRecord::Base.transaction do deed = Deed.create!(content: content, hour: hour) Timestamp.create!(deed_id: deed.id) deed end end def delete_deed(id) deed = Deed.find(id) deed.destroy end def update_deed(id, attributes) deed = Deed.find(id) attributes[:hour] = deed.hour + attributes[:hour] deed.update_attributes! attributes end private def display_deeds(deeds) header = display_format('ID', 'Content', 'Total Time') puts header puts '-' * header.size Array(deeds).each do |deed| puts display_format(deed.id, deed.content, deed.hour) end end def display_format(id, content, hour) [id.to_s.rjust(4), content.ljust(38), hour.to_s.ljust(11)].join(' | ') end end end
Version data entries
2 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mdg-1.0.1 | vendor/bundle/ruby/2.3.0/gems/ds-0.0.2/lib/ds/command.rb |
mdg-1.0.1 | vendor/bundle/ruby/2.3.0/gems/ds-0.0.3/lib/ds/command.rb |