Module: JsonapiSwaggerHelpers::Writeable
- Included in:
- CreateAction, DestroyAction, UpdateAction
- Defined in:
- lib/jsonapi_swagger_helpers/writeable.rb
Class Method Summary collapse
Instance Method Summary collapse
- #action_name ⇒ Object
- #all_tags ⇒ Object
- #context ⇒ Object
- #default_description ⇒ Object
- #define_schema ⇒ Object
- #each_strong_relation(strong_resource) ⇒ Object
- #generate ⇒ Object
- #generate_request_schema! ⇒ Object
- #initialize(node, controller, description: nil, tags: [], singular: false) ⇒ Object
- #operation_id ⇒ Object
- #payload_tags ⇒ Object
- #request_schema_id ⇒ Object
- #resource ⇒ Object
- #strong_resource ⇒ Object
- #util ⇒ Object
Class Method Details
.included(klass) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 5 def self.included(klass) klass.class_eval do attr_reader :node, :controller, :description, :tags, :singular end end |
Instance Method Details
#action_name ⇒ Object
36 37 38 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 36 def action_name raise 'override me' end |
#all_tags ⇒ Object
48 49 50 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 48 def + end |
#context ⇒ Object
62 63 64 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 62 def context JsonapiSwaggerHelpers.docs_controller end |
#default_description ⇒ Object
40 41 42 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 40 def default_description "#{action_name.to_s.capitalize} Action" end |
#define_schema ⇒ Object
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 100 def define_schema generate_request_schema! _self = self context.send(:swagger_schema, :"#{strong_resource.name}_#{action_name}") do _self.strong_resource.attributes.each_pair do |attribute, config| property attribute do key :type, config[:type] end end end _self.each_strong_relation(_self.strong_resource) do |relation_name, relation_config| context.send(:swagger_schema, :"#{strong_resource.name}_#{relation_name}_#{action_name}") do relation_config[:resource].attributes.each_pair do |attribute, config| property attribute do key :type, config[:type] end end end end end |
#each_strong_relation(strong_resource) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 90 def each_strong_relation(strong_resource) strong_resource.relations.each_pair do |relation_name, relation_config| yield relation_name, relation_config each_strong_relation(relation_config[:resource]) do |sub_relation_name, sub_relation_config| yield sub_relation_name, sub_relation_config end end end |
#generate ⇒ Object
123 124 125 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 123 def generate raise 'override me' end |
#generate_request_schema! ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 74 def generate_request_schema! _self = self JsonapiSwaggerHelpers.docs_controller.send(:swagger_schema, request_schema_id) do property _self.strong_resource.name do key :'$ref', :"#{_self.strong_resource.name}_#{_self.action_name}" end _self.each_strong_relation(_self.strong_resource) do |relation_name, _relation_config| property relation_name do key :'$ref', :"#{_self.strong_resource.name}_#{relation_name}_#{_self.action_name}" end end end end |
#initialize(node, controller, description: nil, tags: [], singular: false) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 15 def initialize(node, controller, description: nil, tags: [], singular: false) @node = node @controller = controller @resource = controller._jsonapi_compliable @description = description || default_description @tags = @singular = singular end |
#operation_id ⇒ Object
44 45 46 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 44 def operation_id "#{controller.name.gsub('::', '-')}-#{action_name}" end |
#payload_tags ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 52 def = [:"payload-#{strong_resource.name}_#{action_name}"] strong_resource.relations.each_pair do |relation_name, _relation_config| << :"payload-#{strong_resource.name}_#{relation_name}_#{action_name}" end end |
#request_schema_id ⇒ Object
70 71 72 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 70 def request_schema_id "#{operation_id}_#{action_name}_request" end |
#resource ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 24 def resource @resource = controller._jsonapi_compliable if @resource.is_a?(Hash) @resource = @resource[action_name] end @resource end |
#strong_resource ⇒ Object
66 67 68 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 66 def strong_resource controller._strong_resources[action_name] end |
#util ⇒ Object
32 33 34 |
# File 'lib/jsonapi_swagger_helpers/writeable.rb', line 32 def util JsonapiSwaggerHelpers::Util end |