Class: OdataDuty::OAS2::IndividualPatchPath

Inherits:
Object
  • Object
show all
Defined in:
lib/odata_duty/oas2/individual_patch_path.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entity_set) ⇒ IndividualPatchPath

Returns a new instance of IndividualPatchPath.



22
23
24
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 22

def initialize(entity_set)
  @entity_set = entity_set
end

Class Method Details

.request_body_definition(entity_set) ⇒ Object



15
16
17
18
19
20
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 15

def self.request_body_definition(entity_set)
  writable = entity_set.entity_type.properties.select(&:settable_on_update?)
  definition = { 'type' => 'object',
                 'properties' => writable.to_h { |p| [p.name.to_s, p.to_oas2] } }
  ["#{entity_set.entity_type.name}Update", definition]
end

.to_oas2(entity_set) ⇒ Object



4
5
6
7
8
9
10
11
12
13
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 4

def self.to_oas2(entity_set)
  path_info = new(entity_set)
  {
    'operationId' => path_info.operation_id
  }.merge(path_info.summary_and_description).merge(
    'produces' => path_info.produces,
    'parameters' => path_info.parameters,
    'responses' => path_info.responses
  )
end

Instance Method Details

#operation_idObject



26
27
28
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 26

def operation_id
  "Update#{@entity_set.name}"
end

#parametersObject



41
42
43
44
45
46
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 41

def parameters
  [
    { 'name' => 'id', 'in' => 'path', 'required' => true, 'type' => id_type },
    { 'name' => 'body', 'in' => 'body', 'required' => true, 'schema' => update_schema }
  ]
end

#producesObject



37
38
39
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 37

def produces
  ['application/json']
end

#responsesObject



48
49
50
51
52
53
54
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 48

def responses
  {
    '200' => { 'description' => 'Success', 'schema' => entity_type_schema },
    'default' => { 'description' => 'Unexpected error',
                   'schema' => { '$ref' => '#/definitions/Error' } }
  }
end

#summary_and_descriptionObject



30
31
32
33
34
35
# File 'lib/odata_duty/oas2/individual_patch_path.rb', line 30

def summary_and_description
  return {} unless @entity_set.description

  { 'summary' => OperationVerbs.update(@entity_set.name),
    'description' => @entity_set.description }
end