class Wip::Todo
Constants
- ATTRIBUTES
Attributes
client[R]
deleted[RW]
Public Class Methods
collection_query(**args)
click to toggle source
# File lib/wip/todo.rb, line 13 def self.collection_query(**args) conditions = Wip::GraphqlHelper.query_conditions(**args) %{ todos#{conditions} { #{default_selection} } } end
complete(id)
click to toggle source
# File lib/wip/todo.rb, line 44 def self.complete(id) todo = find id todo.complete todo end
create(body:, completed_at: nil)
click to toggle source
# File lib/wip/todo.rb, line 33 def self.create(body:, completed_at: nil) new(body: body, completed_at: completed_at).tap &:save end
default_selection()
click to toggle source
# File lib/wip/todo.rb, line 18 def self.default_selection ATTRIBUTES.join("\n ") end
delete(id)
click to toggle source
# File lib/wip/todo.rb, line 56 def self.delete(id) todo = find id todo.delete todo end
find(id)
click to toggle source
# File lib/wip/todo.rb, line 22 def self.find(id) client = Wip::Client.new find_query = %{ { todo(id: \"#{id}\") {#{default_selection}} } } client.request find_query parse client.data("todo") end
new(id: nil, body: nil, completed_at: nil, created_at: nil)
click to toggle source
# File lib/wip/todo.rb, line 63 def initialize(id: nil, body: nil, completed_at: nil, created_at: nil) @id = id @body = body @completed_at = completed_at @created_at = created_at end
parse(data)
click to toggle source
# File lib/wip/todo.rb, line 37 def self.parse(data) todo_id = data["id"].to_i completed_at = DateTime.parse(data["completed_at"]) unless data["completed_at"].nil? created_at = DateTime.parse(data["created_at"]) unless data["created_at"].nil? new id: todo_id, body: data["body"], completed_at: completed_at, created_at: created_at end
uncomplete(id)
click to toggle source
# File lib/wip/todo.rb, line 50 def self.uncomplete(id) todo = find id todo.uncomplete todo end
Public Instance Methods
complete()
click to toggle source
# File lib/wip/todo.rb, line 87 def complete client.request complete_query client.data("completeTodo").tap do |params| @completed_at = DateTime.parse params["completed_at"] end end
delete()
click to toggle source
# File lib/wip/todo.rb, line 112 def delete client.request delete_query @deleted = !client.data("deleteTodo").nil? end
description()
click to toggle source
# File lib/wip/todo.rb, line 75 def description [icon, body, "- #{id}"].join " " end
done?()
click to toggle source
# File lib/wip/todo.rb, line 79 def done? !completed_at.nil? end
icon()
click to toggle source
# File lib/wip/todo.rb, line 83 def icon deleted ? "🗑" : (done? ? "✅" : "🚧") end
save()
click to toggle source
# File lib/wip/todo.rb, line 105 def save client.request create_query client.data("createTodo").tap do |params| @id = params["id"]&.to_i end end
toggle()
click to toggle source
# File lib/wip/todo.rb, line 101 def toggle done? ? uncomplete : complete end
uncomplete()
click to toggle source
# File lib/wip/todo.rb, line 94 def uncomplete client.request uncomplete_query client.data("uncompleteTodo").tap do |params| @completed_at = nil end end
Private Instance Methods
complete_query()
click to toggle source
# File lib/wip/todo.rb, line 139 def complete_query %{ mutation completeTodo { completeTodo(id: #{id}) { id body completed_at created_at } } } end
create_query()
click to toggle source
# File lib/wip/todo.rb, line 118 def create_query %{ mutation createTodo { createTodo(input: {#{to_params}}) { id body completed_at created_at } } } end
delete_query()
click to toggle source
# File lib/wip/todo.rb, line 131 def delete_query %{ mutation deleteTodo { deleteTodo(id: #{id}) } } end
to_params()
click to toggle source
# File lib/wip/todo.rb, line 165 def to_params [:body, :completed_at].collect do |key| value = send(key).nil? ? "null" : "\"#{send(key)}\"" [key, value].join(": ") end.join(", ") end
uncomplete_query()
click to toggle source
# File lib/wip/todo.rb, line 152 def uncomplete_query %{ mutation uncompleteTodo { uncompleteTodo(id: #{id}) { id body completed_at created_at } } } end