fjord/memoapp/app.rb

63 lines
1.1 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
require 'sinatra'
require 'sinatra/reloader' if development?
require 'json'
FILE_PATH = 'public/memos.json'
def load_memos
File.exist?(FILE_PATH) ? JSON.parse(File.read(FILE_PATH)) : {}
end
def save_memos(memos)
File.open(FILE_PATH, 'w') do |file|
file.write(JSON.pretty_generate(memos))
end
end
get '/' do
redirect '/memos'
end
get '/memos' do
@memos = load_memos
erb :index
end
get '/memos/new' do
erb :new
end
post '/memos' do
memos = load_memos
id = (memos.keys.map(&:to_i).max || 0) + 1
memos[id.to_s] = { 'title' => params[:title], 'content' => params[:content] }
save_memos(memos)
redirect '/memos'
end
get '/memos/:id' do
@memo = load_memos[params[:id]]
erb :show
end
get '/memos/:id/edit' do
@memo = load_memos[params[:id]]
erb :edit
end
patch '/memos/:id' do
memos = load_memos
memos[params[:id]] = { 'title' => params[:title], 'content' => params[:content] }
save_memos(memos)
redirect "/memos/#{params[:id]}"
end
delete '/memos/:id' do
memos = load_memos
memos.delete(params[:id])
save_memos(memos)
redirect '/memos'
end