Module: Forecast::Behavior::Crud

Included in:
API::Assignments, API::Projects
Defined in:
lib/forecast/behavior/crud.rb

Instance Method Summary collapse

Instance Method Details

#all(query_options = {}) ⇒ Object

def all(user = nil, query_options = {})



11
12
13
14
15
16
17
18
19
# File 'lib/forecast/behavior/crud.rb', line 11

def all(query_options = {})

  # query = query_options.merge!(of_user_query(user))
  query = query_options

  response = request(:get, credentials, api_model.api_path, :query => query)

  api_model.parse(response.parsed_response)
end

#create(model, user = nil) ⇒ Harvest::BaseModel

Creates an item

Parameters:

  • model (Harvest::BaseModel)

    the item you want to create

Returns:

  • (Harvest::BaseModel)

    the created model depending on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



40
41
42
43
44
45
46
47
48
49
# File 'lib/forecast/behavior/crud.rb', line 40

def create(model, user = nil)
  model = api_model.wrap(model)
  response = request(:post, credentials, "#{api_model.api_path}", :body => model.to_json, :query => of_user_query(user))
  id = response.headers["location"].match(/\/.*\/(\d+)/)[1]
  if user
    find(id, user)
  else
    find(id)
  end
end

#delete(model) ⇒ Integer #delete(id) ⇒ Integer #delete(id) ⇒ Integer

Deletes an item

Overloads:

  • #delete(model) ⇒ Integer

    Parameters:

    • model (Harvest::BaseModel)

      the item you want to delete

  • #delete(id) ⇒ Integer

    Parameters:

    • id (Integer)

      the id of the item you want to delete

  • #delete(id) ⇒ Integer

    Parameters:

    • id (String)

      the String version of the id of the item you want to delete

Returns:

  • (Integer)

    the id of the item deleted



69
70
71
72
# File 'lib/forecast/behavior/crud.rb', line 69

def delete(model, user = nil)
  request(:delete, credentials, "#{api_model.api_path}/#{model.to_i}", :query => of_user_query(user))
  model.to_i
end

#find(id) ⇒ Harvest::BaseModel #find(id) ⇒ Harvest::BaseModel #find(model) ⇒ Harvest::BaseModel

Retrieves an item by id

Overloads:

  • #find(id) ⇒ Harvest::BaseModel

    Parameters:

    • the (Integer)

      id of the item you want to retreive

  • #find(id) ⇒ Harvest::BaseModel

    Parameters:

    • id (String)

      the String version of the id

  • #find(model) ⇒ Harvest::BaseModel

    Parameters:

    • id (Harvest::BaseModel)

      you can pass a model and it will return a refreshed version

Returns:

  • (Harvest::BaseModel)

    the model depends on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



30
31
32
33
34
35
# File 'lib/forecast/behavior/crud.rb', line 30

def find(id, user = nil)
  raise "id required" unless id
  # response = request(:get, credentials, "#{api_model.api_path}/#{id}", :query => of_user_query(user))
  response = request(:get, credentials, "#{api_model.api_path}/#{id}")
  api_model.parse(response.parsed_response)
end

#update(model, user = nil) ⇒ Harvest::BaseModel

Updates an item

Parameters:

  • model (Harvest::BaseModel)

    the model you want to update

Returns:

  • (Harvest::BaseModel)

    the created model depending on where you’re calling it from (e.g. Harvest::Client from Harvest::Base#clients)



54
55
56
57
58
# File 'lib/forecast/behavior/crud.rb', line 54

def update(model, user = nil)
  model = api_model.wrap(model)
  request(:put, credentials, "#{api_model.api_path}/#{model.to_i}", :body => model.to_json, :query => of_user_query(user))
  find(model.id)
end