module Group
  extend self

  def create(name: 'group')
    puts "Creating group: #{name}"
    group = Session.post('/group', {name: name})
    puts "Group created with id: #{group['_id']}"
    return group
  end

  def update(id, params)
    puts "Updating group: #{id}"
    Session.post('/group/update', {_id: id}.merge(params))
  end

  def delete(id)
    puts "Deleting group: #{id}"
    Session.post('/group/destroy', {_id: id})
  end

  def search(name)
    groups = Session.get('/group')
    g = groups.select {|u| u['name'].eql? name}.first
    raise "Group not found" unless g
    return g
  end

  def add_user(gid, uid)
    puts "Adding user #{uid} to group #{gid}"
    Session.post('/group/add_user', {_id: gid, user: {_id: uid}})
  end

  def del_user(gid, uid)
    puts "Removing user #{uid} from group #{gid}"
    Session.post('/group/del_user', {_id: gid, user: {_id: uid}})
  end
end