From 3540fa75f7b49214511a9fe9136f9ab28e78a459 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Fri, 6 Oct 2023 22:09:38 +0100 Subject: [PATCH] Remove attendances model --- .../admin/attendances_controller.rb | 46 ------------- app/dashboards/attendance_dashboard.rb | 69 ------------------- app/models/attendance.rb | 13 ---- app/models/lecture.rb | 1 - config/routes.rb | 1 - .../20231006210710_delete_attendances.rb | 5 ++ db/schema.rb | 13 +--- 7 files changed, 6 insertions(+), 142 deletions(-) delete mode 100644 app/controllers/admin/attendances_controller.rb delete mode 100644 app/dashboards/attendance_dashboard.rb delete mode 100644 app/models/attendance.rb create mode 100644 db/migrate/20231006210710_delete_attendances.rb diff --git a/app/controllers/admin/attendances_controller.rb b/app/controllers/admin/attendances_controller.rb deleted file mode 100644 index 987e805..0000000 --- a/app/controllers/admin/attendances_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -module Admin - class AttendancesController < Admin::ApplicationController - # Overwrite any of the RESTful controller actions to implement custom behavior - # For example, you may want to send an email after a foo is updated. - # - # def update - # super - # send_foo_updated_email(requested_resource) - # end - - # Override this method to specify custom lookup behavior. - # This will be used to set the resource for the `show`, `edit`, and `update` - # actions. - # - # def find_resource(param) - # Foo.find_by!(slug: param) - # end - - # The result of this lookup will be available as `requested_resource` - - # Override this if you have certain roles that require a subset - # this will be used to set the records shown on the `index` action. - # - # def scoped_resource - # if current_user.super_admin? - # resource_class - # else - # resource_class.with_less_stuff - # end - # end - - # Override `resource_params` if you want to transform the submitted - # data before it's persisted. For example, the following would turn all - # empty values into nil values. It uses other APIs such as `resource_class` - # and `dashboard`: - # - # def resource_params - # params.require(resource_class.model_name.param_key). - # permit(dashboard.permitted_attributes(action_name)). - # transform_values { |value| value == "" ? nil : value } - # end - - # See https://administrate-demo.herokuapp.com/customizing_controller_actions - # for more information - end -end diff --git a/app/dashboards/attendance_dashboard.rb b/app/dashboards/attendance_dashboard.rb deleted file mode 100644 index b5a0d5b..0000000 --- a/app/dashboards/attendance_dashboard.rb +++ /dev/null @@ -1,69 +0,0 @@ -require "administrate/base_dashboard" - -class AttendanceDashboard < Administrate::BaseDashboard - # ATTRIBUTE_TYPES - # a hash that describes the type of each of the model's fields. - # - # Each different type represents an Administrate::Field object, - # which determines how the attribute is displayed - # on pages throughout the dashboard. - ATTRIBUTE_TYPES = { - id: Field::Number, - associated_toggl_entry: Field::String, - kind: Field::Select.with_options(searchable: false, collection: ->(field) { field.resource.class.send(field.attribute.to_s.pluralize).keys }), - lecture: Field::BelongsTo, - created_at: Field::DateTime, - updated_at: Field::DateTime, - }.freeze - - # COLLECTION_ATTRIBUTES - # an array of attributes that will be displayed on the model's index page. - # - # By default, it's limited to four items to reduce clutter on index pages. - # Feel free to add, remove, or rearrange items. - COLLECTION_ATTRIBUTES = %i[ - id - associated_toggl_entry - kind - lecture - ].freeze - - # SHOW_PAGE_ATTRIBUTES - # an array of attributes that will be displayed on the model's show page. - SHOW_PAGE_ATTRIBUTES = %i[ - id - associated_toggl_entry - kind - lecture - created_at - updated_at - ].freeze - - # FORM_ATTRIBUTES - # an array of attributes that will be displayed - # on the model's form (`new` and `edit`) pages. - FORM_ATTRIBUTES = %i[ - associated_toggl_entry - kind - lecture - ].freeze - - # COLLECTION_FILTERS - # a hash that defines filters that can be used while searching via the search - # field of the dashboard. - # - # For example to add an option to search for open resources by typing "open:" - # in the search field: - # - # COLLECTION_FILTERS = { - # open: ->(resources) { resources.where(open: true) } - # }.freeze - COLLECTION_FILTERS = {}.freeze - - # Overwrite this method to customize how attendances are displayed - # across all pages of the admin dashboard. - # - # def display_resource(attendance) - # "Attendance ##{attendance.id}" - # end -end diff --git a/app/models/attendance.rb b/app/models/attendance.rb deleted file mode 100644 index c7647af..0000000 --- a/app/models/attendance.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Attendance < ApplicationRecord - belongs_to :lecture - - enum :kind, [ - :concurrent, - :catchup - ] - - def duration - toggl_data['time_entries'].sum { |entry| entry['seconds'] } - .seconds - end -end diff --git a/app/models/lecture.rb b/app/models/lecture.rb index 940e76b..f761a67 100644 --- a/app/models/lecture.rb +++ b/app/models/lecture.rb @@ -1,6 +1,5 @@ class Lecture < ApplicationRecord belongs_to :course - has_one :attendance, dependent: :destroy has_one :recording, dependent: :nullify has_many :tracked_time_entries, dependent: :destroy diff --git a/config/routes.rb b/config/routes.rb index 9acf507..95684f2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,5 @@ Rails.application.routes.draw do namespace :admin do - resources :attendances resources :courses resources :lectures resources :recordings diff --git a/db/migrate/20231006210710_delete_attendances.rb b/db/migrate/20231006210710_delete_attendances.rb new file mode 100644 index 0000000..3262f74 --- /dev/null +++ b/db/migrate/20231006210710_delete_attendances.rb @@ -0,0 +1,5 @@ +class DeleteAttendances < ActiveRecord::Migration[7.1] + def change + drop_table :attendances + end +end diff --git a/db/schema.rb b/db/schema.rb index 3c0a158..1fe7db4 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,20 +10,10 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2023_10_06_204103) do +ActiveRecord::Schema[7.1].define(version: 2023_10_06_210710) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" - create_table "attendances", force: :cascade do |t| - t.bigint "lecture_id", null: false - t.string "associated_toggl_entry" - t.integer "kind" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false - t.jsonb "toggl_data" - t.index ["lecture_id"], name: "index_attendances_on_lecture_id" - end - create_table "courses", force: :cascade do |t| t.string "title" t.string "unit_code" @@ -70,7 +60,6 @@ ActiveRecord::Schema[7.1].define(version: 2023_10_06_204103) do t.index ["lecture_id"], name: "index_tracked_time_entries_on_lecture_id" end - add_foreign_key "attendances", "lectures" add_foreign_key "recordings", "courses" add_foreign_key "tracked_time_entries", "lectures" end