-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsongbook.rb
89 lines (75 loc) · 1.68 KB
/
songbook.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
89
require 'sinatra'
require "sinatra/basic_auth"
require 'data_mapper'
require 'time'
enable :sessions
set :session_secret, 'secret'
SITE_TITLE = "Songbook"
SITE_DESCRIPTION = "a simple blogging platform"
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/songs.db")
class Song
include DataMapper::Resource
property :id, Serial
property :title_post, String, :length => 25, :required => true
property :content, Text, :required => true
property :created_at, DateTime
property :updated_at, DateTime
end
DataMapper.finalize.auto_upgrade!
helpers do
include Rack::Utils
alias_method :h, :escape_html
end
authorize "Admin" do |username, password|
username == "admin" && password == "admin"
end
get '/' do
@songs = Song.all :order => :id.desc
@title = 'All Posts'
erb :start
end
protect "Admin" do
get '/panel' do
@songs = Song.all :order => :id.desc
@title = 'All Posts'
erb :home
end
post '/panel' do
s = Song.new
s.content = params[:content]
s.title_post = params[:title_post]
s.created_at = Time.now
s.updated_at = Time.now
s.save
redirect '/panel'
end
get '/panel/:id' do
@song = Song.get params[:id]
@title = "Edit note ##{params[:id]}"
if @song
erb :edit
else
redirect '/panel'
end
end
put '/panel/:id' do
s = Song.get params[:id]
s.content = params[:content]
s.title_post = params[:title_post]
s.updated_at = Time.now
s.save
redirect '/panel'
end
get '/panel/:id/delete' do
@song = Song.get params[:id]
@title = "Confirm deletion of post ##{params[:id]}"
if @song
erb :delete
end
end
delete '/panel/:id' do
s = Song.get params[:id]
s.destroy
redirect '/panel'
end
end