-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathapp.rb
More file actions
164 lines (143 loc) · 3.14 KB
/
app.rb
File metadata and controls
164 lines (143 loc) · 3.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
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
require 'sinatra'
require 'data_mapper'
set :bind,'0.0.0.0'
enable :sessions
DataMapper.setup(:default, "sqlite:///#{Dir.pwd}data.db")
class User
include DataMapper::Resource
property :id , Serial
property :username , String
property :password , String
end
class Message
include DataMapper::Resource
property :message , String
property :sender_id , Integer
property :sender , String
property :reciever , String
property :reciever_id, Integer
property :id , Serial
end
class Tweets
include DataMapper::Resource
property :id , Serial
property :tweet_message , String
property :user_id , Integer
property :username , String
end
class Likes
include DataMapper::Resource
property :id , Serial
property :tweet_id , Integer
property :user_id , Integer
end
DataMapper.finalize
User.auto_upgrade!
Message.auto_upgrade!
Tweets.auto_upgrade!
Likes.auto_upgrade!
get '/' do
current_user=nil
if session[:id]
current_user=User.get(session[:id])
else
redirect '/login'
end
tweets=Tweets.all()
likes=Likes.all()
erb :tweets , locals: {:tweets=>tweets , :current_user=>current_user , :likes=>likes}
end
get '/login' do
erb :login
end
get '/signup' do
erb :signup
end
post '/login' do
username=params[:login_username]
password=params[:login_password]
user=User.all(:username=>username).first
if user
if user.password==password
session[:id]=user.id
redirect '/'
else
redirect 'login'
end
else
redirect '/signup'
end
end
post '/signup' do
username=params[:signup_username]
password=params[:signup_password]
new_user=User.new
new_user.username=username
new_user.password=password
new_user.save
session[:id]=new_user.id
redirect '/'
end
post '/logout' do
session[:id]=nil
redirect '/'
end
post '/messages' do
messages=Message.all(:reciever_id=>session[:id])
current_user=User.get(session[:id]).username
erb :personalmessage , locals: {:messages=>messages,:current_user=>current_user}
end
post '/send_message' do
message=Message.new
message.message=params[:sent_message]
message.sender_id=session[:id]
message.sender=User.get(session[:id]).username
message.reciever=params[:sent_to]
message.reciever_id=User.all(:username=>params[:sent_to]).first.id
message.save
redirect '/'
end
post '/delete_account' do
user=User.get(session[:id])
tweets=Tweets.all(:user_id=>session[:id])
tweets.destroy()
user.destroy()
session[:id]=nil
redirect '/'
end
post '/make_tweet' do
tweet_message=params[:tweet_message]
new_tweet=Tweets.new
new_tweet.tweet_message=tweet_message
new_tweet.username=User.get(session[:id]).username
new_tweet.user_id=session[:id]
new_tweet.save
redirect '/'
end
post '/delete_tweet' do
tweet=Tweets.get(params[:delete])
tweet.destroy()
redirect '/'
end
get '/like/:tweet_id' do
like=Likes.all(:tweet_id=>params[:tweet_id],:user_id=>session[:id]).first
if !like
like=Likes.new
like.tweet_id=params[:tweet_id]
like.user_id=session[:id]
like.save
else
like.destroy
end
redirect '/'
end
post '/edit_tweet' do
tweet=Tweets.get(params[:edit])
erb :edit , locals: {:tweet=>tweet}
end
post '/edit' do
tweet=Tweets.get(params[:editted_id])
tweet.tweet_message=params[:editted]
tweet.save
redirect '/'
end