lib/doggy/model/screen.rb in doggy-0.1.3 vs lib/doggy/model/screen.rb in doggy-0.2.0

- old
+ new

@@ -1,25 +1,11 @@ module Doggy class Screen - def initialize(**options) - @id = options[:id] - @description = options[:description] || raw_local - end - - def self.download_all - ids = Doggy.client.dog.get_all_screenboards[1]['screenboards'].map { |d| d['id'] } - puts "Downloading #{ids.size} screenboards..." - Doggy.clean_dir(Doggy.screens_path) - download(ids) - rescue => e - puts "Exception: #{e.message}" - end - def self.upload_all - ids = Dir[Doggy.screens_path.join('*')].map { |f| File.basename(f, '.*') } - puts "Uploading #{ids.size} screenboards from #{Doggy.screens_path}: #{ids.join(', ')}" - upload(ids) + objects = all_local_items.find_all { |(type, id), object| type == 'screen' } + puts "Uploading #{objects.size} screens" + upload(objects.map { |(type, id), object| id }) rescue => e puts "Exception: #{e.message}" end def self.download(ids) @@ -28,16 +14,26 @@ def self.upload(ids) Doggy::Worker.new(threads: Doggy::Worker::CONCURRENT_STREAMS) { |id| new(id: id).push }.call([*ids]) end - def self.create(name) - item = new(description: { 'board_title' => name, 'widgets' => [] }) - item.push - item.save + def self.edit(id) + system %{open "https://app.datadoghq.com/screen/#{id}"} + if SharedHelpers.agree("Are you done?") + puts 'Here is the output of your edit:' + puts Doggy::Serializer::Json.dump(new(id: id).raw) + else + puts "run, rabbit run / dig that hole, forget the sun / and when at last the work is done / don't sit down / it's time to dig another one" + edit(id) + end end + def initialize(**options) + @id = options[:id] + @description = options[:description] || raw_local + end + def raw @raw ||= begin status, result = Doggy.client.dog.get_screenboard(@id) result && result.sort.to_h end @@ -55,30 +51,30 @@ File.write(path, Doggy.serializer.dump(raw)) end def push return if @description =~ Doggy::DOG_SKIP_REGEX + return unless Doggy.determine_type(raw_local) == 'screen' if @id - Doggy.with_retry do + SharedHelpers.with_retry do Doggy.client.dog.update_screenboard(@id, @description) end else - Doggy.with_retry do + SharedHelpers.with_retry do result = Doggy.client.dog.create_screenboard(@description) end @id = result[1]['id'] @description = result[1] end end def delete Doggy.client.dog.delete_screenboard(@id) - File.unlink(path) end private def path - "#{Doggy.screens_path}/#{@id}.json" + "#{Doggy.objects_path}/#{@id}.json" end end end