package controller import ( "<%= config.go_package %>/app" "<%= config.go_package %>/model" ) <%- types.select(&:gen_converter?).each do |type| -%> <%- if type.payload -%> func <%= type.name %>PayloadToModel(src *app.<%= type.payload_name %>) model.<%= type.name %> { if src == nil { return model.<%= type.name %>{} } return model.<%= type.name %>{ <%- comments = [] type.fields_including_id.each do |f| pf = type.payload.fields.detect{|pf| f.name.underscore == pf.name } if pf.nil? comments << "#{f.name} no payload field" elsif f.custom? -%> <%= f.name %>: <%= f.type %>PayloadToModel(src.<%= f.name %>), <%- elsif pf.nullable? -%> <%= f.name %>: <%= f.type.camelize %>PointerTo<%= f.type.camelize %>(src.<%= f.name %>), <%- else -%> <%= f.name %>: src.<%= f.name %>, <%- end -%> <%- end -%> <%- comments.each do |comment| -%> // <%= comment %> <%- end -%> <%- type.payload.field_diffs(type.fields.map{|f| f.name.underscore}).each do |pf| -%> // No model field for payload field "<%= pf.name %>" <%- end -%> } } <%- end -%> <%- if type.media_type -%> func <%= type.name %>ModelToMediaType(src *model.<%= type.name %>) *app.<%= type.media_type_name_for_go %> { if src == nil { return nil } return &app.<%= type.media_type_name_for_go %>{ <%- comments = [] type.fields_including_id.each do |f| mf = type.media_type.fields.detect{|mf| f.name == mf.name.camelize } if mf.nil? comments << "#{f.name} no media type field" elsif f.custom? if f.type_obj && f.type_obj.base -%> <%= mf.goa_name %>: <%= f.type_obj.base %>(src.<%= f.name %>), <%- else -%> <%= mf.goa_name %>: <%= f.type %>ModelToMediaType(&src.<%= f.name %>), <%- end else -%> <%- if mf.golang_type == f.type -%> <%= mf.goa_name %>: <%= mf.nullable? ? '&' : '' %>src.<%= f.name %>, <%- else -%> <%= mf.goa_name %>: <%= f.type.camelize %>To<%= mf.golang_type.camelize %><%= mf.nullable? ? 'Pointer' : '' %>(src.<%= f.name %>), <%- end -%> <%- end -%> <%- end -%> <%- comments.each do |comment| -%> // <%= comment %> <%- end -%> <%- type.media_type.field_diffs(type.fields.map{|f| f.name.underscore}).each do |mf| -%> // No field for media type field "<%= mf.name %>" <%- end -%> } } <%- end -%> <%- end -%>