-
Notifications
You must be signed in to change notification settings - Fork 2
/
server.rb
88 lines (73 loc) · 1.78 KB
/
server.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
require 'sinatra'
require 'data_mapper'
load 'datamapper_setup.rb'
class Todo
include DataMapper::Resource
property :id, Serial # An auto-increment integer key
property :title, String
property :description,String
property :complete, Boolean
end
class MindTheCodeApp < Sinatra::Application
set :partial_template_engine, :erb
set :static, true
#Display all todos
get '/todo' do
@todos = Todo.all
erb :'todos/index'
end
#Make a new todo
get '/todo/new' do
erb :'todos/new'
end
#Show each to do
get '/todo/:id' do |id|
@todo = Todo.get!(id)
erb :'todos/show'
end
#Edit each to do
get '/todo/:id/edit' do |id|
@todo = Todo.get!(id)
erb :'todos/edit'
end
# POST = how a client tells a server to add an entity as a child of the object
#identified by the URI.
#The entity that the client expects the server to add is transmitted in the request body.
post '/todo' do
todo = Todo.new(params[:todo])
if todo.save
redirect '/todo'
else
redirect '/todo/new'
end
end
# Changes boolean complete.
put '/todo/:id/complete' do |id|
#raise 'something'
todo = Todo.get!(id)
todo.complete = true
todo.save
if todo.save
redirect "/todo"
else
redirect "/todo/#{id}/edit"
end
end
# PUT is used for updating records in the DB
# A request using the PUT HTTP verb should act upon a single resource within the collection;
put '/todo/:id' do |id|
todo = Todo.get!(id)
success = todo.update!(params[:todo])
if success
redirect "/todo/#{id}"
else
redirect "/todo/#{id}/edit"
end
end
#delete verb to delete record in the db
delete '/todo/:id' do |id|
todo = Todo.get!(id)
todo.destroy!
redirect "/todo"
end
end