mirror of
https://github.com/mastodon/mastodon.git
synced 2024-12-22 23:20:44 +01:00
Change AccountRelationshipSeveranceEvent
model to store lost followers and following counts separately (#29714)
This commit is contained in:
parent
34f293475e
commit
dfa43707eb
7 changed files with 30 additions and 8 deletions
|
@ -35,7 +35,7 @@ const RelationshipsSeveranceEvent = ({ event, hidden }) => {
|
||||||
<FormattedMessage
|
<FormattedMessage
|
||||||
id='relationship_severance_notification.relationships'
|
id='relationship_severance_notification.relationships'
|
||||||
defaultMessage='{count, plural, one {# relationship} other {# relationships}}'
|
defaultMessage='{count, plural, one {# relationship} other {# relationships}}'
|
||||||
values={{ count: event.get('relationships_count', 0) }}
|
values={{ count: event.get('followers_count', 0) + event.get('following_count', 0) }}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<br />
|
<br />
|
||||||
|
|
|
@ -8,11 +8,16 @@
|
||||||
# id :bigint(8) not null, primary key
|
# id :bigint(8) not null, primary key
|
||||||
# account_id :bigint(8) not null
|
# account_id :bigint(8) not null
|
||||||
# relationship_severance_event_id :bigint(8) not null
|
# relationship_severance_event_id :bigint(8) not null
|
||||||
# relationships_count :integer default(0), not null
|
|
||||||
# created_at :datetime not null
|
# created_at :datetime not null
|
||||||
# updated_at :datetime not null
|
# updated_at :datetime not null
|
||||||
|
# followers_count :integer default(0), not null
|
||||||
|
# following_count :integer default(0), not null
|
||||||
#
|
#
|
||||||
class AccountRelationshipSeveranceEvent < ApplicationRecord
|
class AccountRelationshipSeveranceEvent < ApplicationRecord
|
||||||
|
self.ignored_columns += %w(
|
||||||
|
relationships_count
|
||||||
|
)
|
||||||
|
|
||||||
belongs_to :account
|
belongs_to :account
|
||||||
belongs_to :relationship_severance_event
|
belongs_to :relationship_severance_event
|
||||||
|
|
||||||
|
@ -30,6 +35,7 @@ class AccountRelationshipSeveranceEvent < ApplicationRecord
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_relationships_count!
|
def set_relationships_count!
|
||||||
self.relationships_count = severed_relationships.about_local_account(account).count
|
self.followers_count = severed_relationships.about_local_account(account).passive.count
|
||||||
|
self.following_count = severed_relationships.about_local_account(account).active.count
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
class REST::AccountRelationshipSeveranceEventSerializer < ActiveModel::Serializer
|
class REST::AccountRelationshipSeveranceEventSerializer < ActiveModel::Serializer
|
||||||
attributes :id, :type, :purged, :target_name, :created_at
|
attributes :id, :type, :purged, :target_name, :followers_count, :following_count, :created_at
|
||||||
|
|
||||||
def id
|
def id
|
||||||
object.id.to_s
|
object.id.to_s
|
||||||
|
|
|
@ -21,13 +21,13 @@
|
||||||
%td{ rowspan: 2 }= t('severed_relationships.purged')
|
%td{ rowspan: 2 }= t('severed_relationships.purged')
|
||||||
- else
|
- else
|
||||||
%td
|
%td
|
||||||
- count = event.severed_relationships.active.about_local_account(current_account).count
|
- count = event.following_count
|
||||||
- if count.zero?
|
- if count.zero?
|
||||||
= t('generic.none')
|
= t('generic.none')
|
||||||
- else
|
- else
|
||||||
= table_link_to 'download', t('severed_relationships.download', count: count), following_severed_relationship_path(event, format: :csv)
|
= table_link_to 'download', t('severed_relationships.download', count: count), following_severed_relationship_path(event, format: :csv)
|
||||||
%td
|
%td
|
||||||
- count = event.severed_relationships.passive.about_local_account(current_account).count
|
- count = event.followers_count
|
||||||
- if count.zero?
|
- if count.zero?
|
||||||
= t('generic.none')
|
= t('generic.none')
|
||||||
- else
|
- else
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class AddFollowersAndFollowingCountsToAccountRelationshipSeveranceEvents < ActiveRecord::Migration[7.1]
|
||||||
|
def change
|
||||||
|
add_column :account_relationship_severance_events, :followers_count, :integer, default: 0, null: false
|
||||||
|
add_column :account_relationship_severance_events, :following_count, :integer, default: 0, null: false
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class RemoveRelationshipsCountFromAccountRelationshipSeveranceEvents < ActiveRecord::Migration[7.1]
|
||||||
|
def change
|
||||||
|
safety_assured { remove_column :account_relationship_severance_events, :relationships_count, :integer, default: 0, null: false }
|
||||||
|
end
|
||||||
|
end
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do
|
ActiveRecord::Schema[7.1].define(version: 2024_03_22_130318) do
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
||||||
|
@ -93,9 +93,10 @@ ActiveRecord::Schema[7.1].define(version: 2024_03_21_160706) do
|
||||||
create_table "account_relationship_severance_events", force: :cascade do |t|
|
create_table "account_relationship_severance_events", force: :cascade do |t|
|
||||||
t.bigint "account_id", null: false
|
t.bigint "account_id", null: false
|
||||||
t.bigint "relationship_severance_event_id", null: false
|
t.bigint "relationship_severance_event_id", null: false
|
||||||
t.integer "relationships_count", default: 0, null: false
|
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
|
t.integer "followers_count", default: 0, null: false
|
||||||
|
t.integer "following_count", default: 0, null: false
|
||||||
t.index ["account_id", "relationship_severance_event_id"], name: "idx_on_account_id_relationship_severance_event_id_7bd82bf20e", unique: true
|
t.index ["account_id", "relationship_severance_event_id"], name: "idx_on_account_id_relationship_severance_event_id_7bd82bf20e", unique: true
|
||||||
t.index ["account_id"], name: "index_account_relationship_severance_events_on_account_id"
|
t.index ["account_id"], name: "index_account_relationship_severance_events_on_account_id"
|
||||||
t.index ["relationship_severance_event_id"], name: "idx_on_relationship_severance_event_id_403f53e707"
|
t.index ["relationship_severance_event_id"], name: "idx_on_relationship_severance_event_id_403f53e707"
|
||||||
|
|
Loading…
Reference in a new issue