diff --git a/app/controllers/admin/events_controller.rb b/app/controllers/admin/events_controller.rb
deleted file mode 100644
index 893c12973..000000000
--- a/app/controllers/admin/events_controller.rb
+++ /dev/null
@@ -1,56 +0,0 @@
-module Admin
- class EventsController < ApplicationController
- layout "admin"
- include ApplicationHelper
-
- EVENTS_ALLOWED_PARAMS = %i[
- title category event_date starts_at ends_at
- location_name cover_image location_url description_markdown published
- host_name profile_image live_now
- ].freeze
-
- def index
- @events = Event.order(starts_at: :desc).page(params[:page]).per(20)
- end
-
- def new
- @event = Event.new(
- location_name: "#{URL.domain}/live",
- location_url: app_url,
- description_markdown: "*Description* *Pre-requisites:* *Bio*",
- )
- end
-
- def edit
- @event = Event.find(params[:id])
- end
-
- def create
- @event = Event.new(event_params)
- if @event.save
- flash[:success] = "Successfully created event: #{@event.title}"
- redirect_to admin_events_path
- else
- flash[:danger] = @event.errors.full_messages
- render :new
- end
- end
-
- def update
- @event = Event.find(params[:id])
- if @event.update(event_params)
- flash[:success] = "#{@event.title} was successfully updated"
- redirect_to admin_events_path
- else
- flash[:danger] = @event.errors.full_messages
- render :edit
- end
- end
-
- private
-
- def event_params
- params.require(:event).permit(EVENTS_ALLOWED_PARAMS)
- end
- end
-end
diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb
deleted file mode 100644
index adad44044..000000000
--- a/app/controllers/events_controller.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-class EventsController < ApplicationController
- before_action :set_cache_control_headers, only: [:index]
- # No authorization required for entirely public controller
-
- def index
- @events = Event.in_the_future_and_published.sort_by(&:starts_at)
- @past_events = Event.in_the_past_and_published.sort_by(&:starts_at)
- set_surrogate_key_header "events_index_page"
- @past_events.reverse!
- end
-
- def show
- @event = Event.find_by!(slug: params[:id])
- end
-end
diff --git a/app/models/event.rb b/app/models/event.rb
deleted file mode 100644
index 00cdd37c3..000000000
--- a/app/models/event.rb
+++ /dev/null
@@ -1,49 +0,0 @@
-class Event < ApplicationRecord
- mount_uploader :cover_image, CoverImageUploader
- mount_uploader :profile_image, ProfileImageUploader
-
- validates :title, length: { maximum: 90 }
- validates :location_url, url: { allow_blank: true, schemes: %w[https http] }
- validate :end_time_after_start
- validates :slug, presence: { if: :published? }, format: /\A[0-9a-z-]*\z/
- before_validation :evaluate_markdown
- before_validation :create_slug
- after_save :bust_cache
-
- scope :in_the_future_and_published, lambda {
- where("starts_at > ?", Time.current)
- .where(published: true)
- }
-
- scope :in_the_past_and_published, lambda {
- where("starts_at < ?", Time.current)
- .where(published: true)
- }
-
- private
-
- def evaluate_markdown
- self.description_html = MarkdownProcessor::Parser.new(description_markdown).evaluate_markdown
- end
-
- def end_time_after_start
- if ends_at.nil? || starts_at.nil?
- errors.add(:starts_at, "and ends_at must not be nil")
- elsif ends_at < starts_at
- errors.add(:ends_at, "must be after start date")
- end
- end
-
- def create_slug
- self.slug = title_to_slug if slug.blank? && title.present? && published
- end
-
- def title_to_slug
- downcase = "#{id}-#{category}-#{title}"
- "#{downcase.parameterize}-#{starts_at.strftime('%m-%d-%Y')}"
- end
-
- def bust_cache
- Events::BustCacheWorker.perform_async
- end
-end
diff --git a/app/services/edge_cache/bust_events.rb b/app/services/edge_cache/bust_events.rb
deleted file mode 100644
index 10e7322e7..000000000
--- a/app/services/edge_cache/bust_events.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module EdgeCache
- class BustEvents
- def self.call
- cache_bust = EdgeCache::Bust.new
- cache_bust.call("/events")
- cache_bust.call("/events?i=i")
- end
- end
-end
diff --git a/app/uploaders/cover_image_uploader.rb b/app/uploaders/cover_image_uploader.rb
deleted file mode 100644
index a6b8b07fd..000000000
--- a/app/uploaders/cover_image_uploader.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class CoverImageUploader < BaseUploader
-end
diff --git a/app/views/admin/events/_event_form.html.erb b/app/views/admin/events/_event_form.html.erb
deleted file mode 100644
index b1a9e234f..000000000
--- a/app/views/admin/events/_event_form.html.erb
+++ /dev/null
@@ -1,58 +0,0 @@
-
- <%= form_for [:admin, @event] do |f| %>
-
- <%= f.label :cover_image, class: "crayons-field__label" %>
- <%= f.file_field :cover_image, class: "crayons-field" %>
-
-
- <%= f.label :profile_image, class: "crayons-field__label" %> (for live notification):
- <%= f.file_field :profile_image, class: "crayons-field" %>
-

