From c4537ebe1545a821bb8a7dc6bebde4c633ba348d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=AE=8F=E6=96=8C?= <1602586227@qq.com> Date: Wed, 7 Jun 2023 14:02:01 +0800 Subject: [PATCH 1/3] feat: Subscription support shows data collection time, and completion time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 魏宏斌 <1602586227@qq.com> --- app/graphql/types/subscription/subscription_type.rb | 4 +++- app/models/subject.rb | 2 ++ app/models/subscription.rb | 2 +- app/workers/subscriptions_update_worker.rb | 10 +++++++++- ...25539_add_collect_at_and_complete_at_to_subjects.rb | 6 ++++++ spec/models/subject_spec.rb | 2 ++ 6 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20230607025539_add_collect_at_and_complete_at_to_subjects.rb diff --git a/app/graphql/types/subscription/subscription_type.rb b/app/graphql/types/subscription/subscription_type.rb index 055746b2..414ddb48 100644 --- a/app/graphql/types/subscription/subscription_type.rb +++ b/app/graphql/types/subscription/subscription_type.rb @@ -8,7 +8,9 @@ class SubscriptionType < Types::BaseObject field :level, String, null: false field :status, String, null: false field :count, Integer, null: false - field :status_updated_at, GraphQL::Types::ISO8601DateTime, null: false + field :status_updated_at, GraphQL::Types::ISO8601DateTime, null: true + field :collect_at, GraphQL::Types::ISO8601DateTime, null: true + field :complete_at, GraphQL::Types::ISO8601DateTime, null: true end end end diff --git a/app/models/subject.rb b/app/models/subject.rb index 3249ed38..fd94dc18 100644 --- a/app/models/subject.rb +++ b/app/models/subject.rb @@ -10,6 +10,8 @@ # status_updated_at :datetime # created_at :datetime not null # updated_at :datetime not null +# collect_at :datetime +# complete_at :datetime # # Indexes # diff --git a/app/models/subscription.rb b/app/models/subscription.rb index 1b66e578..6a183010 100644 --- a/app/models/subscription.rb +++ b/app/models/subscription.rb @@ -15,7 +15,7 @@ class Subscription < ApplicationRecord belongs_to :user belongs_to :subject - delegate :label, :level, :status, :count, :status_updated_at, to: :subject, allow_nil: true + delegate :label, :level, :status, :count, :status_updated_at, :collect_at, :complete_at, to: :subject, allow_nil: true attr_accessor :skip_notify_subscription diff --git a/app/workers/subscriptions_update_worker.rb b/app/workers/subscriptions_update_worker.rb index 9ae7c384..7ddd38b5 100644 --- a/app/workers/subscriptions_update_worker.rb +++ b/app/workers/subscriptions_update_worker.rb @@ -25,7 +25,15 @@ def work(msg) count: count ) end - subject.status != status && subject.update!(status: status) + if subject.status != status + update_attributes = { status: status, status_updated_at: status_updated_at } + if subject.status == Subject::PROGRESS + update_attributes.merge!({ collect_at: status_updated_at }) + elsif subject.status == Subject::COMPLETE + update_attributes.merge!({ complete_at: status_updated_at }) + end + subject.update!(update_attributes) + end if subject.status == Subject::COMPLETE subject.subscriptions.includes(:user).each do |subscription| diff --git a/db/migrate/20230607025539_add_collect_at_and_complete_at_to_subjects.rb b/db/migrate/20230607025539_add_collect_at_and_complete_at_to_subjects.rb new file mode 100644 index 00000000..5c44797c --- /dev/null +++ b/db/migrate/20230607025539_add_collect_at_and_complete_at_to_subjects.rb @@ -0,0 +1,6 @@ +class AddCollectAtAndCompleteAtToSubjects < ActiveRecord::Migration[7.0] + def change + add_column :subjects, :collect_at, :datetime + add_column :subjects, :complete_at, :datetime + end +end diff --git a/spec/models/subject_spec.rb b/spec/models/subject_spec.rb index 5a40d4b4..af02469f 100644 --- a/spec/models/subject_spec.rb +++ b/spec/models/subject_spec.rb @@ -10,6 +10,8 @@ # status_updated_at :datetime # created_at :datetime not null # updated_at :datetime not null +# collect_at :datetime +# complete_at :datetime # # Indexes # From 18aef8a946f97896663fe08e985d5c2c7bf07cc0 Mon Sep 17 00:00:00 2001 From: EdmondFrank Date: Wed, 7 Jun 2023 14:54:25 +0800 Subject: [PATCH 2/3] Fix adjust the `status_updated_at` from local time zone to UTC time Signed-off-by: EdmondFrank --- app/services/analyze_group_server.rb | 2 +- app/services/analyze_server.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/analyze_group_server.rb b/app/services/analyze_group_server.rb index 9b291dc4..8c3154e5 100644 --- a/app/services/analyze_group_server.rb +++ b/app/services/analyze_group_server.rb @@ -176,7 +176,7 @@ def submit_task_status end count = repos_count - message = { label: @project_name, level: @level, status: Subject.task_status_converter(task_resp['status']), count: count, status_updated_at: DateTime.now.iso8601 } + message = { label: @project_name, level: @level, status: Subject.task_status_converter(task_resp['status']), count: count, status_updated_at: DateTime.now.utc.iso8601 } RabbitMQ.publish(SUBSCRIPTION_QUEUE, message) if count > 0 { status: task_resp['status'], message: I18n.t('analysis.task.pending') } diff --git a/app/services/analyze_server.rb b/app/services/analyze_server.rb index 14bf5611..5556e7e4 100644 --- a/app/services/analyze_server.rb +++ b/app/services/analyze_server.rb @@ -143,7 +143,7 @@ def submit_task_status ) end - message = { label: @repo_url, level: 'repo', status: Subject.task_status_converter(task_resp['status']), count: 1, status_updated_at: DateTime.now.iso8601 } + message = { label: @repo_url, level: 'repo', status: Subject.task_status_converter(task_resp['status']), count: 1, status_updated_at: DateTime.now.utc.iso8601 } RabbitMQ.publish(SUBSCRIPTION_QUEUE, message) { status: task_resp['status'], message: I18n.t('analysis.task.pending') } rescue => ex From 215558f027fd1cf300e84ddf154e71e53e400128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AD=8F=E5=AE=8F=E6=96=8C?= <1602586227@qq.com> Date: Wed, 7 Jun 2023 15:24:55 +0800 Subject: [PATCH 3/3] feat: Subscription support shows data collection time, and completion time MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 魏宏斌 <1602586227@qq.com> --- app/workers/subscriptions_update_worker.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/workers/subscriptions_update_worker.rb b/app/workers/subscriptions_update_worker.rb index 7ddd38b5..21022238 100644 --- a/app/workers/subscriptions_update_worker.rb +++ b/app/workers/subscriptions_update_worker.rb @@ -27,9 +27,9 @@ def work(msg) end if subject.status != status update_attributes = { status: status, status_updated_at: status_updated_at } - if subject.status == Subject::PROGRESS + if status == Subject::PROGRESS update_attributes.merge!({ collect_at: status_updated_at }) - elsif subject.status == Subject::COMPLETE + elsif status == Subject::COMPLETE update_attributes.merge!({ complete_at: status_updated_at }) end subject.update!(update_attributes)