-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwebapp.rb
More file actions
61 lines (50 loc) · 1.14 KB
/
webapp.rb
File metadata and controls
61 lines (50 loc) · 1.14 KB
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
require 'sinatra'
require 'rubygems'
require 'data_mapper'
DB_HOST=ENV['DB_HOST'] || "localhost"
DB_PASS=ENV['DB_PASS'] || "password"
DB_USER=ENV['DB_USER'] || "root"
DataMapper::setup(:default, "mysql://#{DB_USER}:#{DB_PASS}@#{DB_HOST}/list")
class Item
include DataMapper::Resource
property :id, Serial
property :task, Text, :required => true
property :done, Boolean, :default => false, :required => true
property :created, DateTime
end
Item.auto_upgrade!
DataMapper.finalize
class Webapp < Sinatra::Base
get '/' do
@item = Item.all(:order => :created.desc)
redirect '/new' if @item.empty?
erb :index
end
get '/new' do
@title = "Add todo item"
erb :new
end
post '/new' do
Item.create(:task => params[:task], :done => params[:done], :created => Time.now)
redirect '/'
end
get '/delete/:id' do
@item = Item.first(:id => params[:id])
erb :delete
end
post '/delete/:id' do
if params.has_key?("ok")
item = Item.first(:id => params[:id])
item.destroy
redirect '/'
else
redirect '/'
end
end
post '/item/:id' do
item = Item.first(:id => params[:id])
item.done = !item.done
item.save
redirect '/'
end
end