require 'rubygems'
require 'sinatra'
require 'sinatra/json'
require 'uri'
require 'active_record'

ActiveRecord::Base.establish_connection(
  :adapter => 'sqlite3',
  :database =>  'contacts.sqlite'
)

class Contact < ActiveRecord::Base
end

get '/contacts' do
  @contacts = Contact.all
  @response_message = {data: @contacts, success: true, status: 200}
  json @response_message
end

get '/contacts/:name' do
  @name = params['name']
  @contact = Contact.where(name: @name).first
  @response_message = {data: [@contact], success: true, status: 200}
  json @response_message
end

post '/contacts/new' do
  @data = JSON.parse(request.body.read)['data']
  puts @data.inspect
  if @data['name'] and @data['link'] then
    @contact = Contact.new(name: @data['name'], link: @data['link'])
    @contact.save
  end
  @response_message = { "message": "Contact #{@data['name']} created." }
  json @response_message
end

delete '/contacts/:id' do
  @id = params['id']
  @contact = Contact.find_by_id(@id)
  if @contact then
    Contact.delete(@contact.id)
    @response_message = { "message": "Contact id = #{@contact.id} deleted." }
  else
    @response_message = { "message": "Contact id = #{@contact.id} not found." }
  end
  json @response_message
end

options '/' do
  # Currently supported HTTP verbs
  response.headers["Allow"] = "HEAD,GET,POST,DELETE,OPTIONS"
  204
end