From a2dfad331bc52b10253095da7c2f65ac7ca1ae90 Mon Sep 17 00:00:00 2001 From: Joshua Coles Date: Fri, 6 Oct 2023 21:09:28 +0100 Subject: [PATCH] Create TrackedTimeEntry as more general replacement of Attendance to include preparation and review --- app/models/lecture.rb | 2 ++ app/models/tracked_time_entry.rb | 13 +++++++++++++ .../20231006200812_create_tracked_time_entries.rb | 11 +++++++++++ test/fixtures/tracked_time_entries.yml | 11 +++++++++++ test/models/tracked_time_entry_test.rb | 7 +++++++ 5 files changed, 44 insertions(+) create mode 100644 app/models/tracked_time_entry.rb create mode 100644 db/migrate/20231006200812_create_tracked_time_entries.rb create mode 100644 test/fixtures/tracked_time_entries.yml create mode 100644 test/models/tracked_time_entry_test.rb diff --git a/app/models/lecture.rb b/app/models/lecture.rb index e31b27d..dc0a50d 100644 --- a/app/models/lecture.rb +++ b/app/models/lecture.rb @@ -3,6 +3,8 @@ class Lecture < ApplicationRecord has_one :attendance, dependent: :destroy has_one :recording, dependent: :nullify + has_many :tracked_time_entries, dependent: :destroy + enum :kind, [ :lecture, :problems_class, diff --git a/app/models/tracked_time_entry.rb b/app/models/tracked_time_entry.rb new file mode 100644 index 0000000..7086d80 --- /dev/null +++ b/app/models/tracked_time_entry.rb @@ -0,0 +1,13 @@ +class TrackedTimeEntry < ApplicationRecord + belongs_to :lecture + + enum :kind, [ + :concurrent, + :catchup + ] + + def duration + toggl_data['time_entries'].sum { |entry| entry['seconds'] } + .seconds + end +end diff --git a/db/migrate/20231006200812_create_tracked_time_entries.rb b/db/migrate/20231006200812_create_tracked_time_entries.rb new file mode 100644 index 0000000..d92c73e --- /dev/null +++ b/db/migrate/20231006200812_create_tracked_time_entries.rb @@ -0,0 +1,11 @@ +class CreateTrackedTimeEntries < ActiveRecord::Migration[7.1] + def change + create_table :tracked_time_entries do |t| + t.references :lecture, null: false, foreign_key: true + t.integer :kind + t.jsonb :toggl_data + + t.timestamps + end + end +end diff --git a/test/fixtures/tracked_time_entries.yml b/test/fixtures/tracked_time_entries.yml new file mode 100644 index 0000000..042738b --- /dev/null +++ b/test/fixtures/tracked_time_entries.yml @@ -0,0 +1,11 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + lecture: one + kind: 1 + toggl_data: + +two: + lecture: two + kind: 1 + toggl_data: diff --git a/test/models/tracked_time_entry_test.rb b/test/models/tracked_time_entry_test.rb new file mode 100644 index 0000000..0ea7131 --- /dev/null +++ b/test/models/tracked_time_entry_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class TrackedTimeEntryTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end