36 lines
648 B
Ruby
36 lines
648 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module ResourceEvents
|
||
|
class BaseChangeTimeboxService
|
||
|
attr_reader :resource, :user, :event_created_at
|
||
|
|
||
|
def initialize(resource, user, created_at: Time.current)
|
||
|
@resource = resource
|
||
|
@user = user
|
||
|
@event_created_at = created_at
|
||
|
end
|
||
|
|
||
|
def execute
|
||
|
create_event
|
||
|
|
||
|
resource.expire_note_etag_cache
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def create_event
|
||
|
raise NotImplementedError
|
||
|
end
|
||
|
|
||
|
def build_resource_args
|
||
|
key = resource.class.name.foreign_key
|
||
|
|
||
|
{
|
||
|
user_id: user.id,
|
||
|
created_at: event_created_at,
|
||
|
key => resource.id
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
end
|