dfdfa913ba
- Add two new ActiveRecord models: - RootNamespaceStoragestatistics will persist root namespace statistics - NamespaceAggregationSchedule will save information when a new update to the namespace statistics needs to be scheduled - Inject into UpdateProjectStatistics concern a new callback that will call an async job to insert a new row onto NamespaceAggregationSchedule table - When a new row is inserted a new job is scheduled. This job will update call an specific service to update the statistics and after that it will delete thee aggregated scheduled row - The RefresherServices makes heavy use of arel to build composable queries to update Namespace::RootStorageStatistics attributes. - Add an extra worker to traverse pending rows on NAmespace::AggregationSchedule table and schedule a worker for each one of this rows. - Add an extra worker to traverse pending rows on NAmespace::AggregationSchedule table and schedule a worker for each one of this rows
25 lines
762 B
Ruby
25 lines
762 B
Ruby
FactoryBot.define do
|
|
factory :project_statistics do
|
|
project
|
|
|
|
initialize_with do
|
|
# statistics are automatically created when a project is created
|
|
project&.statistics || new
|
|
end
|
|
|
|
transient do
|
|
with_data { false }
|
|
size_multiplier { 1 }
|
|
end
|
|
|
|
after(:build) do |project_statistics, evaluator|
|
|
if evaluator.with_data
|
|
project_statistics.repository_size = evaluator.size_multiplier
|
|
project_statistics.wiki_size = evaluator.size_multiplier * 2
|
|
project_statistics.lfs_objects_size = evaluator.size_multiplier * 3
|
|
project_statistics.build_artifacts_size = evaluator.size_multiplier * 4
|
|
project_statistics.packages_size = evaluator.size_multiplier * 5
|
|
end
|
|
end
|
|
end
|
|
end
|