Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ['sinatra', 'sinatra/sequel', 'sass', 'json', 'rack-flash', 'digest/md5'].each{|gem|require gem}
- use Rack::Session::Pool, :expire_after => 2592000
- use Rack::Flash
- set :database, 'sqlite://Todoist.db'
- class Post < Sequel::Model(:users_posts)
- Post.plugin :json_serializer
- many_to_one :users
- end
- class User < Sequel::Model(:users)
- User.plugin :json_serializer
- one_to_many :posts
- end
- migration "create the users_posts table" do
- database.create_table :users_posts do
- primary_key :id
- Integer :priority
- String :title, :text => true
- timestamp :created_at, :null => false
- foreign_key :user_id
- end
- end
- migration "create the users table" do
- database.create_table :users do
- primary_key :id
- varchar :name, :null => false
- varchar :email, :index=>true, :unique=>true, :size => 64, :null => false
- varchar :password, :size => 32, :null => false
- timestamp :created_at, :null => false
- timestamp :loggedin_at
- end
- end
- CONTENT_TYPES = {
- :html => 'text/html',
- :css => 'text/css',
- :js => 'application/javascript',
- :json => 'application/json'
- }
- before do
- request_uri = case request.env['REQUEST_URI']
- when /\.css$/ : :css
- when /\.js$/ : :js
- when /\.json$/ : :json
- else :html
- end
- content_type CONTENT_TYPES[request_uri], :charset => 'utf-8'
- end
- get '/' do
- if session[:loggedin]
- @posts = Post.order(:id).all
- else
- @posts = []
- end
- @notice = flash[:notice]
- erb :index
- end
- get '/register' do
- @posts = Post.order(:id).all
- @notice = flash[:notice]
- erb :index
- end
- get '/post/all.json' do
- Post.order(:priority).all.to_json(:root => true)
- end
- get '/post/:id/delete' do
- if !params[:id].empty?
- @post = Post[params[:id]].delete
- flash[:notice] = "Todo deleted"
- else
- flash[:notice] = "Todo not deleted"
- end
- redirect '/'
- end
- post '/post/delete.json' do
- if !params[:id].empty?
- Post[params[:id]].delete
- { :success => true }.to_json
- else
- { :success => false }.to_json
- end
- end
- post '/post/create' do
- if !params[:title].empty?
- Post.create(:title => params[:title], :created_at => Time.now, :user_id => session[:user_id])
- flash[:notice] = "Todo created"
- else
- flash[:notice] = "Todo needs title"
- end
- redirect '/'
- end
- post '/post/create.json' do
- if !params[:title].empty?
- { :data => Post.create(:title => params[:title], :created_at => Time.now, :user_id => session[:user_id]), :success => true }.to_json
- else
- { :success => false }.to_json
- end
- end
- post '/post/sortList.json' do
- @position = 1;
- params[:item].each_with_index do |id, index|
- Post[id].update(:priority => index+1)
- end
- end
- get '/user/all.json' do
- User.order(:id).all.to_json(:root => true)
- end
- post '/user/login' do
- @user = User.filter('email = ? AND password = ?', params[:email], Digest::MD5.hexdigest(params[:password])).update(:loggedin_at => Time.now)
- puts @user.count
- session[:loggedin] = true
- session[:user_id] = @user.id
- redirect '/'
- end
- post '/user/login.json' do
- @user = User.filter('email = ? AND password = ?', params[:email], Digest::MD5.hexdigest(params[:password])).update(:loggedin_at => Time.now).to_json
- end
- post '/user/create' do
- if !params[:name].empty? && !params[:email].empty? && !params[:password].empty? && params[:password] == params[:passwordAgain]
- User.create(:name => params[:name], :email => params[:email], :password => Digest::MD5.hexdigest(params[:password]), :created_at => Time.now)
- Users.save
- end
- redirect '/'
- end
- get '/user/logout' do
- session[:user_id] = nil
- session[:loggedin] = nil
- redirect '/'
- end
- get '/style.css' do
- scss :style
- end
Add Comment
Please, Sign In to add comment