Class: Rubino::API::Operations::Sessions::CreateOperation

Inherits:
Object
  • Object
show all
Defined in:
lib/rubino/api/operations/sessions/create_operation.rb

Overview

POST /v1/sessions Creates a session row (source=“api”) and returns its serialized form.

Returns:

  • ([Integer, Hash])

    201 + session payload.

Raises:

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository: nil) ⇒ CreateOperation

Accepts an alternate repository for tests.



18
19
20
# File 'lib/rubino/api/operations/sessions/create_operation.rb', line 18

def initialize(repository: nil)
  @repository = repository || ::Rubino::Session::Repository.new
end

Class Method Details

.call(request) ⇒ Object



13
14
15
# File 'lib/rubino/api/operations/sessions/create_operation.rb', line 13

def self.call(request)
  new.call(request)
end

Instance Method Details

#call(request) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/rubino/api/operations/sessions/create_operation.rb', line 22

def call(request)
  attrs = request.validate!(Schemas::CreateSession)
  session = @repository.create(
    source: "api",
    title: attrs[:title],
    parent_session_id: attrs[:parent_id]
  )
  [201, serialize(session)]
end