retrospring/lib/use_case/question/create_followers.rb
Georg Gadinger 9413d23a02 let Zeitwerk autoload the lib/ directory
this also allows the UseCase classes to be hot reloaded in dev 🎉

- remove use_case requires (except for the exporter as Zeitwerk
  doesn't know about the subclasses)
- move version.rb to lib/retrospring so that Zeitwerk knows where
  to find Retrospring::Version
2022-12-29 20:57:28 +01:00

40 lines
962 B
Ruby

# frozen_string_literal: true
module UseCase
module Question
class CreateFollowers < UseCase::Base
option :source_user_id, type: Types::Coercible::Integer
option :content, type: Types::Coercible::String
option :author_identifier, type: Types::Coercible::String | Types::Nil
def call
question = ::Question.create!(
content: content,
author_is_anonymous: false,
author_identifier: author_identifier,
user: source_user,
direct: false
)
increment_asked_count
QuestionWorker.perform_async(source_user_id, question.id)
{
status: 201,
resource: question
}
end
private
def increment_asked_count
source_user.increment(:asked_count)
end
def source_user
@source_user ||= ::User.find(source_user_id)
end
end
end
end