From ca5b8935e836e1b34c100f21978d979c6380f9a1 Mon Sep 17 00:00:00 2001 From: Martin Dolores Date: Mon, 24 Mar 2025 18:44:02 +1100 Subject: [PATCH 1/4] - Create 'tutor_times' table and 'TutorTime' model --- app/models/tutor_time.rb | 12 ++++++++++++ db/migrate/20250324073540_create_tutor_times.rb | 10 ++++++++++ db/schema.rb | 14 +++++++++++++- 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 app/models/tutor_time.rb create mode 100644 db/migrate/20250324073540_create_tutor_times.rb diff --git a/app/models/tutor_time.rb b/app/models/tutor_time.rb new file mode 100644 index 0000000000..160391cb05 --- /dev/null +++ b/app/models/tutor_time.rb @@ -0,0 +1,12 @@ +class TutorTime < ApplicationRecord + belongs_to :user + belongs_to :task + + validates :user_id, presence: true + validates :task_id, presence: true + validates :time_spent, presence: true, numericality: { greater_than_or_equal_to: 0 } + + def time_spent_in_hours + time_spent.to_f / 60 + end +end diff --git a/db/migrate/20250324073540_create_tutor_times.rb b/db/migrate/20250324073540_create_tutor_times.rb new file mode 100644 index 0000000000..e67a9177e3 --- /dev/null +++ b/db/migrate/20250324073540_create_tutor_times.rb @@ -0,0 +1,10 @@ +class CreateTutorTimes < ActiveRecord::Migration[7.1] + def change + create_table :tutor_times do |t| + t.references :user, null: false, foreign_key: true # Links to users table + t.references :task, null: false, foreign_key: true # Links to tasks table + t.integer :time_spent, null: false, default: 0 # Time spent in minutes + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 6daa71ebf1..9a7f1a1362 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[7.1].define(version: 2024_05_28_223908) do +ActiveRecord::Schema[7.1].define(version: 2025_03_24_073540) do create_table "activity_types", charset: "utf8", collation: "utf8_unicode_ci", force: :cascade do |t| t.string "name", null: false t.string "abbreviation", null: false @@ -394,6 +394,16 @@ t.index ["tii_task_similarity_id"], name: "index_tii_submissions_on_tii_task_similarity_id" end + create_table "tutor_times", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| + t.bigint "user_id", null: false + t.bigint "task_id", null: false + t.integer "time_spent", default: 0, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["task_id"], name: "index_tutor_times_on_task_id" + t.index ["user_id"], name: "index_tutor_times_on_user_id" + end + create_table "tutorial_enrolments", charset: "utf8", collation: "utf8_unicode_ci", force: :cascade do |t| t.datetime "created_at", null: false t.datetime "updated_at", null: false @@ -531,4 +541,6 @@ t.index ["user_id"], name: "index_webcals_on_user_id", unique: true end + add_foreign_key "tutor_times", "tasks" + add_foreign_key "tutor_times", "users" end From 36a44e7fbcca101d59aee3efd1985c8488e08b17 Mon Sep 17 00:00:00 2001 From: Martin Dolores Date: Mon, 24 Mar 2025 18:49:08 +1100 Subject: [PATCH 2/4] - remove unnecessary comment from migration --- db/migrate/20250324073540_create_tutor_times.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/db/migrate/20250324073540_create_tutor_times.rb b/db/migrate/20250324073540_create_tutor_times.rb index e67a9177e3..57e389ed65 100644 --- a/db/migrate/20250324073540_create_tutor_times.rb +++ b/db/migrate/20250324073540_create_tutor_times.rb @@ -1,9 +1,9 @@ class CreateTutorTimes < ActiveRecord::Migration[7.1] def change create_table :tutor_times do |t| - t.references :user, null: false, foreign_key: true # Links to users table - t.references :task, null: false, foreign_key: true # Links to tasks table - t.integer :time_spent, null: false, default: 0 # Time spent in minutes + t.references :user, null: false, foreign_key: true + t.references :task, null: false, foreign_key: true + t.integer :time_spent, null: false, default: 0 t.timestamps end end From 10617e250f807ebebd7373c2582f8f61da050a91 Mon Sep 17 00:00:00 2001 From: Martin Dolores Date: Tue, 25 Mar 2025 02:33:00 +1100 Subject: [PATCH 3/4] - add suggested changes to convert time_spent to decimal type --- app/models/tutor_time.rb | 4 ++-- db/migrate/20250324073540_create_tutor_times.rb | 2 +- db/schema.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/models/tutor_time.rb b/app/models/tutor_time.rb index 160391cb05..81b7151e59 100644 --- a/app/models/tutor_time.rb +++ b/app/models/tutor_time.rb @@ -4,9 +4,9 @@ class TutorTime < ApplicationRecord validates :user_id, presence: true validates :task_id, presence: true - validates :time_spent, presence: true, numericality: { greater_than_or_equal_to: 0 } + validates :time_spent, presence: true, numericality: { greater_than_or_equal_to: 0.0 } def time_spent_in_hours - time_spent.to_f / 60 + (time_spent.to_f / 60.0).round(2) end end diff --git a/db/migrate/20250324073540_create_tutor_times.rb b/db/migrate/20250324073540_create_tutor_times.rb index 57e389ed65..9d67977345 100644 --- a/db/migrate/20250324073540_create_tutor_times.rb +++ b/db/migrate/20250324073540_create_tutor_times.rb @@ -3,7 +3,7 @@ def change create_table :tutor_times do |t| t.references :user, null: false, foreign_key: true t.references :task, null: false, foreign_key: true - t.integer :time_spent, null: false, default: 0 + t.decimal :time_spent, precision: 10, scale: 2, null: false, default: 0.0 t.timestamps end end diff --git a/db/schema.rb b/db/schema.rb index 9a7f1a1362..3118d57d05 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -397,7 +397,7 @@ create_table "tutor_times", charset: "utf8mb4", collation: "utf8mb4_general_ci", force: :cascade do |t| t.bigint "user_id", null: false t.bigint "task_id", null: false - t.integer "time_spent", default: 0, null: false + t.decimal "time_spent", precision: 10, scale: 2, default: "0.0", null: false t.datetime "created_at", null: false t.datetime "updated_at", null: false t.index ["task_id"], name: "index_tutor_times_on_task_id" From 844065c2be72744e20973c2da9f74486a92627cb Mon Sep 17 00:00:00 2001 From: Martin Dolores Date: Sun, 6 Apr 2025 14:59:38 +1000 Subject: [PATCH 4/4] - change to delete on cascade --- db/migrate/20250324073540_create_tutor_times.rb | 4 ++-- db/schema.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/db/migrate/20250324073540_create_tutor_times.rb b/db/migrate/20250324073540_create_tutor_times.rb index 9d67977345..eb0bd81558 100644 --- a/db/migrate/20250324073540_create_tutor_times.rb +++ b/db/migrate/20250324073540_create_tutor_times.rb @@ -1,8 +1,8 @@ class CreateTutorTimes < ActiveRecord::Migration[7.1] def change create_table :tutor_times do |t| - t.references :user, null: false, foreign_key: true - t.references :task, null: false, foreign_key: true + t.references :user, null: false, foreign_key: { on_delete: :cascade } + t.references :task, null: false, foreign_key: { on_delete: :cascade } t.decimal :time_spent, precision: 10, scale: 2, null: false, default: 0.0 t.timestamps end diff --git a/db/schema.rb b/db/schema.rb index 3118d57d05..ab31d55533 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -541,6 +541,6 @@ t.index ["user_id"], name: "index_webcals_on_user_id", unique: true end - add_foreign_key "tutor_times", "tasks" - add_foreign_key "tutor_times", "users" + add_foreign_key "tutor_times", "tasks", on_delete: :cascade + add_foreign_key "tutor_times", "users", on_delete: :cascade end