Skip to content

Commit

Permalink
CV2-5154: remove medias_count from project (#2017)
Browse files Browse the repository at this point in the history
* CV2-5154: remove medias_count from project

* CV2-5154: remove medias_count from ProjectGroup

* CV2-5154: fix tests
  • Loading branch information
melsawy authored Sep 3, 2024
1 parent 325944d commit 62dbb95
Show file tree
Hide file tree
Showing 13 changed files with 1 addition and 168 deletions.
1 change: 0 additions & 1 deletion app/graph/types/project_group_type.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ class ProjectGroupType < DefaultObject
field :description, GraphQL::Types::String, null: true
field :team_id, GraphQL::Types::Int, null: true
field :team, PublicTeamType, null: true
field :medias_count, GraphQL::Types::Int, null: true

field :projects, ProjectType.connection_type, null: true
end
1 change: 0 additions & 1 deletion app/graph/types/project_type.rb
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ class ProjectType < DefaultObject
field :dbid, GraphQL::Types::Int, null: true
field :permissions, GraphQL::Types::String, null: true
field :pusher_channel, GraphQL::Types::String, null: true
field :medias_count, GraphQL::Types::Int, null: true
field :search_id, GraphQL::Types::String, null: true
field :url, GraphQL::Types::String, null: true
field :search, CheckSearchType, null: true
Expand Down
35 changes: 0 additions & 35 deletions app/models/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -40,41 +40,6 @@ class Project < ApplicationRecord

check_settings

cached_field :medias_count,
start_as: 0,
recalculate: :recalculate_medias_count,
update_on: [
{
model: Relationship,
affected_ids: proc { |r| ProjectMedia.where(id: r.target_id).map(&:project_id) },
events: {
save: :recalculate,
destroy: :recalculate
}
},
{
model: ProjectMedia,
if: proc { |pm| !pm.project_id.nil? },
affected_ids: proc { |pm| [pm.project_id] },
events: {
create: :recalculate,
destroy: :recalculate
}
},
{
model: ProjectMedia,
if: proc { |pm| pm.saved_change_to_archived? || pm.saved_change_to_project_id? },
affected_ids: proc { |pm| [pm.project_id, pm.project_id_before_last_save] },
events: {
update: :recalculate,
}
},
]

def recalculate_medias_count
self.team.medias_count(self)
end

def check_search_team
self.team.check_search_team
end
Expand Down
4 changes: 0 additions & 4 deletions app/models/project_group.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ class ProjectGroup < ApplicationRecord
belongs_to :team, optional: true
has_many :projects, dependent: :nullify

def medias_count
self.projects.map(&:medias_count).sum
end

def project_medias
ProjectMedia.joins(:project).where('projects.project_group_id' => self.id)
end
Expand Down
2 changes: 0 additions & 2 deletions lib/relay.idl
Original file line number Diff line number Diff line change
Expand Up @@ -10495,7 +10495,6 @@ type Project implements Node {
description: String
id: ID!
is_default: Boolean
medias_count: Int
permissions: String
privacy: Int
project_group: ProjectGroup
Expand Down Expand Up @@ -10574,7 +10573,6 @@ type ProjectGroup implements Node {
dbid: Int
description: String
id: ID!
medias_count: Int
permissions: String
projects(
"""
Expand Down
28 changes: 0 additions & 28 deletions public/relay.json
Original file line number Diff line number Diff line change
Expand Up @@ -56720,20 +56720,6 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "medias_count",
"description": null,
"args": [

],
"type": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "permissions",
"description": null,
Expand Down Expand Up @@ -57156,20 +57142,6 @@
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "medias_count",
"description": null,
"args": [

],
"type": {
"kind": "SCALAR",
"name": "Int",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "permissions",
"description": null,
Expand Down
13 changes: 0 additions & 13 deletions test/controllers/graphql_controller_4_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ def teardown

test "should bulk-send project medias to trash" do
@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::NONE, pm.archived }
@ps.each { |p| assert_equal 1, p.reload.medias_count }
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_equal 0, CheckPusher::Worker.jobs.size
Expand All @@ -57,7 +56,6 @@ def teardown
assert_response :success

@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::TRASHED, pm.reload.archived }
@ps.each { |p| assert_equal 0, p.reload.medias_count }
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_equal 1, CheckPusher::Worker.jobs.size
Expand Down Expand Up @@ -90,7 +88,6 @@ def teardown
Sidekiq::Worker.drain_all
sleep 1
@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::TRASHED, pm.reload.archived }
@ps.each { |p| assert_equal 0, p.reload.medias_count }
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_equal 0, CheckPusher::Worker.jobs.size
Expand All @@ -100,7 +97,6 @@ def teardown
assert_response :success

@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::NONE, pm.reload.archived }
@ps.each { |p| assert_equal 1, p.reload.medias_count }
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_equal 1, CheckPusher::Worker.jobs.size
Expand All @@ -113,7 +109,6 @@ def teardown
Sidekiq::Worker.drain_all
sleep 1
@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::TRASHED, pm.reload.archived }
@ps.each { |p| assert_equal 0, p.reload.medias_count }
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_equal 0, CheckPusher::Worker.jobs.size
Expand All @@ -123,8 +118,6 @@ def teardown
assert_response :success

@pms.each { |pm| assert_equal CheckArchivedFlags::FlagCodes::NONE, pm.reload.archived }
@ps.each { |p| assert_equal 0, p.reload.medias_count }
assert_equal @pms.length, add_to.reload.medias_count
assert_search_finds_all({ archived: CheckArchivedFlags::FlagCodes::NONE })
assert_search_finds_none({ archived: CheckArchivedFlags::FlagCodes::TRASHED })
assert_equal 2, CheckPusher::Worker.jobs.size
Expand Down Expand Up @@ -291,17 +284,11 @@ def teardown
invalid_id_1 = Base64.encode64("ProjectMedia/0")
invalid_id_2 = Base64.encode64("Project/#{pm1.id}")
invalid_id_3 = random_string
assert_equal 4, @p1.reload.medias_count
assert_equal 2, @p2.reload.medias_count
assert_equal 0, p4.reload.medias_count
ids = []
[@pm1.graphql_id, @pm2.graphql_id, pm1.graphql_id, pm2.graphql_id, invalid_id_1, invalid_id_2, invalid_id_3].each { |id| ids << id }
query = 'mutation { updateProjectMedias(input: { clientMutationId: "1", ids: ' + ids.to_json + ', action: "move_to", params: "{\"move_to\": \"' + p4.id.to_s + '\"}" }) { team { dbid } } }'
post :create, params: { query: query, team: @t.slug }
assert_response :success
assert_equal 0, @p1.reload.medias_count
assert_equal 0, @p2.reload.medias_count
assert_equal 6, p4.reload.medias_count
# verify move similar items
assert_equal p4.id, t_pm1.reload.project_id
assert_equal p4.id, t2_pm1.reload.project_id
Expand Down
2 changes: 1 addition & 1 deletion test/controllers/graphql_controller_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ def setup
p = create_project team: t
pm = create_project_media project: p
create_comment annotated: pm, annotator: u
query = "query GetById { project(id: \"#{p.id}\") { medias_count, project_medias(first: 1) { edges { node { permissions } } } } }"
query = "query GetById { project(id: \"#{p.id}\") { project_medias(first: 1) { edges { node { permissions } } } } }"
post :create, params: { query: query, team: 'team' }
assert_response :success
assert_not_equal '{}', JSON.parse(@response.body)['data']['project']['project_medias']['edges'][0]['node']['permissions']
Expand Down
22 changes: 0 additions & 22 deletions test/models/project_group_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,28 +36,6 @@ def setup
assert_equal [pg], t.reload.project_groups
end

test "should have medias count" do
RequestStore.store[:skip_cached_field_update] = false
t = create_team
pg = create_project_group team: t
assert_equal 0, pg.medias_count
p1 = create_project team: t
p1.project_group = pg
p1.save!
assert_equal 0, p1.medias_count
create_project_media project: p1
assert_equal 1, p1.medias_count
create_project_media project: p1
assert_equal 2, p1.medias_count
p2 = create_project team: t
p2.project_group = pg
p2.save!
assert_equal 0, p2.medias_count
create_project_media project: p2
assert_equal 1, p2.medias_count
assert_equal 3, pg.reload.medias_count
end

test "should have project medias" do
t = create_team
pg = create_project_group team: t
Expand Down
41 changes: 0 additions & 41 deletions test/models/project_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -121,14 +121,6 @@ def setup
assert_equal [m1, m2].sort, p.reload.project_medias.map(&:media).sort
end

test "should get project medias count" do
t = create_team
p = create_project team: t
create_project_media project: p
create_project_media project: p
assert_equal 2, p.medias_count
end

test "should have annotations" do
pm = create_project_media
c1 = create_comment annotated: nil
Expand Down Expand Up @@ -550,42 +542,11 @@ def setup
end
end

test "should not include trashed items in medias count" do
p = create_project
create_project_media project: p
create_project_media project: p
create_project_media project: p, archived: CheckArchivedFlags::FlagCodes::TRASHED
assert_equal 2, p.reload.medias_count
end

test "should have search team" do
assert_kind_of CheckSearch, create_project.check_search_team
assert_kind_of Array, create_project.check_search_team.projects
end

test "should cache medias_count" do
RequestStore.store[:skip_cached_field_update] = false
t = create_team
p = create_project team: t
pm1 = create_project_media team: t, project: nil
pm2 = create_project_media team: t, project: nil
pm3 = create_project_media team: t, project: nil
assert_equal 0, p.reload.medias_count
pm1.project_id = p.id; pm1.save!
assert_equal 1, p.reload.medias_count
pm2.project_id = p.id; pm2.save!
assert_equal 2, p.reload.medias_count
pm3.project_id = p.id; pm3.save!
assert_equal 3, p.reload.medias_count
pm3.destroy!
assert_equal 2, p.reload.medias_count
assert_equal 0, pm2.reload.sources_count
r = create_relationship source_id: pm1.id, target_id: pm2.id, relationship_type: Relationship.confirmed_type
assert_equal 1, pm2.reload.sources_count
assert_equal 1, p.reload.medias_count
RequestStore.store[:skip_cached_field_update] = true
end

test "should have a project group" do
t = create_team
p = create_project team: t
Expand Down Expand Up @@ -657,8 +618,6 @@ def setup
p2.items_destination_project_id = p3.id
p2.destroy
assert_equal [pm3.id, pm4.id], p3.reload.project_media_ids.sort
# assert_equal p3.title, pm3.folder
assert_equal 2, p3.medias_count
end
end
RequestStore.store[:skip_cached_field_update] = true
Expand Down
4 changes: 0 additions & 4 deletions test/models/relationship_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,9 @@ def setup
pm2 = create_project_media team: t, project: p2
assert_equal p1, pm1.reload.project
assert_equal p2, pm2.reload.project
assert_equal 1, p1.reload.medias_count
assert_equal 1, p2.reload.medias_count
r = create_relationship relationship_type: Relationship.confirmed_type, source_id: pm1.id, target_id: pm2.id
assert_equal p1, pm1.reload.project
assert_equal p1, pm2.reload.project
assert_equal 1, p1.reload.medias_count
assert_equal 0, p2.reload.medias_count
end

test "should create relationship between items with same media" do
Expand Down
4 changes: 0 additions & 4 deletions test/models/team_2_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1117,16 +1117,12 @@ def setup
t.rules = rules.to_json
t.save!
pm1 = create_project_media project: p0, disable_es_callbacks: false
assert_equal 1, p0.reload.medias_count
assert_equal 0, p1.reload.medias_count
s = pm1.last_status_obj
s.status = 'in_progress'
s.save!
sleep 2
result = $repository.find(get_es_id(pm1))
assert_equal p1.id, result['project_id']
assert_equal 0, p0.reload.medias_count
assert_equal 1, p1.reload.medias_count
pm2 = create_project_media project: p0, disable_es_callbacks: false
sleep 2
assert_equal p1.id, pm1.reload.project_id
Expand Down
Loading

0 comments on commit 62dbb95

Please sign in to comment.