-
-
- <%= f.label :title, class: "crayons-field__label" %>
- <%= f.text_field :title, maxlength: 90, size: 40, required: true, class: "crayons-textfield" %>
-
-
- <%= f.label :host_name, class: "crayons-field__label" %>
- <%= f.text_field :host_name, size: 40, required: true, class: "crayons-textfield" %>
-
-
- <%= f.label :category, class: "crayons-field__label" %>
- <%= f.select :category, ["AMA", "Workshop", "Talk", "Town Hall"], required: true, class: "crayons-select" %>
-
-
- <%= f.label :starts_at, class: "crayons-field__label" %>
-
-
-
- <%= f.label :ends_at, class: "crayons-field__label" %>
-
-
-
- <%= f.label :location_name, class: "crayons-field__label" %>
- <%= f.text_field :location_name, required: true, class: "crayons-textfield" %>
-
-
- <%= f.label :location_url, class: "crayons-field__label" %>
- <%= f.text_field :location_url, required: true, class: "crayons-textfield" %>
-
-
- <%= f.label :description_markdown, class: "crayons-field__label" %>
- <%= f.text_area :description_markdown, size: "45x10", required: true, class: "crayons-textfield" %>
-
-
- <%= f.label :published, class: "crayons-field__label" %>
- <%= f.check_box :published, class: "crayons-checkbox" %>
-
-
- <%= f.label :live_now, class: "crayons-field__label" %>
- <%= f.check_box :live_now, class: "crayons-checkbox" %>
-
- <%= f.submit class: "crayons-btn" %>
- <% end %>
-
diff --git a/app/views/admin/events/edit.html.erb b/app/views/admin/events/edit.html.erb
deleted file mode 100644
index b4b11e963..000000000
--- a/app/views/admin/events/edit.html.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
Upcoming Events
- <% @events.each do |event| %>
- <% if event.starts_at.future? %>
-
- <%= event.title %>
- <% if event.cover_image_url.present? %>
-

- <% end %>
- <%= link_to "Edit", edit_admin_event_path(event.id), class: "ml-auto crayons-btn crayons-btn--s crayons-btn--secondary" %>
-
-
- <% end %>
- <% end %>
-
-
-
Past Events
- <% @events.each do |event| %>
- <% if !event.starts_at.future? %>
-
- <%= event.title %>
- <% if event.cover_image_url.present? %>
-

