29 lines
616 B
Ruby
29 lines
616 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Snippets
|
||
|
class UpdateStatisticsService
|
||
|
attr_reader :snippet
|
||
|
|
||
|
def initialize(snippet)
|
||
|
@snippet = snippet
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
unless snippet.repository_exists?
|
||
|
return ServiceResponse.error(message: 'Invalid snippet repository', http_status: 400)
|
||
|
end
|
||
|
|
||
|
snippet.repository.expire_statistics_caches
|
||
|
statistics.refresh!
|
||
|
|
||
|
ServiceResponse.success(message: 'Snippet statistics successfully updated.')
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def statistics
|
||
|
@statistics ||= snippet.statistics || snippet.build_statistics
|
||
|
end
|
||
|
end
|
||
|
end
|