diff --git a/Gemfile b/Gemfile index d6a34ec..7a56217 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,7 @@ source 'https://rubygems.org' gem 'sinatra', '~> 3.0' gem 'sinatra-contrib', '~> 3.0' +gem 'sinatra-flash', '~> 0.3.0' gem 'puma', '~> 6.3' gem 'sequel', '~> 5.70' diff --git a/db/migrations/0001_add_messages_table.rb b/db/migrations/0001_add_messages_table.rb index 3f8f2ca..b438c5c 100644 --- a/db/migrations/0001_add_messages_table.rb +++ b/db/migrations/0001_add_messages_table.rb @@ -3,6 +3,7 @@ Sequel.migration do up do create_table(:messages) do primary_key :id + String :slug, null: false, unique: true String :body, null: false DateTime :created_at, default: Sequel::CURRENT_TIMESTAMP DateTime :updated_at, default: Sequel::CURRENT_TIMESTAMP diff --git a/src/routes/message.rb b/src/routes/message.rb new file mode 100644 index 0000000..2c30c40 --- /dev/null +++ b/src/routes/message.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'securerandom' + +# /message routes +class Destructo < Sinatra::Base + + get '/message' do + redirect '/message/new' + end + + get '/message/new' do + erb :'message/new', locals: { + title: 'Create new message' + } + end + + post '/message/new' do + # generate a random string for the slug + slug = SecureRandom.urlsafe_base64(12) + + # create object in DB + msg = Message.create( + slug: slug, + body: params[:message_body] + ) + + flash[:success] = "Your message was created successfully! Share this link: https://msg.destructo.com/#{slug}" + + redirect '/' + end + +end diff --git a/views/layout.erb b/views/layout.erb index 160b874..8851613 100644 --- a/views/layout.erb +++ b/views/layout.erb @@ -4,7 +4,7 @@ - <%= title %> | Game Data + <%= title %> | Destructo @@ -14,6 +14,9 @@ <%= erb :'partials/navbar', :locals => locals %> + + <%= erb :'partials/flash' %> +
<%= yield %> diff --git a/views/message/new.erb b/views/message/new.erb new file mode 100644 index 0000000..5c7b2b5 --- /dev/null +++ b/views/message/new.erb @@ -0,0 +1,18 @@ +
+
+
+
+ +
+ +
+
+ +
+
+
+
+
diff --git a/views/partials/flash.erb b/views/partials/flash.erb new file mode 100644 index 0000000..0af8366 --- /dev/null +++ b/views/partials/flash.erb @@ -0,0 +1,9 @@ +<% if flash[:success] %> +
+
+
+

<%= flash[:success] %>

+
+
+
+<% end %>