- <% end %>
- <%= link_to "Edit", edit_admin_event_path(event.id), class: "ml-auto crayons-btn crayons-btn--s crayons-btn--secondary" %>
-
-
- <% end %>
- <% end %>
-
diff --git a/app/views/admin/events/new.html.erb b/app/views/admin/events/new.html.erb
deleted file mode 100644
index e05acfd43..000000000
--- a/app/views/admin/events/new.html.erb
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
-
<%= @event.category %>: <%= @event.title %>
- <%= render "event", event: @event %>
-
-
-
diff --git a/app/workers/events/bust_cache_worker.rb b/app/workers/events/bust_cache_worker.rb
deleted file mode 100644
index cb1275080..000000000
--- a/app/workers/events/bust_cache_worker.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-module Events
- class BustCacheWorker < BustCacheBaseWorker
- sidekiq_options queue: :low_priority
-
- def perform
- EdgeCache::BustEvents.call
- end
- end
-end
diff --git a/config/routes.rb b/config/routes.rb
index bedb33181..ea548e207 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -166,7 +166,6 @@ Rails.application.routes.draw do
post "/update_or_create", to: "github_repos#update_or_create"
end
end
- resources :events, only: %i[index show]
resources :videos, only: %i[index create new]
resources :video_states, only: [:create]
resources :twilio_tokens, only: [:show]
@@ -313,8 +312,6 @@ Rails.application.routes.draw do
get "/badge", to: "pages#badge", as: :pages_badge
get "/💸", to: redirect("t/hiring")
get "/survey", to: redirect("https://dev.to/ben/final-thoughts-on-the-state-of-the-web-survey-44nn")
- get "/events", to: "events#index"
- get "/workshops", to: redirect("events")
get "/sponsors", to: "pages#sponsors"
get "/search", to: "stories/articles_search#index"
post "articles/preview", to: "articles#preview"
diff --git a/config/routes/admin.rb b/config/routes/admin.rb
index cf062f52f..6ec0b1a9e 100644
--- a/config/routes/admin.rb
+++ b/config/routes/admin.rb
@@ -149,7 +149,6 @@ namespace :admin do
end
end
resources :consumer_apps, only: %i[index new create edit update destroy]
- resources :events, only: %i[index create update new edit]
resources :listings, only: %i[index edit update destroy]
resources :listing_categories, only: %i[index edit update new create
destroy], path: "listings/categories"
diff --git a/db/migrate/20211013060449_drop_events.rb b/db/migrate/20211013060449_drop_events.rb
new file mode 100644
index 000000000..dff2dca53
--- /dev/null
+++ b/db/migrate/20211013060449_drop_events.rb
@@ -0,0 +1,22 @@
+class DropEvents < ActiveRecord::Migration[6.1]
+ def up
+ drop_table :events do |t|
+ t.string :category
+ t.string :cover_image
+ t.text :description_html
+ t.text :description_markdown
+ t.datetime :ends_at
+ t.string :host_name
+ t.boolean :live_now, default: false
+ t.string :location_name
+ t.string :location_url
+ t.string :profile_image
+ t.boolean :published
+ t.string :slug
+ t.datetime :starts_at
+ t.string :title
+
+ t.timestamps
+ end
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b6c022539..5aae5a2d5 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2021_10_08_170433) do
+ActiveRecord::Schema.define(version: 2021_10_13_060449) do
# These are extensions that must be enabled in order to support this database
enable_extension "citext"
@@ -496,25 +496,6 @@ ActiveRecord::Schema.define(version: 2021_10_08_170433) do
t.index ["user_id"], name: "index_email_authorizations_on_user_id"
end
- create_table "events", force: :cascade do |t|
- t.string "category"
- t.string "cover_image"
- t.datetime "created_at", null: false
- t.text "description_html"
- t.text "description_markdown"
- t.datetime "ends_at"
- t.string "host_name"
- t.boolean "live_now", default: false
- t.string "location_name"
- t.string "location_url"
- t.string "profile_image"
- t.boolean "published"
- t.string "slug"
- t.datetime "starts_at"
- t.string "title"
- t.datetime "updated_at", null: false
- end
-
create_table "feedback_messages", force: :cascade do |t|
t.bigint "affected_id"
t.string "category"
diff --git a/spec/factories/events.rb b/spec/factories/events.rb
deleted file mode 100644
index ff149492e..000000000
--- a/spec/factories/events.rb
+++ /dev/null
@@ -1,9 +0,0 @@
-FactoryBot.define do
- factory :event do
- title { Faker::Company.bs }
- description_markdown { Faker::Hipster.paragraph(sentence_count: 2) }
- starts_at { Time.current }
- ends_at { 3660.seconds.from_now }
- category { "AMA" }
- end
-end
diff --git a/spec/models/event_spec.rb b/spec/models/event_spec.rb
deleted file mode 100644
index 8be1ff50b..000000000
--- a/spec/models/event_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require "rails_helper"
-
-RSpec.describe Event, type: :model do
- let(:event) { build(:event) }
-
- it "rejects title with over 90 characters" do
- event.title = Faker::Lorem.characters(number: 100)
- expect(event).not_to be_valid
- end
-
- it "rejects invalid http url" do
- event.location_url = "dev.to"
- expect(event).not_to be_valid
- end
-
- it "rejects ends times that are earlier than start times" do
- event.ends_at = event.starts_at - 1.minute
- expect(event).not_to be_valid
- end
-
- it "creates slug for published events" do
- event = build(:event, category: "ama", title: "yo", published: true)
- event.validate!
- expected_slug = "#{event.category}-#{event.title}-#{event.starts_at.strftime('%m-%d-%Y')}"
- expect(event.slug).to eq(expected_slug)
- end
-
- it "triggers cache busting on save" do
- sidekiq_assert_enqueued_jobs(1, queue: "low_priority") do
- event.save
- end
- end
-end
diff --git a/spec/requests/admin/events_spec.rb b/spec/requests/admin/events_spec.rb
deleted file mode 100644
index ffca49c08..000000000
--- a/spec/requests/admin/events_spec.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-require "rails_helper"
-
-RSpec.describe "/admin/apps/events", type: :request do
- let(:event) { create(:event, title: "Hey") }
- let(:admin) { create(:user, :super_admin) }
- let(:params) do
- {
- event: {
- title: "Hello, world!",
- description_markdown: "This is an event",
- starts_at: Time.current,
- ends_at: 3660.seconds.from_now,
- category: "Talk"
- }
- }
- end
-
- describe "PUT admin/apps/events" do
- before do
- sign_in(admin)
- end
-
- it "marks an event as not live now" do
- event.update(live_now: true)
- patch admin_event_path(event.id), params: { event: { live_now: "0" } }
- expect(event.reload.live_now).to eq false
- end
-
- it "marks an event as live now" do
- patch admin_event_path(event.id), params: { event: { live_now: "1" } }
- expect(event.reload.live_now).to eq true
- end
-
- it "successfully updates the event title" do
- expect do
- patch admin_event_path(event.id), params: params
- end.to change { event.reload.title }.to("Hello, world!")
- end
- end
-
- describe "POST /admin/apps/events" do
- let(:post_resource) { post admin_events_path, params: params }
-
- before { sign_in admin }
-
- it "successfully creates an event" do
- expect do
- post_resource
- end.to change { Event.all.count }.by(1)
- end
- end
-end
diff --git a/spec/requests/events_spec.rb b/spec/requests/events_spec.rb
deleted file mode 100644
index a4342221f..000000000
--- a/spec/requests/events_spec.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require "rails_helper"
-
-RSpec.describe "Events", type: :request do
- let(:event) { create(:event, published: true) }
-
- describe "GET events" do
- it "returns index page" do
- event
- get "/events"
- expect(response.body).to include("#{community_name} EVENTS")
- expect(response.body).to include(event.title)
- end
-
- it "does not include unpublished events" do
- unpublished_event = create(:event, published: false)
- get "/events"
- expect(response.body).not_to include(unpublished_event.title)
- end
- end
-
- describe "GET events#show" do
- it "returns event show page" do
- get "/events/#{event.slug}"
- expect(response.body).to include event.title
- end
-
- it "renders not_found" do
- expect do
- get "/events/NotSlug-#{event.slug}"
- end.to raise_error(ActiveRecord::RecordNotFound)
- end
- end
-end
diff --git a/spec/services/edge_cache/bust_events_spec.rb b/spec/services/edge_cache/bust_events_spec.rb
deleted file mode 100644
index 0ad85e61e..000000000
--- a/spec/services/edge_cache/bust_events_spec.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require "rails_helper"
-
-RSpec.describe EdgeCache::BustEvents, type: :service do
- let(:cache_bust) { instance_double(EdgeCache::Bust) }
- let(:paths) do
- [
- "/events",
- "/events?i=i",
- ]
- end
-
- before do
- allow(EdgeCache::Bust).to receive(:new).and_return(cache_bust)
- paths.each do |path|
- allow(cache_bust).to receive(:call).with(path).once
- end
- end
-
- it "busts the cache" do
- described_class.call
-
- paths.each do |path|
- expect(cache_bust).to have_received(:call).with(path).once
- end
- end
-end
diff --git a/spec/system/admin/admin_creates_new_event_spec.rb b/spec/system/admin/admin_creates_new_event_spec.rb
deleted file mode 100644
index e4509d3c2..000000000
--- a/spec/system/admin/admin_creates_new_event_spec.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require "rails_helper"
-require "date"
-
-RSpec.describe "Admin creates new event", type: :system do
- let(:admin) { create(:user, :super_admin) }
-
- before do
- sign_in admin
- visit new_admin_event_path
- end
-
- def select_date_and_time(year, month, date, hour, min, field_name)
- select year, from: "event[#{field_name}(1i)]"
- select month, from: "event[#{field_name}(2i)]"
- select date, from: "event[#{field_name}(3i)]"
- select hour, from: "event[#{field_name}(4i)]"
- select min, from: "event[#{field_name}(5i)]"
- end
-
- def create_and_publish_event
- fill_in("Title", with: "Workshop Title")
- select_date_and_time(Time.current.year.to_s, "December", "30", "15", "30", "starts_at")
- select_date_and_time(Time.current.year.to_s, "December", "30", "16", "30", "ends_at")
- check("event[published]")
- click_button("Create Event")
- end
-
- it "loads /admin/apps/events" do
- expect(page).to have_content("New Event")
- end
-
- it "loads published events on /events" do
- create_and_publish_event
- visit "/events"
-
- expect(page).to have_content("Workshop Title")
- end
-end
diff --git a/spec/uploaders/cover_image_uploader_spec.rb b/spec/uploaders/cover_image_uploader_spec.rb
deleted file mode 100644
index 24086525c..000000000
--- a/spec/uploaders/cover_image_uploader_spec.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-require "rails_helper"
-require "carrierwave/test/matchers"
-require "exifr/jpeg"
-
-describe CoverImageUploader, type: :uploader do
- include CarrierWave::Test::Matchers
-
- let(:image_jpg) { fixture_file_upload("800x600.jpg", "image/jpeg") }
- let(:image_png) { fixture_file_upload("800x600.png", "image/png") }
- let(:image_webp) { fixture_file_upload("800x600.webp", "image/webp") }
- let(:image_with_gps) { fixture_file_upload("image_gps_data.jpg", "image/jpeg") }
-
- let(:event) { create(:event) }
-
- # we need a new uploader before each test, and since the uploader is not a model
- # we can recreate it quickly in memory with `let!`
- let!(:uploader) { described_class.new(event, :cover_image) }
-
- before do
- described_class.include CarrierWave::MiniMagick # needed for processing
- described_class.enable_processing = true
- end
-
- after do
- described_class.enable_processing = false
- uploader.remove!
- end
-
- it "stores files in the correct directory" do
- expect(uploader.store_dir).to eq("uploads/event/cover_image/#{event.id}")
- end
-
- describe "formats" do
- it "permits a set of extensions" do
- expect(uploader.extension_allowlist).to eq(%w[jpg jpeg jpe gif png ico bmp dng])
- end
-
- it "permits jpegs" do
- uploader.store!(image_jpg)
- expect(uploader).to be_format("jpeg")
- end
-
- it "permits pngs" do
- uploader.store!(image_png)
- expect(uploader).to be_format("png")
- end
-
- it "rejects unsupported formats like webp" do
- expect { uploader.store!(image_webp) }.to raise_error(CarrierWave::IntegrityError)
- end
- end
-
- describe "exif removal" do
- it "removes EXIF and GPS data on upload" do
- expect(EXIFR::JPEG.new(image_with_gps.path).exif?).to be(true)
- expect(EXIFR::JPEG.new(image_with_gps.path).gps.present?).to be(true)
- event.cover_image = image_with_gps
- event.save!
- expect(EXIFR::JPEG.new(event.cover_image.path).exif?).to be(false)
- expect(EXIFR::JPEG.new(event.cover_image.path).gps.present?).to be(false)
- end
- end
-end
diff --git a/spec/workers/events/bust_cache_worker_spec.rb b/spec/workers/events/bust_cache_worker_spec.rb
deleted file mode 100644
index 2e1363dac..000000000
--- a/spec/workers/events/bust_cache_worker_spec.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require "rails_helper"
-
-RSpec.describe Events::BustCacheWorker do
- include_examples "#enqueues_on_correct_queue", "low_priority"
-
- describe "#perform" do
- it "busts cache" do
- allow(EdgeCache::BustEvents).to receive(:call)
- described_class.new.perform
- expect(EdgeCache::BustEvents).to have_received(:call)
- end
- end
-end