Method: CrailsQueryGenerator#_join_based_has_many

Defined in:
lib/metarecord/generators/crails/query_generator.rb

#_join_based_has_many(type, name, options) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/metarecord/generators/crails/query_generator.rb', line 44

def _join_based_has_many type, name, options
  tptr = ptr_type type
  list_type = "std::list<#{tptr} >"
  singular_name = get_singular_name name

  outer_name = (name.split(/-|_|\s/).each do |i| i.capitalize! end).join
  query_object = "#{@finalklass.split("::").join}By#{outer_name}"

  _append "#pragma db view pointer(std::shared_ptr) object(\#{type}) object(\#{@finalklass} inner)\nstruct \#{query_object}\n{\n  std::string get_database_name() const { return \#{type}().get_database_name(); }\n  \#{id_type} get_id() const { return self ? self->get_id() : \#{null_id}; }\n  std::shared_ptr<\#{@finalklass}> self;\n  operator \#{@finalklass}() const { return *self; }\n\n  #pragma db view pointer(std::shared_ptr) object(\#{type}) object(\#{@finalklass} inner)\n  struct Count\n  {\n    #pragma db column(\"count(\" + \#{@finalklass}::id + \")\")\n    size_t value;\n  };\n};\n"
end